|
| Javascript med PHP variabel Fra : Jesper Lützen |
Dato : 25-01-07 10:03 |
|
Hejsa,
Om dette spørgsmål hører til her eller i js-gruppen er der
garanteret mange holdninger til, men here goes:
Jeg laver et udtræk fra min mySQL-base, som spytter et antal linier
ud. For hver linie indsætter jeg et billede med et link omkring,
hvortil jeg vil koble en confirm-boks, så der sikres mod "hovsa" klik,
idet der er tale om en slette-funktion.
Koden er som følger pt:
$req = mysql_query("SELECT * FROM ba_menu ORDER BY subsystem,
menuLevel, menuOrder");
while($res=mysql_fetch_array($req)){
extract($res);
[klip - en masse output, der fungerer]
echo "<td class=\"lightBackground\">";
echo "<a href=\"intraAdmin.php?id=12&edit=$menuId\"><img
src=\"design/userEdit3.jpg\" alt=\"Rediger\" /></a>";
echo "<script type=\"text/javascript\">
<!--
function confirmation() {
var answer = confirm(\"Vil du slette menupunktet?\")
if (answer){
window.location = \"intraAdmin.php?id=13&delete=$menuId\";
}
}
//-->
</script>";
echo "<a onclick=\"confirmation()\" ><img
src=\"design/userDelete3.jpg\" alt=\"Slet\" /></a>";
}
echo "</td>\n";
--
Som I kan se, så forsøger jeg at lægge en php-variabel i
JS-funktionen, men idet js jo afvikles lokalt og php på serveren er
resultatet, et der for hver linie ALTID bruges den værdi, der står i
den sidste række fra mySQL-udtrækket.
Logikken kan jeg sagtens følge, men hvordan omgår jeg så den
problemstilling?
Håber en af jer har noget genialt i baghånden ;)
På forhånd tak
Jesper Lützen
| |
Johan Holst Nielsen (25-01-2007)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 25-01-07 12:14 |
|
Jesper Lützen wrote:
> Hejsa,
>
> Om dette spørgsmål hører til her eller i js-gruppen er der
> garanteret mange holdninger til, men here goes:
>
> Jeg laver et udtræk fra min mySQL-base, som spytter et antal linier
> ud. For hver linie indsætter jeg et billede med et link omkring,
> hvortil jeg vil koble en confirm-boks, så der sikres mod "hovsa" klik,
> idet der er tale om en slette-funktion.
>
> Koden er som følger pt:
>
> $req = mysql_query("SELECT * FROM ba_menu ORDER BY subsystem,
> menuLevel, menuOrder");
> while($res=mysql_fetch_array($req)){
> extract($res);
>
> [klip - en masse output, der fungerer]
>
> echo "<td class=\"lightBackground\">";
> echo "<a href=\"intraAdmin.php?id=12&edit=$menuId\"><img
> src=\"design/userEdit3.jpg\" alt=\"Rediger\" /></a>";
> echo "<script type=\"text/javascript\">
> <!--
> function confirmation() {
> var answer = confirm(\"Vil du slette menupunktet?\")
> if (answer){
> window.location = \"intraAdmin.php?id=13&delete=$menuId\";
> }
> }
> //-->
> </script>";
> echo "<a onclick=\"confirmation()\" ><img
> src=\"design/userDelete3.jpg\" alt=\"Slet\" /></a>";
> }
> echo "</td>\n";
>
> --
> Som I kan se, så forsøger jeg at lægge en php-variabel i
> JS-funktionen, men idet js jo afvikles lokalt og php på serveren er
> resultatet, et der for hver linie ALTID bruges den værdi, der står i
> den sidste række fra mySQL-udtrækket.
>
> Logikken kan jeg sagtens følge, men hvordan omgår jeg så den
> problemstilling?
ændre HTML'en til følgende:
?> <!-- afslut php parsing -->
<td class="lightBackground">
<a href="intraAdmin.php?id=12&edit=<?=$menuId?>">
<img src="design/userEdit3.jpg" alt="Rediger" /></a>
<a onclick="confirmation(<?=$menuId?>)">
<img src="design/userDelete3.jpg" alt="Slet" /></a>
Nu har du menu id som et argument i din javascript funktion... så
skriver du følgende JS funktion *udenfor* loop'et
function confirmation(id) {
var answer = confirm("Vil du slette menupunktet?");
if (answer){
window.location = "intraAdmin.php?id=13&delete="+id;
}
}
Mvh
Johan
| |
Jesper Lützen (25-01-2007)
| Kommentar Fra : Jesper Lützen |
Dato : 25-01-07 18:17 |
|
> ændre HTML'en til følgende:
>
> ?> <!-- afslut php parsing -->
> <td class="lightBackground">
> <a href="intraAdmin.php?id=12&edit=<?=$menuId?>">
> <img src="design/userEdit3.jpg" alt="Rediger" /></a>
> <a onclick="confirmation(<?=$menuId?>)">
> <img src="design/userDelete3.jpg" alt="Slet" /></a>
>
> Nu har du menu id som et argument i din javascript funktion... så
> skriver du følgende JS funktion *udenfor* loop'et
>
> function confirmation(id) {
> var answer = confirm("Vil du slette menupunktet?");
> if (answer){
> window.location = "intraAdmin.php?id=13&delete="+id;
> }
>
> }Mvh
> Johan-
Det lyder både logisk og fornuftigt bortset fra, at jeg er nødt til
at skrive den sidste del INDE i loopet, idet scriptet skal bruges for
hver eneste linie. <a... tagget skal omkranse et lille "slet"-billede
som er gentaget for hver linie, og idet samtlige elementer i menuen er
listet op bliver det til en del gange. Jeg *KAN* derfor desværre ikke
skrive den sidste del af JS-funktionen udenfor PHP-loopet. Korrekt?
Venlig hilsen
Jesper
| |
Johan Holst Nielsen (25-01-2007)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 25-01-07 20:42 |
|
Jesper Lützen wrote:
>> ændre HTML'en til følgende:
>>
>> ?> <!-- afslut php parsing -->
>> <td class="lightBackground">
>> <a href="intraAdmin.php?id=12&edit=<?=$menuId?>">
>> <img src="design/userEdit3.jpg" alt="Rediger" /></a>
>> <a onclick="confirmation(<?=$menuId?>)">
>> <img src="design/userDelete3.jpg" alt="Slet" /></a>
>>
>> Nu har du menu id som et argument i din javascript funktion... så
>> skriver du følgende JS funktion *udenfor* loop'et
>>
>> function confirmation(id) {
>> var answer = confirm("Vil du slette menupunktet?");
>> if (answer){
>> window.location = "intraAdmin.php?id=13&delete="+id;
>> }
>>
>> }Mvh
>> Johan-
>
> Det lyder både logisk og fornuftigt bortset fra, at jeg er nødt til
> at skrive den sidste del INDE i loopet, idet scriptet skal bruges for
> hver eneste linie. <a... tagget skal omkranse et lille "slet"-billede
> som er gentaget for hver linie, og idet samtlige elementer i menuen er
> listet op bliver det til en del gange. Jeg *KAN* derfor desværre ikke
> skrive den sidste del af JS-funktionen udenfor PHP-loopet. Korrekt?
Ikke korrekt... du kalder blot confirmation med et argument som er id'et
for deleten - det argument overfører du til din location.href - hvilket
betyder du kun behøves en funktion :)
Smid et link hvis du har problemer - så jeg kan vejlede dig videre...
Mvh
Johan
| |
Jesper Lützen (26-01-2007)
| Kommentar Fra : Jesper Lützen |
Dato : 26-01-07 08:01 |
|
Ikke korrekt... du kalder blot confirmation med et argument som er
id'et
> for deleten - det argument overfører du til din location.href - hvilket
> betyder du kun behøves en funktion :)
>
> Smid et link hvis du har problemer - så jeg kan vejlede dig videre...
Mange tak for det. Desværre er det et intranet jeg sidder og arbejder
på, og jeg kan derfor ikke smide link til siden.
Resultatet er pt følgende:
[kode]
(... noget php)
?>
<script type=\"text/javascript\">
<!--
function confirmation(id) {
var answer = confirm("Vil du slette menupunktet?");
if (answer){
window.location = "intraAdmin.php?id=13&delete="+id;
}
}
//-->
</script>
<?PHP
$req = mysql_query("SELECT * FROM ba_menu ORDER BY subsystem,
menuLevel, menuOrder");
while($res=mysql_fetch_array($req)){
extract($res);
if($menuRestricted==1) $menuRestrictedText="Ja";
else $menuRestrictedText="Nej";
if($menuId!=$edit){
echo " <tr>\n";
echo " <td class=\"lightBackground\">$menuId </td>\n";
echo " <td class=\"lightBackground\">$menuName </td>\n";
echo " <td class=\"lightBackground\">$menuUrl </td>\n";
echo " <td class=\"lightBackground\">$menuLevel </td>\n";
echo " <td class=\"lightBackground\">$menuOrder </td>\n";
echo " <td class=\"lightBackground\">$menuParent </td>\n";
echo " <td class=\"lightBackground\">$menuRestrictedText
</td>\n";
echo " <td class=\"lightBackground\">$subsystem </td>\n";
echo " <td class=\"lightBackground\">";
if($edit!="null" && $edit!=0) echo " ";
else {
echo "<a href=\"intraAdmin.php?id=12&edit=$menuId\"><img
src=\"design/userEdit3.jpg\" alt=\"Rediger\" /></a> ";
echo "<a";
?>onclick="confirmation(<?PHP echo "=$menuId)\"><img
src=\"design/userDelete3.jpg\" alt=\"Slet\" /></a>";
}
echo "</td>\n";
echo " </tr>\n";
} else {
(...) [kode slut]
Nu fejlmelder den da ikke, men desværre er der ikke noget effekt af
koden, forstået på den måde, at der hverken kommer en confirmation
box eller et link ud af et klik på billedet.
Giver det en smule til at kunne hjælpe det sidste (lille) skridt
videre?
På forhånd tak
Jesper
| |
Johan Holst Nielsen (26-01-2007)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 26-01-07 10:49 |
|
Jesper Lützen wrote:
> Nu fejlmelder den da ikke, men desværre er der ikke noget effekt af
> koden, forstået på den måde, at der hverken kommer en confirmation
> box eller et link ud af et klik på billedet.
>
> Giver det en smule til at kunne hjælpe det sidste (lille) skridt
> videre?
onclick="confirmation(<?PHP echo "=$menuId)\">
Skal være
onclick="confirmation(<?=$menuId?>)">
Desuden er der ikke helt styr i din kode på hvornår du er inde og ude af
php fortolkeren - så nogle steder backslasher du "'er udenfor PHP'en
hvilket er unødvendigt...
Ligeledes ser det ud til du ikke "starter" php fortolkeren op igen efter
dit slet knap.
Mvh
JOhan
| |
Jesper Lützen (26-01-2007)
| Kommentar Fra : Jesper Lützen |
Dato : 26-01-07 12:19 |
|
> Skal være
>
> onclick="confirmation(<?=$menuId?>)">
>
> Desuden er der ikke helt styr i din kode på hvornår du er inde og ude af
> php fortolkeren - så nogle steder backslasher du "'er udenfor PHP'en
> hvilket er unødvendigt...
>
> Ligeledes ser det ud til du ikke "starter" php fortolkeren op igen efter
> dit slet knap.
Det ser umiddelbart ud til at jeg har fået PHP-delen til at spille nu,
og resultatet snuppet fra VIS KILDE er nu:
[kode start - foregående kode undladt]
<script type=\"text/javascript\">
<!--
function confirmation(id) {
var answer = confirm("Vil du slette menupunktet?");
if (answer){
window.location = "intraAdmin.php?id=13&delete="+id;
}
}
//-->
</script>
<tr>
<td class="lightBackground">10 </td>
<td class="lightBackground">Forside </td>
<td class="lightBackground">index.php </td>
<td class="lightBackground">0 </td>
<td class="lightBackground">0 </td>
<td class="lightBackground">0 </td>
<td class="lightBackground">Nej </td>
<td class="lightBackground"> </td>
<td class="lightBackground">
<a href="intraAdmin.php?id=12&edit=10"><img
src="design/userEdit3.jpg" alt="Rediger" /></a>
<a onclick="confirmation(10)"><img src="design/userDelete3.jpg"
alt="Slet" /></a>
</td>
</tr>
[kode slut - efterfølgende kode undladt]
Som jeg ser det, smides php-variablen korrekt i confirmation(10), hvor
10-tallet afspejler PHP variablen, men nu er situationen så den, at
JavaScriptet fejler når jeg klikker på billedet... Mangler der
eksempelvis nogle " eller ' et eller andet sted? Ved godt spørgsmålet
er ved at udvikle sig til ren JS, men håber I bærer over med mig ;)
Venlig hilsen
Jesper Lützen
| |
Jesper Lützen (26-01-2007)
| Kommentar Fra : Jesper Lützen |
Dato : 26-01-07 12:24 |
|
> <script type=\"text/javascript\">
.... Lige et \ for meget, som var nok til at spolere funktionen. Nu
spiller det! Tak for hjælpen, Johan!
Venlig hilsen
Jesper
| |
Johan Holst Nielsen (26-01-2007)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 26-01-07 12:48 |
|
Jesper Lützen wrote:
>> <script type=\"text/javascript\">
>
> ... Lige et \ for meget, som var nok til at spolere funktionen. Nu
> spiller det! Tak for hjælpen, Johan!
Det var så lidt :)
Mvh
johan
| |
|
|