Avatar billede h_thunbo Nybegynder
31. december 2006 - 03:22 Der er 11 kommentarer og
1 løsning

confirm boks + session + php

Hej eksperter og godt nytår!
Jeg sidder og bøvler lidt med en kundeliste, som jeg har smækket i en database.
I kundelisten vil jeg kunne slette en kunde. Når jeg trykker slet kommer der en "confirm" boks op, hvor man lige skal bekræfte at man vil slette kunden. Så trykker man OK, og så sker der ikke mere, fordi at når man kommer videre fra boksen har man ikke HVEM der skal slettes med.

Tror det er nemmere at forklare med kode:

Først kommer man hertil:

<html>
<head>
<script type="text/javascript" src="slettes.js?q=edit&code=$row[code]">
</script>
</head>
<body>
</body>
</html>


Hvor $row[code] er sat til noget... nu sir vi fx 32

Derefter kommer man så til slettes.js:

if(confirm("Du er ved at slette en kunde fra kundelisten! \n Vil du Fortsætte med at slette?")){location.replace("slet.php?q=edit&code=$row[code]");} else{
    location.replace("kunder.php");};

Men når man trykker OK og skulle blive sendt til:
slet.php?q=edit&code=32

bliver man sendt til:
slet.php?q=edit&code=$row[code]
som ikke er noget...

Mit spørgsmål er så bare, hvordan får jeg min $code med mig over en .js fil? Jeg kan vel ikke på en eller anden måde lave lidt php i filen?



Det er første gang jeg leger med .js og confirm, så lidt pædagoisk hjælp ville være top nice!
Avatar billede madeindk Nybegynder
31. december 2006 - 05:28 #1
På dit link skriver du bare:

<a href="slet.asp?q=edit&code=<? row[code] ?>" onClick="return confirm('Bom bom alert');">Slet</a>

(Er ikke sikker på mit "PHP" er korrekt - er ASP mand)

Godt nytår!
Avatar billede leif Seniormester
31. december 2006 - 09:34 #2
<a href="slet.php?q=edit&code=<?php echo $row[code]; ?>" onClick="return confirm('Bom bom alert');">Slet</a>
Avatar billede h_thunbo Nybegynder
31. december 2006 - 13:04 #3
Ja jeres svar er jo NÆSTEN ens, og der var ingen af dem der lige kørte igennem med "<? ?>", men koden ser nu således ud:

<a href=\"slet.php?q=edit&code=$row[code]\" onClick=\"return confirm('Du er ved at slette en kunde fra listen! Vil du Fortsætte med at slette?');\"><img src='slet.bmp'></a>

Og det er jo selvfølgelig fordi det var i en strimmel php i forvejen, men det kunne i jo ikke vide...

Så har jeg bare et lille ekstra spørgsmål, for når jeg bruger onClick (...) kan jeg ikke finde ud af at sætte et linieskift ind i confirm boksen. Jeg har prøvet med følgende:
\n  <br>  <p>
Når jeg prøver kommer boksen slet ikke frem, og sletter bare, som hvis jeg havde trykket ok.

Er det noget en af jer kan klare?
Avatar billede leif Seniormester
31. december 2006 - 14:33 #4
Mener jeg plejer at bruge:
\n eller \r
Avatar billede h_thunbo Nybegynder
31. december 2006 - 15:13 #5
Jeg kan ikke bruge hverken \n eller \r
Når jeg gør det kommer der ingen boks, den sletter bare uden at spørge.

<a href=\"slet.php?q=edit&code=$row[code]\" onClick=\"return confirm('Du er ved at slette en kunde fra listen! \r Vil du Fortsætte med at slette?');\">
Avatar billede leif Seniormester
31. december 2006 - 15:18 #6
Jeg kører det så som en JS function og der bruger jeg \n uden problemer
Avatar billede mclemens Nybegynder
31. december 2006 - 16:05 #7
Er det mon fordi du glemmer at escape \n så det står
som \\n istedet, når du måske echoer med php via. " ?
Avatar billede h_thunbo Nybegynder
31. december 2006 - 16:38 #8
Leif - Hvordan kører du den som en JS function når det er et link til en anden side som man bare skal bekræfte? Inden jeg brugte denne metode brugte jeg også JS men det var jo bare der jeg ikke kunne få min $code med mig...

mclemens - øhh... måske forstår jeg hvad du skriver, men er ikke sikker? Min kode ser således ud:
print "<tr>
<td><a href=\"slet.php?q=edit&code=$row[code]\" onClick=\"return confirm('Du er ved at slette en kunde fra listen! \n Vil du Fortsætte med at slette?');\"><img src='slet.bmp'></a></td></tr>";
Og når den ser sådan ud, kommer der ingen boks. Fjerner jeg \n kommer den frem... uden linieskift.

Måske skal jeg bare være ligeglad... Eller kan i hjælpe?
Avatar billede mclemens Nybegynder
01. januar 2007 - 01:20 #9
Det jeg mener er at når man skriver

<?php
print"<tr><td><a href=\"slet.php?q=edit&code=$row[code]\" onClick=\"return confirm('Du er ved at slette en kunde fra listen! \n Vil du Fortsætte med at slette?');\"><img src='slet.bmp'></a></td></tr>";
?>

outputter php:

<tr><td><a href="slet.php?q=edit&code=" onClick="return confirm('Du er ved at slette en kunde fra listen!
Vil du Fortsætte med at slette?');"><img src='slet.bmp'></a></td></tr>

Altså teksten med et linjeskift.
Der må _ikke_ være linjeskift i en js kode.

\n er et special tegn i php og skal escapes med \
altså som \\n, hvis man ønsker \n i slutresultatet:

<?php
print"<tr><td><a href=\"slet.php?q=edit&code=$row[code]\" onClick=\"return confirm('Du er ved at slette en kunde fra listen! \\n Vil du Fortsætte med at slette?');\"><img src='slet.bmp'></a></td></tr>";
?>

giver:

<tr><td><a href="slet.php?q=edit&code=" onClick="return confirm('Du er ved at slette en kunde fra listen! \n Vil du Fortsætte med at slette?');"><img src='slet.bmp'></a></td></tr>

... hvis man bruger ' istedet for " har special
tegn ikke sin betydning i php og man kunne skrive:

<?php
print'<tr><td><a href="slet.php?q=edit&code='.$row[code].'" onClick="return confirm(\'Du er ved at slette en kunde fra listen! \n Vil du Fortsætte med at slette?\');"><img src="slet.bmp"></a></td></tr>';
?>

med dette resultat:

<tr><td><a href="slet.php?q=edit&code=" onClick="return confirm('Du er ved at slette en kunde fra listen! \n Vil du Fortsætte med at slette?');"><img src="slet.bmp"></a></td></tr>

...

...

så ved " med echo eller print skal special tegn escapes
- ved output via. ' skal special tegn ikke escapes ...
... håber at det hjalp på problemet og forklaringen :)

Godt nytår forresten.
Avatar billede h_thunbo Nybegynder
01. januar 2007 - 20:06 #10
Den der er bare fjong!
Det virker perfekt!

Ligger du et svar?

Mange tak for hjælpen og forklaringen... jeg TROR jeg forstår...

Godt nytår!
Avatar billede mclemens Nybegynder
01. januar 2007 - 20:39 #11
Ok, her er et svar og et eksempel på det oprindelige...

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta

http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title><meta name="robots"

content="index, follow">

<script type="text/javascript">
function confirmer(code){
  if(confirm("Du er ved at slette en kunde fra kundelisten! \n Vil du Fortsætte med at slette?")){
    window.location="slet.php?q=edit&code="+code;
  }else{
    window.location="kunder.php";
  }
}
</script>

</head><body>
<span onclick="confirmer(123);">123 slet</span><br>
<b onclick="confirmer(321);">321 slet</b><br>
<span onclick="confirmer('abc');">abc slet</span><br>
<b onclick="confirmer('cba');">cba slet</b><br><br>

<?php
echo"<span onclick=\"confirmer(123);\">123 slet</span><br>";
?><br><br>

Hvis javascriptet outputtes via php i ekstern fil så husk at escape \n eksempel:

<?php
echo"function confirmer(code){
  if(confirm(\"Du er ved at slette en kunde fra kundelisten! \\n Vil du Fortsætte med at slette?\")){
    window.location=\"slet.php?q=edit&code=\"+code;
  }else{
    window.location=\"kunder.php\";
  }
}";
?>

</body></html>




Godt nytår til dig også :)
Avatar billede mclemens Nybegynder
01. januar 2007 - 23:31 #12
Og tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester