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)
MYSQL-Abfrage stoppen ? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
MYSQL-Abfrage stoppen ?


 
starr112
15-06-2006, 23:30 
 
Guck guck :)!

Beschäftige mich seit einiger Zeit mit PHP und konnte bis jetzt egtl. jedes Problem irgendwie lösen. Aber nun steh ich vor einem Rätsel ...


<?php
#MYSQL-Abfrage der Squads

for($i=0;$i<mysql_num_rows($result);$i++)
{
$squad=mysql_result($result, $i, 'squad');

$sql3="SELECT userid, nick, squad, nation, email FROM mem_member WHERE squad = '$squad'";
mysql_select_db($dbname, $link);
$result1=mysql_query($sql3, $link);

#HTML
echo mysql_result($result1, 0, 'squad')
#HTML

for($y=0;$y<mysql_num_rows($result1);$y++)
{

#HTML + Ausgabe der Memberdaten

}
}
?>


Oben werden die Squads abgefragt, aus der Tabelle "mem_squads" dann werden die einzelnen Squads in die Variable "Squad" geschrieben und weiter unten wird jeder Member mit wo der Eintrag $squad übereinstimmt aus der Tabelle gelesen und später ausgelistet. Also:

Squad1
Member
Member

Squad2
Member
Member
...

Funktioniert auch soweit alles, nur wenn ich jetzt einen weiteren Squad in die mem_squads hinzufüge, und in der Tabelle der Member aber kein Member dem neuen Squad hinzugefügt wird bekomme ich die Fehlermeldung:
Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 10 in /www/htdocs/w0056b43/php_tests/memberscript3/admin/adminindex.php on line 24

Ist ja klar, durch WHERE squad='$squad' findet er in der Membertabelle nichts!
Wie könnte ich es nun lösen, dass er nur den Squad auflistet, wenn auch wirklich ein Member diesem Squad hinzugefügt wird ? Und wenn kein Member hinzugefügt wurde. dass er nur den Squad auflistet, ohne Member ?

Schonmal Danke für eure Hilfe ;)!
LG

Ps.: Boardregeln gelesen ...! Sollte ich trotzdem was falsch gemacht haben, weisst mich bitte drauf hin ... aus Fehlern lernt man ;)!

Ps2.: Line 24 ist "echo mysql_result($result1, 0, 'squad')"

 
ghostgambler
15-06-2006, 23:38 
 
quick n' dirty
<?php
#MYSQL-Abfrage der Squads

for($i=0;$i<mysql_num_rows($result);$i++)
{
$squad=mysql_result($result, $i, 'squad');

$sql3="SELECT userid, nick, squad, nation, email FROM mem_member WHERE squad = '$squad'";
mysql_select_db($dbname, $link);
$result1=mysql_query($sql3, $link);

if (mysql_num_rows($result1) > 0) {

#HTML
echo mysql_result($result1, 0, 'squad')
#HTML

for($y=0;$y<mysql_num_rows($result1);$y++)
{

#HTML + Ausgabe der Memberdaten

}
} else {
echo $squad . ' mit 0 Einträgen';
}
}
?>

(gewöhn dir mal Einrücken an ^^,)

 
ghostgambler
15-06-2006, 23:41 
 
und btw
sowas
for($i=0;$i<mysql_num_rows($result);$i++)

würde ich durch
while ($row = mysql_fetch_assoc($result))
ersetzen, dürfte wesentliche performanter sein. $i sparst du dir (sofern du es nicht brauchst) und mysql_num_rows wird nicht bei JEDEM Schleifendurchgang erneut ausgeführt...
wenn du $i wirklich brauchst, würde ich entweder
$i = 0; while ($row = mysql_fetch_assoc($result)) {blubb; ++$i}
oder
for ($i = 0, $anzahl = mysql_num_rows($result); $i < $anzahl, ++$i)
nehmen

abgesehen davon finde ich die Lösung mit while einfacher eleganter ^^

 
starr112
15-06-2006, 23:43 
 
Hui, danke für die schnelle Antwort ;)!
Werd ich gleich mal testen ^^

(Das mit dem Einrücken werd ich mir hinter die Löffel schreiben *g*)

LG

//Edit: Klappt einwandfrei, vielen, vielen Dank!


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:03 Uhr.