php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.03.2007, 15:47  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard mysql_query Grundsatzproblem

Hallo,

ich habe folgenden Code:
PHP-Code:
$sqlservice = mysql_query(sprintf("SELECT * FROM `%s_anmservice`",$prefix));

<ul><?php while($forumservice mysql_fetch_array($sqlservice)){
echo(
"[*]<input type=\"radio\" name=\"service1\" value=\"$forumservice[serviceid]\">$forumservice[service]");
}
?>[/list]
Nun will ich die gleiche Liste nochmal anzeigen lassen, also dachte ich, ich erweitere das ganze und mache:
PHP-Code:
$sqlservice = mysql_query(sprintf("SELECT * FROM `%s_anmservice`",$prefix));

<ul><?php while($forumservice mysql_fetch_array($sqlservice)){
echo(
"[*]<input type=\"radio\" name=\"service1\" value=\"$forumservice[serviceid]\">$forumservice[service]");
}
?>[/list]
<ul><?php while($forumservice mysql_fetch_array($sqlservice)){
echo(
"[*]<input type=\"radio\" name=\"service2\" value=\"$forumservice[serviceid]\">$forumservice[service]");
}
?>[/list]
Aber leider klappt das nicht. Scheinbar habe ich ein Verständnisproblem.
Steht in $sqlservice nicht immer noch das Ergebnis aus der MySQL-Anfrage und kann ich es nicht noch für ein weiteres mysql_fetch_array benutzen?? *verwirrt bin*

Gruß Marcel
maeck ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.03.2007, 15:51  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

ja und nein. Die Daten sind noch vorhanden. Du musst sie wieder zurückspulen, um sie nocheinmal verwenden zu können.
http://de2.php.net/manual/de/functio...-data-seek.php
Schnulli ist offline  
Alt 28.03.2007, 15:52  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

wenn du die variable mal direkt ausgibts, siehst du, dass es sich um eine ressource handelt. dh. jeder aufruf von mysql_fetch_array () etc. liest aus einer vom datenbank-management verwalteten datenmenge eine zeile aus der menge mit dieser ressource aus. anschliesend wird der datensatz aus der menge entfernt. nach dem ende der datensätz woird false zurückgegeben. nur deshalb funktioniert auch das auch von dir genutzte while () statement.

EDIT
ups schnulli war schneller und hat auch noch auf etwas hingewiesen, was ich noch gar nicht wußte..
nikosch ist offline  
Alt 28.03.2007, 16:04  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

PHP-Code:
<?php $liste="<ul>"?>
<ul><?php while($forumservice mysql_fetch_array($sqlservice)){ 
$temp="[*]<input type=\"radio\" name=\"service1\" value=\"$forumservice[serviceid]\">$forumservice[service]"
$liste.=$temp;
echo 
$temp;
}
?>[/list]
<?php echo $liste."[/list]"?>
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 28.03.2007, 16:23  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Schnulli
ja und nein. Die Daten sind noch vorhanden. Du musst sie wieder zurückspulen, um sie nocheinmal verwenden zu können.
Ja genial, das wusste ich nicht. Danke, Schnulli. Also mache ich einfach
PHP-Code:
$sqlservice = mysql_query(sprintf("SELECT * FROM `%s_anmservice`",$prefix));

<ul><?php while($forumservice mysql_fetch_array($sqlservice)){
echo(
"[*]<input type=\"radio\" name=\"service1\" value=\"$forumservice[serviceid]\">$forumservice[service]");
}
?>[/list]
<ul><?php mysql_data_seek($sqlservice0); 
while(
$forumservice mysql_fetch_array($sqlservice)){
echo(
"[*]<input type=\"radio\" name=\"service2\" value=\"$forumservice[serviceid]\">$forumservice[service]");
}
?>[/list]
@Slava: Ich verstehe nicht ganz, wie mir dein veränderter Code helfen soll?
maeck ist offline  
Alt 28.03.2007, 16:42  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Slavas Code macht genau das gleiche ..

Er "puffert" (wenn man das hier so sagen darf) die Ausgabe in einer Variablen und gibt sie dann aus.

Also das gleiche .. und sogar besser als das was du da schreibst ..

musst halt noch eine "laufvariable" einbauen die dir deinen Namen um 1 erhöht.
z.B. mit $i++;

M3g4Star ist offline  
Alt 28.03.2007, 16:45  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

[quote="maeck
@Slava: Ich verstehe nicht ganz, wie mir dein veränderter Code helfen soll?[/quote]
das ist sehr schwer zu verstehen, da mann es verstehen muss.

jetzt habe ich bemerkt, dass du bei erster liste
name=\"service1\"
und bei zweiter
name=\"service2\" hast.
ist auch kein problem, wenn man
statt
<?php echo $liste."[/list]"; ?>
einfach
<?php echo str_replace("name=\"service1\"","name=\"service2\" ",$liste)."[/list]"; ?>
machst.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 28.03.2007, 16:58  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

Zitat:
Zitat von M3g4Star
musst halt noch eine "laufvariable" einbauen die dir deinen Namen um 1 erhöht.
z.B. mit $i++;
das kommt noch auch dazu
die nächte Frage wird "wie kann ich die Variablen aus einander halten?"
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 28.03.2007, 17:26  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

ich versteh ehrlich gesagt nicht was ihr meint.
Mit dem was ich geschrieben habe, erreiche ich doch genau was ich will. Da ich zwei Namen vergeben habe, brauche ich doch auch keine Variable hochzählen lassen.
Oder macht man das so nicht??
maeck ist offline  
Alt 28.03.2007, 18:20  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Wieso überhaupt zwei Schleifen?!? Halte ich für unnötig aufwendig ^^

Edit: Pwnd! Seh grad, dass Slava genau das schon vorgeschlagen hat ^^ Ja, wenn man Quelltexte nur überfliegt, passiert sowas schon mal
Man macht es nicht, da du quasi zwei identische Instruktionen ausführst. Zwei mal die selbe Liste durchgehen ist einmal unschön und zweitens auch ein gutes Stück aufwendiger, als wenn man sie einmal durchgeht und zwei Sachen damit macht. Lass deine Liste mal nen bisschen wachsen

PHP-Code:
$sqlservice = mysql_query(sprintf("SELECT * FROM `%s_anmservice`",$prefix));
$service2 = '';
<ul><?php while($forumservice mysql_fetch_array($sqlservice)){
echo 
"[*]<input type=\"radio\" name=\"service1\" value=\"$forumservice[serviceid]\">$forumservice[service]";
$service2 .= "[*]<input type=\"radio\" name=\"service2\" value=\"$forumservice[serviceid]\">$forumservice[service]";
}
?>[/list]
<ul><?php
echo $service2;
?>[/list]
Achtung: echo ist keine Funktion, sondern ein Sprachkonstrukt, weswegen du auf die Klammen verzichten solltest.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:44 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.