kostenloser Webspace werbefrei: lima-city


unerwartetes ergebniss von echo

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    dustboy

    Kostenloser Webspace von dustboy

    dustboy hat kostenlosen Webspace.

    Hi. Ich soll ein PHP script für die schule schreiben und bin am verzweifeln. Ich hab eine schleife mit einem echo drin, das verschiedene Variablen einbindet und dann eine Tabelle aus geben soll. Hört sich jetzt vieleicht ein bisschen kompliziert an, ist es aber nicht^^
    Hier der code:
    for ($z = 1;$z <= $_SESSION['rows'];$z += 1)
    {
    echo '<tr>
    <td><input type="text" name="auftragsnummer'.$z.'"></td>
    <td><input type="text" name="artikel'.$z.'"></td>
    <td><input type="text" name="anzahl'.$z.'"></td>
    <td><select name="status'.$z.'">
    <option value="Bestellt">Bestellt
    <option value="Auf Lager">Auf Lager
    </select></td>
    <td><input type="text" name="preis'.$z.'"></td>
    <td><input type="text" name="bonus'.$z.'"></td><td><input type="submit" name="rows" value="+"></td>
    </tr>
    ';
    }


    Und das ist dann am ende auf meiner seite zu sehen wenn die schleife nur 1 "runde" läuft:
    -2&euro; pro Buch)</td>
    <td>2&euro;<br>(2,50&euro; pro Buch)</td>
    <td>5&euro;<br>(5,00&euro; pro Buch)</td>
    </tr>


    Wo liegt der fehler???
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Sind die Anführungszeichen wirklich so gesetzt wie im Code angegeben und nicht slash" bzw. '


    Beitrag geändert: 25.11.2008 21:49:48 von boyman
  4. Wo wird der Fehler denn angezeigt?
  5. t**0

    Muss man nicht vor jedem " ein \\ setzen?


    Beitrag geändert: 25.11.2008 22:03:31 von taq0
  6. nein, die " und ' sind ok so, da er ' als äußere Hochkommata verwendet.

    In deinem Code fehlen nur irgendwie die schließenden </option> Tags ;-)

    aus dem:
    <td><select name="status'.$z.'">
    <option value="Bestellt">Bestellt
    <option value="Auf Lager">Auf Lager
    </select></td>


    wird also:
    <td><select name="status'.$z.'">
    <option value="Bestellt">Bestellt</option>
    <option value="Auf Lager">Auf Lager</option>
    </select></td>



    Grüßle


    Beitrag geändert: 26.11.2008 11:56:05 von scout
  7. Autor dieses Themas

    dustboy

    Kostenloser Webspace von dustboy

    dustboy hat kostenlosen Webspace.

    Mist. Das is mir jetzt aber peinlich. Hab ich doch glatt die falsche schleife kopiert xD

    for ($z = 1;$z <= $_POST['bestellungsmenge'];$z += 1)
            {
                if ($_POST['auftragsnummer'.$z] != "" && $_POST['artikel'.$z] != "" && $_POST['anzahl'.$z] != "" && $_POST['preis'.$z] != "" && $_POST['bonus'.$z] != "")
                {
                     echo '<tr>
                               <td>'.$_POST['kundennummer'].'</td>
                               <td>'.$_POST['auftragsnummer'.$z].'</td>
                               <td>'.$_POST['artikel'.$z].'</td>
                               <td>'.$_POST['anzahl'.$z].'</td>
                               <td>'.$_POST['status'.$z].'</td>
                               <td>'.($_POST['preis'.$z] - $_POST['bonus'.$z]) * $_POST['anzahl'.$z].'&euro;<br>('.$_POST['preis'.$z] - $_POST['bonus'.$z].'&euro; pro Buch)</td>
                               <td>'.$_POST['bonus'.$z] * $_POST['anzahl'.$z].'&euro;<br>('.$_POST['bonus'.$z].'&euro; pro Buch)</td>
                               <td>'.$_POST['preis'.$z] * $_POST['anzahl'.$z].'&euro;<br>('.$_POST['preis'.$z].'&euro; pro Buch)</td>
                            </tr>
                           ';
                }
            }


    Das solte eis eigentlich sein.

    Ohne die </option>-tags (muss man das überhaupt machen?^^) funktioniert es eben so gut ;-)
  8. l*******r

    Mach doch als erstes Mal eine Variableneinlesung, so frei nach dem Motto "Wenn ich was poste, sollen die Anderen das auch lesen können" ;)

    Nee also jetzt nicht angegriffen fühlen oder so, ich dachte nur, es würde vielleicht lesbarer - und leichter debugbar werden, wenn man die Werte erst mal einliest:

    $kundenummer = $_POST["kundennummer"];
    $auftragsnummer = $_POST["auftragsnummer".$z];


    Also so würde man da vielleicht besser einen Fehler drin finden können...

    Nur mal 'ne Idee...

    Weitere Idee: Sag' uns doch erstmal, was das Skript überhaupt machen SOLL - UND was es davon NICHT tut ODER TUT und NICHT tun SOLLTE, das würde so einiges an der Sache vereinfachen...

    Grüße,
    Der LDer

    P.S.: Mein Gefühl sagt mir, dass sich dein Fehler in Zeile 11 versteckt... Versuch's mal mit int()/float() {Heißen die Kovertierungs-Funktionen in PHP so?}
  9. projektverwaltung

    projektverwaltung hat kostenlosen Webspace.

    Eigentlich ist es in PHP nicht notwendig Variablen manuell einen Typ zuzuweisen, eeinen Fehler hab ich bisher auch nicht entdeckt, muss aber wohl was semantisches sein wenn du ja keine Fehlermeldung bekommst
  10. also ich bekomm bei mit ne ausgabe, wenn ich das mit dem $z so schreib:
    $_POST['auftragsnummer'].$z


    jetzt musst du nur noch irgendwas mit deiner formel machen, damits passt ;)
  11. Hi, die Lösung ist doch ganz einfach...

    In der Zeile:
    <?
    echo '<td>'.($_POST['preis'.$z] - $_POST['bonus'.$z]) * $_POST['anzahl'.$z].'&euro;<br>('.$_POST['preis'.$z] - $_POST['bonus'.$z].'&euro; pro Buch)</td>';
    ?>

    sagst du dem Parser sinngemäß folgendes:

    Nimm das Stück Text "<td>" und hänge den Wert von "($_POST['preis'.$z] - $_POST['bonus'.$z])" an.
    Dann versuche das Ergebnis "<td>20" mit dem Wert aus Anzahl1 zu multiplizieren ;-)
    Und hänge dann "&euro; ..." an.

    Die Berechnung diverser Zeichen kann der PC nicht durchführen, also verwürft er alles bis hierher und fängt neu an.

    Lösung:
    Alle Berechnungen innerhalb eines echo-Blocks (also zwischen den String-Verbindungspunkten) in Klammern einkapseln.
    <?
    echo '<td>'.(($_POST['preis'.$z] - $_POST['bonus'.$z]) * $_POST['anzahl'.$z]).'&euro;<br>('.($_POST['preis'.$z] - $_POST['bonus'.$z]).'&euro; pro Buch)</td>';
    ?>


    Und schon weiß auch der PC damit was anzufangen ;-)
    Grüßle

    PS: die </option>-Tags gehören laut HTML-Spezifikation zwingend dorthin! Dass dein Browser aus kulanzgründen eine Korrektur durchführt ist eine andere Sache. Allerdings wird dies nicht von allen Browsern gemacht d.h. deine Seite wird mit verschiedenen Browsern anders aussehen bzw. kann halt gar nicht angesehen werden.

    Kannst deine Ausgabe ja mal mit dem HTML-Validator prüfen (siehe http://validator.w3.org bzw. http://www.validome.org )



    Beitrag geändert: 27.11.2008 16:44:10 von scout
  12. @scout
    danke für deine Antwort, hab mal wieder was dazu gelernt ;)
  13. Autor dieses Themas

    dustboy

    Kostenloser Webspace von dustboy

    dustboy hat kostenlosen Webspace.

    Danke scout, so klappts einwandfrei. Auf die Idee wär ich nie gekommen ^^

    Auch danke euch anderen, die ihr euch die Mühe gemacht habt mir bei der lösungsfindung zu helfen ;-)
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!