php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
falsche id durch java script


 
scripter84
19-08-2003, 18:44 
 
hallo zusammen.... :)

und zwar hab ich eine anzeigeliste aller angemeldeter user (aus DB), und nun kann man wenn man möchte auf dessen beschreibung klicken und es öffnet sich ein neues fenster mit window.open,

das problem ist: es wird immer die gleiche id (die letzte in der DB) weitergegeben (bei mir die 4). was mache ich verkehrt?? :confused:

hatte vorher eine normale übergabe an die nächste seite ohne neues fenster und da gings...also liegts am java script oder?

mein stück text:


$sql = "SELECT id, nname, stern, palter, geschl, land FROM person";

if ($result=mysql_query($sql))
{
$row=mysql_num_rows($result);
$field=mysql_num_fields($result);
if ($row>0)
{
echo "<Table border=1>";

for ($i=0;$i<$row;$i++)
{
$erg=mysql_fetch_array($result);
echo "<tr>";
for ($K=1;$K<$field;$K++)
{
echo "<td>".$erg[$K]."</td>";
$bid=$erg[0];
}

echo '<script language="javascript">
function beschreibung()
{
window.open("http://localhost/proj/beschr.php?bid='.$bid.'&zahl='.$zahl.'&zahlb=3","","width=500,height=700,location=yes");
}
</script>';

echo "<td>".$bid."<a href=\"javascript:beschreibung();\">Beschreibung</a></td>";
echo "</tr>";

}
}
echo "</table>";

}
else
echo "FEHLER.";
}
else
{
echo "Datenbankaufruf fehlgeschlagen";
}

soo.... woran kann es liegen, dass immer die letzte id weitergegeben wird?

:dontknow:

 
Wurzel
19-08-2003, 18:52 
 
... weil die $bid in der 2 forschleife immer bis zum ende derselben durchläuft :goth:

 
DSB
19-08-2003, 18:59 
 
Wenn ich es richtig sehe, erzeugst Du in der Schleife die Funktion 4 mal.
Javascript nimmt dann beim Aufruf einfach die letzte (ignoriert die 3 darüber wohl) und die wurde ja mit ID 4 generiert.

Nimm die Funktion aus der Schleife raus und übergebe die notwendigen Daten als Parameter ( beschreibung(id)).

 
scripter84
19-08-2003, 19:03 
 
ja danke. :)

ich versteh das schon aber wie mache ich es dann richtig, komme mit eurer lösung nur zu fehlern.?:confused:

 
Wurzel
19-08-2003, 19:17 
 
hmmm ... irgendwie ist das latent schrottig, was du dir da zusammengeschustert hast.

- definier am anfang die js-funktion einmal => ausserhalb von while/for

echo '<script language="javascript">
function beschreibung(id)
{
window.open("http://localhost/proj/beschr.php?bid=" + id + "'&zahl='.$zahl.'&zahlb=3","","width=500,height=700,location=yes");
}</script>';- dann erzeugst du deine tabelle in einer while schleife (while($row=mysql_fetch_array(Ergebniskennung))
- in der ausgabe legst du auf den link => onclick="beschreibung(dieIDdieDuBrauchst)"
- tabelle zu und fertig

tipp: lass das mal lieber, aus faulheit einen unübersichtlichen code zu erzeugen (siehe 2 for-schleife).

 
DSB
19-08-2003, 19:19 
 
Edit: ups, da war Wurzel schneller.


<?php
$sql = "SELECT id, nname, stern, palter, geschl, land FROM person";

if ($result=mysql_query($sql))
{

$row=mysql_num_rows($result);
$field=mysql_num_fields($result);
if ($row>0)
{
echo "<Table border=1>";
echo '<script language="javascript">
function beschreibung(bid,zahl)
{
window.open("http://localhost/proj/beschr.php?bid='+bid+'&zahl='+zahl+'&zahlb=3","","width=500,height=700,location=yes");
}
</script>';

for ($i=0;$i<$row;$i++)
{
$erg=mysql_fetch_array($result);
echo "<tr>";
for ($K=1;$K<$field;$K++)
{
echo "<td>".$erg[$K]."</td>";
$bid=$erg[0];
}


echo "<td>".$bid."<a href=\"java script:beschreibung($bid,$zahl);\">Beschreibung</a></td>";
echo "</tr>";

}
}
echo "</table>";

}
else
echo "FEHLER.";
}
else
{
echo "Datenbankaufruf fehlgeschlagen";
}
?>

 
scripter84
20-08-2003, 11:23 
 
hy, danke für eure schnelle hilfe, :)

aber ich hab das mal so kopiert aber der bringt in der zeile von window.open(...) immer die meldung:

Notice: Use of undefined constant id - assumed 'id' in d:\www\proj\alle_anzeigen.php on line 73

der kennt irgendwie die constante "id" nich oder?

ich habe jetzt mal die ganzen variablen in der window.open-zeile ("...?bid='+id+'&zahl='+$zahl+'&zahlb=3...") rausgenommen und da war natürlich der fehler weg und da hat es funzt,
aber er zeigt zwar die richtigen zahlen an.....das problem is doch aber das ich auf der nächsten seite "$bid=..." verarbeitet wird und nich ...(3,31) und dadurch fragt er auf der nächsten seite nach den variablen $bid und $zahl....wie kann ich dem browser verklickern, dass das die zahlen in der klammer sind?

hilfe nötig...? :dontknow:

 
Wurzel
20-08-2003, 11:33 
 
echo '<script language="javascript">
function beschreibung(bid,zahl)
{
window.open("http://localhost/proj/beschr.php?bid=" + bid + "&zahl=" + zahl + "&zahlb=3","","width=500,height=700,location=yes");
}
</script>';

dein "parse error" ist jetzt weg ... schau mal was nun passiert.

 
scripter84
20-08-2003, 11:37 
 
ups, hab ich wohl zu spät geändert, ich probiers nochmal schnell... :D

 
scripter84
20-08-2003, 11:48 
 
ich danke dir recht ..... ;)

funzt supi...:D thx


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:24 Uhr.