Michael: Hänge in einem Scripte fest brauche hilfe

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

  1. 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

    1. 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)

      1. 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

        1. Ausgabe Anzahl Beschreibung Nr OEM-Nr Orginale Recycle

          Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 6 )

          1. 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

            1. Sorry war mein Fehler jezt klappt es

              Vielen dank

              1. 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?

                1. 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

                  1. 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>

                    1. 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

                      1. 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.

                        1. 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

                          1. 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