Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Abfrage funktioniert nicht! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Abfrage funktioniert nicht!


 
moe152
20-04-2001, 11:50 
 
Hi!

Ich habe mich jetzt so langsam in dieses Metier eingearbeitet und es funktioniert soweit auch alles. nur ein Problem habe ich noch und schaffe es nicht, es zu lösen:
Ich will aus einer Tabelle die Namen der anderen Tabellen auslesen, in denen ich dann wieder eine Abfrage durchführen will. Diese Tabelle heißt tabellen:

$result=MYSQL_QUERY("SELECT * FROM tabellen order by feldname");

for ($j=0; $j < mysql_numrows($result); $j++)
{
$result2=mysql_fetch_row($result2);
$result3=MYSQL_QUERY("SELECT * FROM $result2[0] where name=$string");
$anzahl_treffer= mysql_numrows($result3);

for ($k=0; $j < $anzahl_treffer; $k++)
{
$result4=mysql_fetch_row($result3);
echo "$result4[1]<br>";
}
}

wenn ich das so ausprobiere, wird mir immer in der Zeile "for ($k=0; $j < $anzahl_treffer; $k++)" ein Fehler zurückgegeben: Warning: Supplied argument is not a valid MySQL result resource

Wo liegt der Fehler?

 
Arni
20-04-2001, 13:18 
 
Probiere es doch mal so
Es sollte eigentlich gehen

$result=MYSQL_QUERY("SELECT * FROM tabellen order by feldname");

$num = mysql_num_rows($result);


while(($result2 = mysql_fetch_row($result)))
{
$result3=MYSQL_QUERY("SELECT * FROM $result2[0] where name=$string");
$anzahl_treffer= mysql_numrows($result3);

}

Gruß
Arni

 
Titus
20-04-2001, 14:59 
 
Wenn du aus irgendeinem Grunde einen Fehler in der Query hast, wirst du immer die dir bekannte Fehlermeldung um die Ohren gehauen bekommen und bist genauso schlau wie vorher.

Außerdem benutzt du in der inneren Schleife als Bedingung $j statt $k (also den Schleifenindex der äußeren Schleife).

Tipps:
1) frag ab, ob deine Query Erfolg hatte und gib die Fehlermeldung von mysql aus, wenn nicht.
2) benutze in den fetch-Schleifen keine Zähler sondern behandle einfach Ergebnisse, solange welche kommen.

ergo:

function myquery ($query) {
$result = mysql_query ($query);
if (!$result)
echo '<br><b>', $query, ': ', mysql_error(), '</b><br>';
return $result;
}

$result = myquery("SELECT * FROM tabellen order by feldname");
if ($result) while ($result2 = mysql_fetch_row($result))
{
$result2 = mysql_fetch_row($result2);
$result3 = mysql_query("SELECT * FROM $result2[0] where name=$string");
if ($result3) while ($result4 = mysql_fetch_row($result3))
{
echo "$result4[1]<br>";
}
}

 
BrainBug
20-04-2001, 16:21 
 
wahrscheinlich wird das Array im Query nicht verkraftet. Pack den Query erstmal in eine Variable und dann diese in den Query:


$anfrage="select * from result[$i] ....";
$result3=mysql_query($anfrage);


hat bei mir schon sehr oft geholfen. V.a. bei zweidimensionalen Arrays klappt's meist nur so. Keine Ahnung warum, scheint aber so zu sein...

 
moe152
21-04-2001, 19:30 
 
1000 dank, jetzt funktioniert es soweit.

was ich jetzt noch am liebsten hätte, wäre, dass mehrere Spalten abgefragt werden, in meinem Fall also nicht nur die Spalte "Namen" sondern z.B. auch noch "Beschreibung" oder so.

Infwiefern muss ich dann die Abfrage ""SELECT * FROM $ort[0] where name like '%$string%'" verändern?

Gruß
moe152

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:45 Uhr.