while() in einer while() Schleife???

Begonnen von _Gerry_, 12 April 2004, 02:44:56

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

_Gerry_

Hallo Leute!

Hab mal ne Frage, ist es den nicht möglich innerhalp einer while Schleife nochmals ne while Schleife zu starten???

Also mein Code sieht so aus (ein kleiner Bruchteil, aber eben das wesendliche):

 
$results = sql_query("SELECT * FROM ${user_prefix}_user_pro_frage WHERE id='".$id."' ORDER by anor");
$ergeb = sql_fetch_array($results);

$a = 0;
$dcolor_A = $bgcolor1;
$dcolor_B = $bgcolor2;
echo"<table border='0' cellspacing='0' cellpadding='2'>";
while($ergeb = sql_fetch_array($results)) {
  $dcolor = ($a == 0 ? $dcolor_A : $dcolor_B);

if ($ergeb['funktion'] == 1) {
$frage="".$ergeb["frage"]."";
$input="<input type='TEXT' name='uantwort' size='30'>";
$input1=" ";
$input2=" ";
  }
 
if ($ergeb["funktion"] == 2) {
$result1 = sql_query("SELECT * FROM ${user_prefix}_user_pro_antworten WHERE fid='".$ergeb["fid"]."'"); // User
$frage="".$ergeb["frage"]."";
while($ergeb1 = sql_fetch_array($result1)) {
$input="<input type='radio' name='uantwort'>".$ergeb1["antwort"]."";
  }
$input1=" ";
$input2=" ";
   }

echo"<tr><td valign='top' bgcolor='$dcolor'>".$frage.":</td>";
echo"<td bgcolor='$dcolor'> ".$input1." ".$input."".$input2."</td></tr>";

 $a = ($dcolor == $dcolor_A ? 1 : 0);
 }

echo"</table>";


Keine Ahnung, aber es sollten bei der funktion==2 mehrere Antwortmöglichkeiten kommen, jedoch wird immer nur die letzte angezeigt!
 :wall:  :wall:

Hoffe es kann mir wiedermal jemand helfen!
 :D

[Editiert am 12/4/2004 von _Gerry_]
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

BowlingX

um 4 Uhr morgens kann ich dir eben nur sagen das mehrere verschachtelte schleifen durchaus möglich sind..du kannst auch 100 while schleifen ineinander packen wenns dir spass macht :D...
Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!

jubilee

Hmmm .....
Wertet while auch arrays aus ?? Wäre mir neu.
Du solltest anstatt
 
Zitatwhile($ergeb = sql_fetch_array($results))
das besser so schreiben
 
Zitatwhile(list($variable1, $variable2 ...etc)=sql_fetch_row($results));
 
While untersucht von sich aus nicht ein array und schaut wieviele Elemente darin sind.
MfG
jubilee

jubilee

Nachtrag :
Wenn das Ergebnis schon in einem array steht, dann kann man das auch
folgendermassen auflösen
 
Zitatwhile (list ($key, $val) = each ($Array));
oder die etwas schnellere Variante
 
Zitatforeach ($Array as $k => $v);

MfG
jubilee

_Gerry_

Man ich hasse die ostern!
War wohl doch etwas zuviel Eierlikör!  :redhead:

Steh zur Zeit total am Schlauch, aber werde es mal versuchen! ;)
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

_Gerry_

Okay, soweit sogut!
Nun werden die Antwortmöglichkeiten so angegeben wie ich es wollte,
doch es besteht weiterhin ein Problem.  :wall:

Ich mache die Abfrage nun so:

 
$results = sql_query("SELECT fid,frage,funktion FROM ${user_prefix}_user_pro_frage WHERE id='".$id."' ORDER by anor");

echo"<table width='100%' border='1'>";
while(list($fid, $frage, $funktion)=sql_fetch_array($results)){
$results1 = sql_query("SELECT * FROM ${user_prefix}_user_pro_antworten WHERE fid='".$fid."'");
echo"<tr><td valign='top'><b>$frage:</b></td><td valign='top'>";

if ($funktion ==1){
echo"<input type='TEXT' name='uantwort' size='30'>";
}

if ($funktion ==2){
while ($data1 = sql_fetch_array($results1)){
echo"<input type='radio' name='uantwort' value='".$data1["antwort"]."'>".$data1["antwort"]."<br>";
}
}

echo"</td></tr>";
}
echo"</table>";
 

Doch wenn z.B 5 Fragen ($frage) vorhanden sind, zeigt er mir nur 4 davon an, die erste wird einfach übergangen!
 :wall:  :cry
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

_Gerry_

 :BD:  
:crazy:  

Komisch, auf einmal funzt es!:crazy:
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

_Gerry_

Okay, das oben beschrieben Problem ist ja nun gelöst!
Doch das nächste steht schon vor der Tür!  :redhead:

Also ich lese die Fragen nun ja aus der DB aus, diese werden z.B.: so aufgelistet (in ner Schleife eben):

 
echo"<input type='TEXT' name='uantwort' size='30'>";
echo"<input type=\"hidden\" name=\"fid\" value=\"".$fid."\">";

###### Schleife #########
echo"<textarea name='uantwort'></textarea>";
echo"<input type=\"hidden\" name=\"fid\" value=\"".$fid."\">";


Eine Tabelle ist vorhanden:
 | uid | id | fid | uantwort |

uid = UserID
id = BereichID
fid = ID der Frage
uantwort = Antwort des Users

Das ganz wird nun folgendermassen von mir gespeichert:
 
function save($uid, $id, $fid, $uantwort) {
global $mod_name, $user_prefix, $bgcolor1, $bgcolor2, $bgcolor3;

include ("header.php");
OpenTable();
$result = sql_query("SELECT * FROM ${user_prefix}_user_pro_userantworten WHERE uid='".$uid."'");
$numrows = sql_num_rows($result);
if ($numrows<1) {
sql_query("insert into ".$user_prefix."_user_pro_userantworten values ('".$uid."','".$id."','".$fid."','".$uantwort."')");
}
else {
sql_query("UPDATE ".$user_prefix."_user_pro_userantworten SET uantwort=$uantwort WHERE uid='".$uid."' AND fid ='".$fid."'");
}
CloseTable();
include ("footer.php");
}
 

Doch so klappt es eben nicht!

Müsste jedoch mittels foreach gehen, oder??
Doch auch da häng ich im Moment!  :redhead:

 Edit: Irgendwie wurde der Code verschluckt! :mad:

[Editiert am 16/4/2004 von _Gerry_]
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

jubilee

Hmmm .....
Irgendwie fehlt noch etwas ?!

_Gerry_

Aber nun steht er oben!
Keine Ahnung wohin der verschwand!  :D
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

jubilee

Hmmm seh auf die Schnelle nix ausser
dem das ich bei Update immer die übergebenen Werte in einfache Anführungszeichen setzen muss, weils sonst fehler gibt.
Änder doch mal das
 
Zitatsql_query("UPDATE ".$user_prefix."_user_pro_userantworten SET uantwort=$uantwort WHERE uid='".$uid."' AND fid ='".$fid."'");
in das hier
 
Zitatsql_query("UPDATE ".$user_prefix."_user_pro_userantworten SET uantwort= '$uantwort ' WHERE uid='".$uid."' AND fid ='".$fid."'");
KA ob es daran liegt .
MfG
jubilee

[Editiert am 17/4/2004 von jubilee]

_Gerry_

Wollte nur sagen das soweit funzt!
 :D  :D

Doch schon das nächste Problem aufgetaucht!  :wall:

Wenn man seine Angaben ändern will werden diese ja folgend in die DB geschrieben:
 
function save() {
global $prefix, $user_prefix, $bgcolor1, $bgcolor2, $bgcolor3,$module_name;
$uid=$_POST['uid'];

foreach ($_POST as $key => $value) {

$qry = "UPDATE ${user_prefix}_flirt_profil SET ".$key."='".$value."' WHERE uid=".$uid."";

$result = sql_query($qry);

}
}

Wenn man nun jedoch zuvor einmal eine Checkbox angeklickt hat und diese nun deaktiviert wird diese ja nicht mittels POST übergebn (da ja leer),
folgedessen wird dies in der DB ja logoscherweise nicht geändert!

Wie müsste ich jetzt das Script ändern damit auch diese Daten aktualisiert werden  :quest

Bin für jede Hilfe Dankbar!
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c