Hänge in einem Scripte fest brauche hilfe
Michael
- php
0 Andreas Korthaus0 Michael0 Andreas Korthaus0 Michael0 Andreas Korthaus
Hallo!
Habe eine Projekt angenommen un-d hange jetzt an einem Probleme und sehe einfach keine Lösung.
Also:
Ich habe eine liste die wird per
while ($daten = @mysql_fetch_array($ergebnis)){
<tr></tr>
<tr>
<td><input type="text" value="" name="anzahl<? echo $daten[id];?>" size="3"></td>
<td><input type="text" value="<? echo $daten[Beschreibung]; ?>" name="Beschreibung<? echo $daten[id];?>" size="25" readonly></td>
<td><input type="text" value="<? echo $daten[nr]; ?>" name="nr<? echo $daten[id];?>" size="10" readonly></td>
<td><input type="text" value="<? echo $daten[oemnr]; ?>" name="oemnr<? echo $daten[id];?>" size="20" readonly></td>
<td><input type="text" value="<? echo $daten[orginale]; ?>" name="orginale<? echo $daten[id];?>" size="5" readonly></td>
<td><input type="text" value="<? echo $daten[recycle]; ?>" name="recycle<? echo $daten[id];?>" size="5" readonly></td>
</tr>
aufgerufen
so weit so gut
wie ihr sehen könnt habe ich an den jeweiligen Namen die ID angehängt um später bei der übergabe explizite Variablen zu bekommen.
in der Zeile
<td><input type="text" value="" name="anzahl<? echo $daten[id];?>" size="3"></td>
werden Werte eingegeben.
Jetzt wirds für mich Kompliziert!!!
Nur das blöde ist die Ausgabe
Ich möchte mittels einer
for($zahl=0;$zahl<100;$zahl++)
{}
Variablen in form von "$anzahl1 bis $anzahl100" erzeugen
aber ich bekomme immer nur die String angezeigt
Meine versuche sahen so aus:
for($zahl=0;$zahl<10;$zahl++)
{
$anzahl = $ . $zahl ;
$Beschreibung=$Beschreibung.$zahl;
$nr=$nr.$zahl;
$oemnr =$oemnr.$zahl;
$orginale=$orginale.$zahl;
$recycle=$recycle.$zahl;
}
Hier auch nochmal meine Versuche für die Ausgabe:
<table border="-1" cellspacing="0" cellpadding="3" align="center">
<tr>
<td><b>Anzahl</b></td>
<td><b>Beschreibung</b></td>
<td><b>Nr</b></td>
<td><b>OEM-Nr</b></td>
<td><b>Orginale</b></td>
<td><b>Recycle</b></td>
</tr>
<tr></tr>
<tr>
<?
if($anzahl>0){
?>
<td><? echo $anzahl ;?></td>
<td><? echo $Beschreibung; ?></td>
<td><? echo $nr; ?></td>
<td><? echo $oemnr; ?></td>
<td><? echo $orginale; ?></td>
<td><? echo $recycle; ?></td>
<?
}
else
{}
?>
</tr>
</tr>
</table>
Bitte helft mir doch mal einer
Gruß
Micha
Hallo!
[...]
so weit so gut
Am besten kürzt man sein Problem auf das wesentliche, dan muß sich nicht jeder hier dadurch kämpfen.
Nur das blöde ist die Ausgabe
Ich möchte mittels einer
for($zahl=0;$zahl<100;$zahl++)
{}
Variablen in form von "$anzahl1 bis $anzahl100" erzeugen
aber ich bekomme immer nur die String angezeigt
Meine versuche sahen so aus:
for($zahl=0;$zahl<10;$zahl++)
{
$anzahl = $ . $zahl ;$Beschreibung=$Beschreibung.$zahl;
$nr=$nr.$zahl;
$oemnr =$oemnr.$zahl;
$orginale=$orginale.$zahl;
$recycle=$recycle.$zahl;
}
(das hätte gereicht ;-))
Wieso willst Du diese Variablen erzeugen? Sollte das nicht eleganter über einen Array mit 100 Elementen machbar sein?
siehe hierzu
http://php3.de/manual/de/language.types.array.php und
http://www.php-faq.de/ch/ch-arrays.html
Und wenn Du es auf jedenfall wie oben machen willst, dann probier es mal so:
for($zahl=0;$zahl<10;$zahl++) {
$temp = "anzahl".$zahl;
$$temp = "was auch immer Du da rein schreiben willst";
}
// Zugreifen kannst Du dann z.B. mit echo $anzahl23...
Mit arrays würde man das so machen:
for($zahl=0;$zahl<10;$zahl++) {
$anzahl[$zahl] = "was auch immer Du da rein schreiben willst";
}
// Zugreifen kannst Du dann z.B. mit echo $anzahl[23]...
Grüße
Andreas
Der sinn soll sein
füllt man unter Http://micha-server.de/fccc/rueckkaufliste2.php
mehre felder aus soll nach dem abschicken doe felder "anzahl1 bis anzahl 89" abgefragt werden ob etwas eingetragen worden ist IND NUR die ausgefüllten ausgegeben werden.
(Sorry vieleicht stehe ich ja mit beieden beinen aus dem schlauch)
Hallo!
füllt man unter Http://micha-server.de/fccc/rueckkaufliste2.php
mehre felder aus soll nach dem abschicken doe felder "anzahl1 bis anzahl 89" abgefragt werden ob etwas eingetragen worden ist IND NUR die ausgefüllten ausgegeben werden.(Sorry vieleicht stehe ich ja mit beieden beinen aus dem schlauch)
probiers mal so:
for($zahl=0;$zahl<=89;$zahl++) {
if($_POST['anzahl'.$zahl]) {
$zahlen_array[] = $zahl;
}
}
print_r($zahlen_array);
Dann z.B.
foreach ($zahlen_array as $nr) {
echo $POST['oemnr'.$zahlen_array[$nr]];
}
Grüße
Andreas
Ausgabe Anzahl Beschreibung Nr OEM-Nr Orginale Recycle
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 6 )
Ausgabe Anzahl Beschreibung Nr OEM-Nr Orginale Recycle
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 6 )
Ausgabe _wovon_ ? Sicher nicht von meinem Code. Was hast Du genau gemacht? Der Array sollte besagen, dass Du folgende Artikel gewählt hast:
artikel1
artikel2
artikel3
artikel4
artikel6
unten habe ich einen Fehler gemacht, das müßte statt
echo $POST['oemnr'.$zahlen_array[$nr]];
echo $_POST['oemnr'.$zahlen_array[$nr]];
heißen. Und ich hoffe Du verstehst das Prinzip! Erkennst Du "oemnr" wieder? Dann weißt Du auch wie Du Beschreibung... ausgeben kannst, halt nach demselben Schema. Schreibe in die letzte Schleife noch ein echo "<hr>"; damit hast Du die "Datensätze" direkt strukturiert.
Ich muß Dir nur sagen das Du das _sehr_ umständlich und unperformant machst. Die Eingabefelder außer Anzahlxy sind unnötig, Du solltest Du Artikel-Daten woanders speichern, und nicht im HTML-Quellcode und schon gar nicht als derart einfach manipulierbare Eingabefelder. Du könntest die Daten z.B. strukturiert in einer CSV-Datei stehen haben, die Du im Script einliest, udn aus dessen Daten Du das Formular erzeugst. Du solltest Dich unter den bereits von mir verkinkten Seiten mal mit Arrays besshäftigen, udn mit der Funktion file() http://php3.de/manual/de/function.file.php, mit der Du eine komplette Datei zeilenweise in einen Array lädst. Mit explode() http://php3.de/manual/de/function.explode.php kannst Du dann die einzelnen durch ein von Dir zu bestimmendes Trennzeichen getrennten "Spalten" wiederum in einen Array laden. Aus diesen Daten erzeugst Du dann mit Hilfe von Schleifen das Formular, mit nur einem Eingabe-Feld(Anzahl), und verknüpfst die Daten dann später über eine eindeutige ID, die Du pro Datensatz vergeben mußt.
Du mußt das nicht so machen, nur so _sollte_ man es meiner Meinung nach machen.
Viele Grüße
Andreas
Sorry war mein Fehler jezt klappt es
Vielen dank
Sorry war mein Fehler jezt klappt es
Vielen dank
Nachtrag:
Ein kleines problem hätte ich da noch
Er nimmt dann die ID 1 sprich $anzahl1 nicht mit
voran liegt das?
Hallo!
Nachtrag:
Ein kleines problem hätte ich da noch
Er nimmt dann die ID 1 sprich $anzahl1 nicht mit
voran liegt das?
Ohne genauen Quellcode kann man Dir nicht helfen. Und benutze bitte erstnal selber die Funktion print_r(), um Dir $_POST... und den erzegten Array ausgeben zu lassen, um zu sehen wo genau der Wert verloren geht!
Grüße
Andreas
Hallo!
Nachtrag:
Ein kleines problem hätte ich da noch
Er nimmt dann die ID 1 sprich $anzahl1 nicht mit
voran liegt das?Ohne genauen Quellcode kann man Dir nicht helfen. Und benutze bitte erstnal selber die Funktion print_r(), um Dir $_POST... und den erzegten Array ausgeben zu lassen, um zu sehen wo genau der Wert verloren geht!
Grüße
Andreas
<?
for($zahl=0;$zahl<=89;$zahl++) {
if($_POST['anzahl'.$zahl]) {
$zahlen_array[] = $zahl;
}}
print_r($zahlen_array);
?>
<td><? foreach ($zahlen_array as $no) { echo $_POST['anzahl'.$zahlen_array[$no]];
echo"<br>";};;?></td>
<td><?foreach ($zahlen_array as $no) { echo $_POST['Beschreibung'.$zahlen_array[$no]];
echo"<br>";} ?> </td>
<td><?foreach ($zahlen_array as $no) { echo $_POST['nr'.$zahlen_array[$no]];
echo"<br>";}; ?> </td>
<td><?foreach ($zahlen_array as $no) { echo $_POST['oemnr'.$zahlen_array[$no]];
echo"<br>";} ?></td>
<td><?foreach ($zahlen_array as $no) { echo $_POST['orginale'.$zahlen_array[$no]];
echo"<br>";} ?> </td>
<td><? foreach ($zahlen_array as $no) { echo $_POST['recycle'.$zahlen_array[$no]];
echo"<br>";} ?> </td>
Hallo!
<?
for($zahl=0;$zahl<=89;$zahl++) {
if($_POST['anzahl'.$zahl]) {
$zahlen_array[] = $zahl;
}}
print_r($zahlen_array);
schön, aber wie lautet die Ausgabe von
print_r($zahlen_array); und
print_r($_POST);
?
<td><? foreach ($zahlen_array as $no) { echo $_POST['anzahl'.$zahlen_array[$no]];
echo"<br>";};;?></td>
<td><?foreach ($zahlen_array as $no) { echo $_POST['Beschreibung'.$zahlen_array[$no]];
echo"<br>";} ?> </td>
<td><?foreach ($zahlen_array as $no) { echo $_POST['nr'.$zahlen_array[$no]];
echo"<br>";}; ?> </td>
<td><?foreach ($zahlen_array as $no) { echo $_POST['oemnr'.$zahlen_array[$no]];
echo"<br>";} ?></td>
<td><?foreach ($zahlen_array as $no) { echo $_POST['orginale'.$zahlen_array[$no]];
echo"<br>";} ?> </td>
<td><? foreach ($zahlen_array as $no) { echo $_POST['recycle'.$zahlen_array[$no]];
echo"<br>";} ?> </td>
das solltst Du in _eine_ Schleife schreiben:
foreach ($zahlen_array as $no) {
echo $_POST['anzahl'.$zahlen_array[$no]];
echo $_POST['Beschreibung'.$zahlen_array[$no]];
echo $_POST['nr'.$zahlen_array[$no]];
//usw.
}
Grüße
Andreas
Also nachdem ich print_r($_POST);
hinzu gefügt habe, sieht die ausgabe des listings (einfacherhalber nur die ersten 5)so aus
Array ( [anzahl1] => 5 [Beschreibung1] => Canon BJ 10 / BJ 20 [nr1] => 903 [oemnr1] => BC-01 [orginale1] => 0,01 [recycle1] => 1,00 [anzahl2] => [Beschreibung2] => Canon BJ 200 / BJ 240 [nr2] => 907 [oemnr2] => BC-02 [orginale2] => 5,00 [recycle2] => 0,25 [anzahl3] => 7 [Beschreibung3] => Canon BJC 210 / 240 [nr3] => 907 [oemnr3] => BC-05 [orginale3] => 5,50 [recycle3] => 0,00 [anzahl4] => 6 [Beschreibung4] => Canon BJC 4000 [nr4] => 900 [oemnr4] => BC-20 [orginale4] => 3,00 [recycle4] => 0,00 [anzahl5] => 5 [Beschreibung5] => Canon BJC 5000 [nr5] => 4325 [oemnr5] => BC-23 [orginale5] => 1,00 [recycle5] => 0,00
.
.
.
}
die echo zeilen kann ich nicht innerhalb einer schleife laufen lasse, sonnst ich die vorgegebene Tabelle zerhackt.
Hi!
Hab nochmal geguckt, kleiner Fehler noch von mir:
foreach ($zahlen_array as $no) {
echo $_POST['anzahl'.$no];
}
muß das heißen!
KLeiner Tipp am Rande, wenn Du was nicht verstehst, lass Dir bitte _alles_ ausgeben was Dir helfen könnte, hier hättest Du Dir z.B. echo $zahlen_array[$nr] und echo $nr ausgeben lassen können, und Du wärst selbst auf das Problem gestoßen.
Grüße
Andras
Einfach Klass
ja so manche Sachen gehen mir NOCH nicht in den Schädel
werde deinen Tip beherzigen
Nochmals vielen Dank
Viel erfolg mit deinem Apache
bis dann Micha