Problem mit while-Schleife

H

HolyIdle

hallo leute,

ich hoffe ihr könnt mir bei meinem problem helfen. ich habe folgendes script auf meinem lokalen apache mit php4 und mysql laufen und es funktioniert problemlos. wenn ich es aber bei meinem provider hochlade, meckert er immer die while-schleifen an (oder eher die zeilennummern der beiden). hat jemand einen tip woran es liegt, bzw. wie man es umprogrammieren könnte (bin in php nicht sehr bewandert und habe ein tutorial-script umgeschrieben).

greetz and thx
holyidle

script:
<?
$db = mysql_connect("localhost", "xxxxxxx","xxxxxxxxx");
mysql_select_db("test",$db);

if ($id)
{
$sql = "select * from member_full where id=$id";
$result = mysql_query($sql,$db);
$myrow = mysql_fetch_array($result);

echo $myrow["nick"] ;
echo $myrow["name"];
.......
}

else
{

$result = mysql_query("select * from member_full",$db);
while ($myrow = mysql_fetch_array($result)) // 1. problemfall
{
printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["id"], $myrow["nick"], $myrow["name"]);
printf("%s",$myrow[2]);
....
}

$db2 = mysql_connect("localhost","XXXXXX","XXXXXXX");
mysql_select_db("test",$db2);
$result2 = mysql_query("SELECT * FROM member_trial",$db2);
while ($myrow2 = mysql_fetch_row($result2)) //2. Problemfall !!!
{
printf("%s",$myrow2[1]);
.....
}
}
?>
 
hi ho , bissel komisch kommt mir bei dir folgende zeile vor der whileschleife vor :

$result2 = mysql_query("SELECT * FROM member_trial",$db2);

machs mal so

$result2 = mysql_query("SELECT * FROM member_trial");

!!!!!


dann wirds wahrscheinlich gehen !
 
while ($myrow = mysql_fetch_array($result)) // 1. problemfall
{
printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["id"], $myrow["nick"], $myrow["name"]);
printf("%s",$myrow[2]);
....
}

Versuche es mal so:

PHP:
echo "<a href="$PHP_SELF?id=$myrow["id"]">$myrow["nick] $myrow["name"]"
}

printf("%s",$myrow[2]);

Du kannst keinen indizierten Wert aus einem assoziativen Array auslesen. Entweder du arbeitest mit mysql_fetch_array() (in dem Fall mit myrow["name"]) oder mit mysql_fetch_row() (in dem Fall mit myrow[2])

Sonst müßte es gehen!
 
Original geschrieben von murdi
hi ho , bissel komisch kommt mir bei dir folgende zeile vor der whileschleife vor :

$result2 = mysql_query("SELECT * FROM member_trial",$db2);

machs mal so

$result2 = mysql_query("SELECT * FROM member_trial");
!!!!!
dann wirds wahrscheinlich gehen !

Hallo murdi,

das $db2 stimmt schon, er ruft ja eine neue Verbindung auf:
$db2 = mysql_connect("localhost","XXXXXX","XXXXXXX");
 
mhhh , wieso neu ??

die verbindung steht doch bereits , wurde doch gleich am anfang aufgebaut , datenbank ausgewählt etc.

man muss nich bei jeder anfrage eine neue verbindung aufbauen !
das mach ich in meinen codes einmal und dann steht die bis zum ende ( mysql_close( verbindung ) )

oder täusche ich mich da ?
 
Nein, da täuscht du dich nicht.

Ich habe mir für solche Zwecke eine Klasse geschrieben und wenn ich mehrere Verbindungen benötige dann erzeuge ich einfach ein neues Objekt dieser Klasse.

So wie er es gemacht hat ist es nicht falsch und bei kleineren Projekt auch akzeptabel. Allerdings wird das zum Performance Problem wenn du große Datenmengen verarbeiten musst.
 
bins nochma :)

das mit den klassen interessiert mich jetzte ! :)

wie genau haste das gemacht und welche positiven aspekte brnigt das mit sich ??
 
Du must dir das Bildlich vorstellen:

Klasse = Schrank
Methode = Schublade

Je nachdem was du brauchst, öffnest du eine Schublade!

Wenn du z.B. eine Famlie hast (Website) mit mehreren Familienmitglieder, können die im Endeffekt über diese Klasse alle ihren eigenen Schrank haben.

Es ist nicht so auf die schnell erklärt :D
 

Neue Beiträge

Zurück