Query läuft ins Endlose

spikaner

Quereinsteiger @ php
Ich bastlle gerade an einen Script welches aus Tabelle A id und skill ausliest,
nun soll aus tabelle 2 der Name zur id ausgelesen werden und da läuft das Script dann ins endlose, wo liegt mein Denkfehler
PHP:
$sql = "SELECT 
    plrid,
    skill
FROM
    ps_plr
ORDER BY 
    skill desc
LIMIT 0, 10";
$result = mysql_query ($sql);
$i =0;
while($data = mysql_fetch_array($result)){
$id[$i] = $data['plrid'];
$skill[$i] = $data['skill'];
$i++;
}
print_r($id);
echo "<br>";
print_r($skill); // bis hier funktioniert es einwandfrei
$y=0;
$sql1 = "SELECT 
    name
FROM
    ps_plr_ids_name
WHERE
    plrid like '".$id[$y]."'";
while($name = mysql_query ($sql1)){
    $daten = mysql_fetch_array($name);
    $namen[$y] = $daten['name'];
    $y++;
}
echo "<br>";
print_r($namen);
mfg Spikaner
 
Hab nur mal kurz rübergeschaut, bin aber der Meinung, daß Deine while-Schleife der Grund ist!
Du erhöhst zwar den Wert von $y jedesmal, aber die Bedingung verwendet die Variable $sql1, die permanent mit einem $y=0 arbeitet!
Denn $sql1 wird ja nicht in der Schleife neu gesetzt...

HOPPLA :rolleyes:
Beim Öffnen beider Augen fällt natürlich auch auf, daß $name in der while-Bedingung wahrscheinlich niemals den Wert erhält, den Du gerne hättest!
Denn die Funktion mysql_query() gibt ein int zurück. Du nimmst aber fälschlicherweise an, daß der Name des Spielers zurückgegeben wird...
Sieht jedenfalls so aus für mich.
;)
 
Auch net wirklich also das 1.query liefert mir ein array zurück
Code:
Array ( [0] => 296 [1] => 882 [2] => 602 [3] => 298 [4] => 398 [5] => 478 [6] => 734 [7] => 558 [8] => 744 [9] => 330 )
so jetzt will genau die Namen der User id´s aus der anderen Tabelle haben aber ich bekomme es nicht gebacken


mfg Spikaner

P.S. und eben auch die Namen in der selben reihenfolge wie im 1. query haben
 
Zuletzt bearbeitet:
Dat is aber doch das Array $daten und nicht $name

Fakt ist, die Schleifenbedingung sieht ausgeschrieben so aus:
PHP:
while( $name = mysql_query("SELECT name FROM ps_plr_ids_name WHERE plrid like '".$id[$y]."') )
Hab jetzt nicht auf die Syntax geachtet, aber so wird wenigstens das $y auch in der Bedingung erhöht!
Du hast die SQL-Anweisung vor der Schleife aufgebaut, wobei sich praktisch folgendes ergibt:
PHP:
while( $name = mysql_query("SELECT name FROM ps_plr_ids_name WHERE plrid like '0815') )
Wobei ich jetzt einfach mal für $id[0]=0815 annehme.
In deiner Schleifenbedingung wird aber die LIKE-Klausel IMMER wieder auf 0815 prüfen! Und daher läuft sie endlos!
 
Ja nur nen
PHP:
$sql1 = "SELECT 
    name
FROM
    ps_plr_ids_name
WHERE
    plrid = '".$id[$y]."'";

führt auch ins nichts.., also muß an der while liegen glaub ich

mfg Spikaner
 
spikaner hat gesagt.:
also muß an der while liegen glaub ich
Genau das versuche ich Dir die ganze Zeit zu erklären!

Schau Dir doch mal Deinen Code genau an:
PHP:
// Hier setzt Du $y auf 0!
$y=0;

// Hier erstellst Du die SQL-Anweisung und übergibst sie der Variablen $sql1
$sql1 = "SELECT name FROM ps_plr_ids_name WHERE plrid like '".$id[$y]."'";

// Da $y=0 ist (s. oben):
$sql1 = "SELECT name FROM ps_plr_ids_name WHERE plrid like '".$id[0]."'";

// Und jetzt fängt hier Deine Schleife an
while($name = mysql_query ($sql1)){
    $daten = mysql_fetch_array($name);
    $namen[$y] = $daten['name'];
    $y++;
    // $y wird zwar erhöht, aber das ändert nichts daran,
    // daß in $sql1 mit $y=0 gearbeitet wird und dort niemals $y++; erfolgt 
}
Verstehste?!
Du mußt schon in $sql1 auch das $y erhöhen, damit's klappt!
 
Habe jetzt nochmal herumgetüftelt und bekomme nun ein
Code:
Array ( ) 1Array ( ) 1Array ( [0] => 296 [1] => 882 [2] => 602 [3] => 298 [4] => 398 [5] => 478 [6] => 734 [7] => 558 [8] => 744 [9] => 330 )
Array ( [0] => 246.82 [1] => 192.58 [2] => 180.20 [3] => 178.90 [4] => 177.46 [5] => 162.00 [6] => 158.82 [7] => 157.05 [8] => 157.00 [9] => 154.10 )
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/psychoreader/index.php on line 35

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/psychoreader/index.php on line 35

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/psychoreader/index.php on line 35

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/psychoreader/index.php on line 35

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/psychoreader/index.php on line 35

Array ( [0] => [2] => [4] => [6] => [8] => )
zurück , folgender code
PHP:
$sql = "SELECT 
    plrid,
    skill
FROM
    ps_plr
ORDER BY 
    skill desc
LIMIT 0, 10";
$result = mysql_query ($sql);
$i =0;
while($data = mysql_fetch_array($result)){
$id[$i] = $data['plrid'];
$skill[$i] = $data['skill'];
$i++;
}
print_r($id);
echo "<br>";
print_r($skill);
for($y=0; $y <= 9; $y++){
    $daten = mysql_fetch_array($id[$y]);  // zeile 35
    $sql1 = "SELECT 
        name
    FROM
        ps_plr_ids_name
    WHERE
    plrid like '".$id[$y]."'";
    $name = mysql_query ($sql1);
    $namen[$y] = $daten['name'];
  //  $y++;    habe ich eben gesehen ist auch zu viel
}
echo "<br>";
print_r($namen);

mfg Spikaner

Die Schleife ist schon mal nicht mehr endlos ;)
 
Zuletzt bearbeitet:
Ist ja jetzt mit der for auch gegeben da ich alles in die schleife gepackt habe aber der Fehler stellt mich vor nen großes ?


Schonmal was von einem JOIN gehoert?

Nee das erste mal das ich das aufschnappe.. und das englische Wiki naja.. (is gerade wie böhmische dörfer für mich..)

wenn ich die Lösung sehen würde würde es "knack" machen aber gerade eben bin ich blind.

mfg Spikaner
 
Zurück