Php mysql

Liebe/-r Experte/-in,
ich habe anscheined ein brett vorm Kopf. Eigendlich kann ich programmieren, dachte ich.

Hier ein Code Ausschnitt:

<?php //Zähler zur Variablenunterscheidung<br /> $p=1;  
 for($x=1;$x { echo "p=".$p;  
 $sql\_einsatzpersonal="select \* from einsatzpersonal order by name desc";  
 $mseinsatzpersonal=mysql\_query($sql\_einsatzpersonal);  
 echo ' |Personalart  
 ';  
 while($ausgabe\_einsatzpersonal.$p=mysql\_fetch\_assoc($mseinsatzpersonal))  
 {  
 echo "".ucfirst($ausgabe\_einsatzpersonal.$p['name'])."";   
 }   
 $neueanzahlleute=$anzahlleute+1;  
 $alteanzahlleute=$anzahlleute-1;  
echo '&nbsp;'; if($anzahlleute + '; if($anzahlleute\>1) echo '&nbsp;[-](neuereinsatz.php?anzahlleute='.%2524alteanzahlleute.')';echo '  
  
  
 Zeit  
  
 '; $p++;  
  
 }  
  
 ?\>  
  

Es handelt sich mum eine Eingabeformular für eine Art Zeiterfassung. Über „+“ und „-“ sollen halt Felder hinzugefügt oder ausgeblendet werden.

Um die Felder auseinanderhalten zu können habe ich eine Laufvariable hinzugefügt ($p)

Per for-Schleife wird halt bis zu 5x eine Db-Abfrage gemacht und ein Dropdon Feld und ein Text-Feld generiert.
Als Namen sollen die Felder halt einsatzpersonal_id’.$p erhalen

So dass ich erhalte:

Dementsprechend habe ich die Variable in der While-Schleife verwendet:

while($ausgabe.$p=mysl_fetch_assoc(…)

Aber nach dem ersten Durchlauf ist die Variable leer.
Muss ich die Variable globalisieren?

Aber normalerweise wird doch eine var nicht durch die einfache Verwendung in while gekillt, oder?
Danke für eure Hilfe!

Oliver

Hallo,
ich halte das für einen falschen Ansatz. Ich würde diese Aufgabe mit Ajax lösen. Damit muss auch die Seite nicht dauernd neu geladen werden.

Ausserdem:
DB-Abfragen in einer Schleife sind meistens keine gute Idee!

Gruß
Nullraff

Hi,

danke für Deine superschnelle Antwort.
DB-Abfragen in Schleife, klar aber ich habs auf 5 kleine Abfragen begrenzt . Die Tabelle wird aus max 5 od. 6 Einträgen bestehen à 3 Spalten und daher ists vertretbar, denke ich.
Ajax,hm,da habe ich „Nullraff“ von. :wink:

Nach

while($ausgabe.$p=mysl_fetch_assoc(…)

ist und bleibt $ausgabe (wenn diese Variable hier erstmals auftaucht) in der Tat leer, da das Array nur $p zugewiesen wird. Der bloße Punkt-Operator bewirkt nur eine stringweise Verknüfung, ohne den Inhalt der verknüpften Variablen zu ändern.

Zu Verdeutlichung:

<?php $a="bla";
$a.$b="blubber"; echo " "; echo $a; echo " "; echo $b; ?\> führt zu folgender Ausgabe: bla blubber "blubber" wird also nur $b zugewiesen ohne Einfluss auf $a. Zum Gültigkeitsbereich von Variablen in PHP: Diese sind meines Wissens nur in Funktionen und Klassen lokal, nicht aber in sonstigen Blöcken (z. B. Schleifen). Kannst ja kurz rückmelden, ob das weitergeholfen hat. Gruß

Hi,
Danke Für Deine superschnelle Rückmeldung!
mein Problem war, dass ich uU
das feld "Zeit’ mehrfach habe und demnach auch mehrfach verarbeiten muss.

Nun habe ich es gelöst (Nicht 100% korrektes parsen):

$anzahl=1;
$anzahl = $_GET[‚anzahl‘];
$neueanzahl=$anzahl+1;
$alteanzahl=$anzahl-1;
echo ‚+‘; - echo ‚-‘;

Und dann die Schleife
for($x=1;$x">

Und nun der Clou:
while(…)
$variable=$ausgabe[‚zeit‘.$x];
}
Ich weiss, dass man keine sqls in einer Scholeife nehemn sollte. Aber das sind max. 5 Einträge und 3 Spalten.

Hallo Oliver,

der Ansatz erscheint mir soweit richtig, jedoch erscheint mir die Defition der Ausgaben-Variable etwas seltsam, bitte korrigiere mich jemand wenn ich mich irre, aber du kannst den Namen der Variablen nicht über einen Punkt ändern ($foo.$bar).

Als Namen sollen die Felder halt einsatzpersonal_id’.$p
erhalen

while($ausgabe.$p=mysl_fetch_assoc(…)

Ich würde viel eher die Daten in einem Array speichern, jeder Datensatz bekommt dann ein neues Feld.

Wenn du doch an deinem Ansatz festhalten willst, kannst du dies mit der Funktion eval lösen:
http://de2.php.net/manual/de/function.eval.php