mysql_fetch_row () HILFE

sui

Grünschnabel
Hi!

Ja, ich habe tutorials und manuals gelesen, aber entweder bin ich blind oder ich habs nicht verstanden.

ich habe eine Funktion , in der ich durch jede Zeile zweier Datensätze gehe und aus dem ergebenis später eine Tabelle bauen will.

<?php
function existenz_ermitteln ($res1, $res2){
$num1 = mysql_num_rows($res1);
$num2 = mysql_num_rows($res2);
$count=0;
for($t=0; $t<$num1; $t++){
$butter1=mysql_fetch_row($res1);
for($g=0; $g<$num2; $g++){
$butter2=mysql_fetch_row($res2);
if ($butter1[0]==$butter2[0]){
$count=$count+1;
}
}
}
$existenz=$num1+$num2-$count;
return $existenz;
}
?>
Mein Problem ist, dass die äußere schleife einmal durch den ganzen Datensätz durchgeht und Werte zurückgibt. Die innere Schleife geht auch einmal durch den 2. Datensatz durch, allerdings wird beim 2. aufruf der zweiten Schleife der Datensatz nicht nochmal von vorne durchgegangen und die entsprechenden Ergebnisse zurückgegeben, sondern es wird nur noch FALSE zurückgegeben.

Also brauche ich eigentlich eine Funktion, die den Zeiger von mysql_fetch_row() wieder an den anfang des Datensatzes setzt, damit ich auch Ergebnisse zurückbekomme.

ICh hoffe, ich habe euch nicht zu sehr verwirrt und es kann mir jemand helfen.

Dankeschön
sui
 
Versuchs mal so, also meiner Meinung nach soltle das gehen:

PHP:
<?php
function existenz_ermitteln ($res1, $res2){
$num1 = mysql_num_rows($res1);
$num2 = mysql_num_rows($res2);
$count=0;
while ($butter1=mysql_fetch_row($res1) {
while ($butter2=mysql_fetch_row($res2) {
if ($butter1[0]==$butter2[0]){
$count=$count+1;
}
}
}
$existenz=$num1+$num2-$count;
return $existenz;
}
?>

Das müsste gehen ;-)
 
nicht geklappt

mmmh, vielen Dank für deine Antwort, aber das hat nicht geklappt. Ich habe das ganze mit echos versehen, damit ich sehe, ob da ergebnisse im 2. Durchlauf zurückgegeben werden oder nicht. Leider ist es die gleich Misere wie bei den for-schleifen:

<?php
function existenz_ermitteln ($res1, $res2){
$num1 = mysql_num_rows($res1);
$num2 = mysql_num_rows($res2);
$count=0;
while ($butter1=mysql_fetch_row($res1)) {
echo "außen";
while ($butter2=mysql_fetch_row($res2)) {
echo "<p>innen".$butter2[1];
if ($butter1[0]==$butter2[0]){
$count=$count+1;
}
}
}
$existenz=$num1+$num2-$count;
return $existenz;
}
?>

und die ausgabe der echos war dann :

außen
innen1.0000

innen3.0000

innen3.0000

innen2.0000

innen2.0000

innen6.0000

innen2.0185außenaußenaußenaußen

Also war bei dem 2. Durchlauf der innern schleife keine Daten mehr vorhanden und es wurde FALSE zurückgegeben, statt dass der zeige wieder auf den Anfang springt und die vorhandenen Daten durchgeht.

Noch eine andere Idee?

Grüße
sui
 
Also brauche ich eigentlich eine Funktion, die den Zeiger von mysql_fetch_row() wieder an den anfang des Datensatzes setzt, damit ich auch Ergebnisse zurückbekomme.

Diese Function ist die mysql_query :-)

sprich du musst vor der zweiten Schleife den Datensatz per Query
neu abfragen dann geht es
 
Zurück