Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: Formulardaten nach Auswahl übernehmen

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.10.2004
    Beiträge
    33

    Question Formulardaten nach Auswahl übernehmen

    Hallo,

    ich möchte in einem Formular folgende Artikel mittels Kontrollfeld auswählen:

    Aspirin "Menge"
    Neurotin "Menge"
    Tegretal "Menge"
    Zentropil "Menge"
    Arsen "Menge"

    Dabei sollten dann im folgenden Text nur die Artikel, die angekreuzt wurden und eine Mengenangabe außer leer haben, angezeigt werden.

    Mit folgenden Script kriege ich aber, egal ob ein oder mehrere Artikel ankreuze immer folgenden Ausdruck:

    3 Packungen, Packungen, 4 Packungen, Packungen, Packungen,


    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>

    <head>
      <title>test</title>
      <meta name="GENERATOR" content="Quanta Plus">
      <link rel="stylesheet" type="text/css" href="css/stylesheet.css">
    </head>
    <body>
    <?php
    if(!isset($_GET["vst"]))
                        {
    echo 
    "<form name=\"Form\" onreset=\"return ResetCheck()\" onsubmit=\"return Check(this)\" action= \"".$_SERVER["PHP_SELF"] ."\">\n";
      echo 
    "<p><INPUT type=\"checkbox\" name=\"kontroll[]\" value=\"1\"> Aspirin  <SELECT name=\"menge1\" size=\"1\"><INPUT type=\"hidden\" name=\"medicine1\" value=\"Aspirin\">\n";
      echo 
    "<option selected=\"true\"></option>\n";
                                                                             echo 
    "<option>1</option>\n";
                                         echo 
    "<option>2</option>\n";
                                         echo 
    "<option>3</option>\n";
                                         echo 
    "<option>4</option>\n";
                                                                           echo 
    "</SELECT><br><br>\n";
      echo 
    "<INPUT type=\"checkbox\" name=\"kontroll[]\" value=\"2\"> Neurontin <SELECT name=\"menge2\" size=\"1\"><INPUT type=\"hidden\" name=\"medicine2\" value=\"Neurontin\">\n";
      echo 
    "<option selected=\"true\"></option>\n";
                                                                             echo 
    "<option>1</option>\n";
                                         echo 
    "<option>2</option>\n";
                                         echo 
    "<option>3</option>\n";
                                         echo 
    "<option>4</option>\n";
                                                                              echo 
    "</SELECT><br><br>\n";
      echo 
    "<INPUT type=\"checkbox\" name=\"kontroll[]\" value=\"3\"> Tegretal <td><select name=\"menge3\" size=\"1\"><INPUT type=\"hidden\" name=\"medicine3\" value=\"Tegretal\">\n";
                                      echo 
    "<option selected=\"true\"></option>\n";
                                         echo 
    "<option>1</option>\n";
                                         echo 
    "<option>2</option>\n";
                                         echo 
    "<option>3</option>\n";
                                         echo 
    "<option>4</option>\n";
                                         echo 
    "</SELECT>    <br><br>\n";              
      echo 
    "<INPUT type=\"checkbox\" name=\"kontroll[]\" value=\"4\"> Zentropil <select name=\"menge4\" size=\"1\"><INPUT type=\"hidden\" name=\"medicine4\" value=\"Zentropil\">\n";
                                      echo 
    "<option selected=\"true\"></option>\n";
                                           echo 
    "<option>1</option>\n";
                                         echo 
    "<option>2</option>\n";
                                         echo 
    "<option>3</option>\n";
                                         echo 
    "<option>4</option>\n";
                                         echo 
    "</SELECT>        <br><br>\n";
      echo 
    "<INPUT type=\"checkbox\" name=\"kontroll[]\" value=\"5\"> Arsen<select name=\"menge5\" size=\"1\"><INPUT type=\"hidden\" name=\"medicine5\" value=\"Arsen\">\n";
      echo 
    "<option selected=\"true\"></option>\n";
                                                           echo 
    "<option>1</option>\n";
                                         echo 
    "<option>2</option>\n";
                                         echo 
    "<option>3</option>\n";
                                         echo 
    "<option>4</option>\n";
                                         echo 
    "</SELECT><br><br>\n";
      echo 
    "</p>\n";
      echo 
    "<input type=\"hidden\" name=\"vst\">\n";
       echo 
    "<input value=\"Senden\" type=\"submit\">&nbsp;&nbsp;&nbsp;<input value=\" Verwerfen\" type=\"reset\">\n";
    echo 
    "</FORM>\n";
                        }
                        else
                        {
                echo 
    "<p>";
                for(
    $i=1$i 6$i++)
                            {
                
    $var $_GET["kontroll".$i];
                if(
    $var == 2)
                
                
                echo 
    "";
                echo 
    $_GET["menge".$i] ."  Packungen, ";
                echo 
    "$var";
                
                            
                
    //$i = $i + 1;
                
    }
                echo 
    "</p>\n";
                }
    ?>
    </body>
    </html>
    Wie muß das abändern, dass das Script weiß, hier ist nichts angekreuzt ergo darf ich dieses $i auch nicht ausgeben?

    Ferner, wie bekomme ich es hin, dass nachher auch das Produkt in dieser Art ausgegeben wird:

    1 Packungen Aspirin, 2 Packungen Tegretal

    Vielen Dank!

    Archilles

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Du hast zum einen ein input hidden tag im Select tag, da gehört es nicht hin
    Bei den Select Tags setzt du auch bei jedem ein Select true somit gibt jedes Select einen Wert zurück ist das erwünscht?
    Du verwendest PHP, nutze die Möglichkeiten
    PHP-Code:
    <?php
    // Ertselle ein Array mit den Daten
    $daten = array("Aspirin""Neurotin""Tegretal""Zentropil""Arsen");
    echo 
    "<div style=\"width: 150px; text-align: right;\">
        <form action=\"" 
    $_SERVER['PHP_SELF'] . "\"  method=\"post\">";
    // Alle Daten aus Array $daten Generieren
    foreach ($daten AS $k => $val )
    {
        echo 
    "<label>" $val "
            <SELECT  name=\"" 
    $val "\">"
            
    // Durchlaufe immer 4 Werte
            
    foreach (range(0,5) AS $i ) {
                        
    $select = ( $i === ) ? " selected" "";
                  echo  
    "<option value=\"" $i "\" $select>" $i "</option>\n"
            }
        echo 
    "</select>
            </label>
        <br/>"
    ;
    }
    echo 
    "<input type=\"submit\" name=\"Bestellungen\" value=\"Submit\"/>
            <form>
        </div>"
    ;

    // Nehme Post variablen und sehe nach was vorhanden ist
    // In dem ich sie mit den Arraydaten vergleiche ;)
    if ( isset($_POST['Bestellungen']) )
    {
        foreach ( 
    $_POST AS $k => $wert )
        {
            if ( 
    in_array($k$daten) &&  $wert != "0" )
                echo  
    "Bestellt: " $k " Anzahl: " $wert "<br/>";
        }
    }
    ?>
    mfg undefined
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.10.2004
    Beiträge
    33
    Hallo undefined,

    erst einmal vielen Dank für Dein Script. Das ist das, was ich die ganze Zeit versuche hinzubekommen, aber scheint das Buch doch nicht so gut zu sein.

    Also die Frage verstehe ich nicht ganz:
    Bei den Select Tags setzt du auch bei jedem ein Select true somit gibt jedes Select einen Wert zurück ist das erwünscht?
    Aber Dein Script macht genau das, was es tun soll: Nur die Werte ausgeben, die der Benutzer auch ausgewählt hat. Da soll natürlich noch ein Preis pro Artikel dazu, aber mit Deinem lehrreichen Beispiel wird das für mich kein Problem werden.

    In diesem Sinne noch einmal besten Dank!

    Gruß

    Archilles
    Geändert von Archilles (21-10-2004 um 16:22 Uhr)

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    gern geschehen, das mit Büchern ist immer so eine Sache, zum einen ist man Ungeduldigt und möchte sofort beginnen um das Interesse nicht zu verlieren Andereseits muß man sich aber erst einmal Gnadenlos durch kleinere Beispielscripte durchquälen bis das kommt was man wirklich braucht. Mein Tip die PHP Manual und selfPHP Downloaden, das waren meine Bücher
    mfg Undefined
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  5. #5
    Registrierter Benutzer
    Registriert seit
    12.10.2004
    Beiträge
    33

    Question Zweidimensionales Array

    Hallo Undefined,

    ich gebe zu im Brustton der Überzeugung behauptet zu haben, der Rest sei kein Problem mehr für. Aber das ziehe nach Recherchen in den Manuals und eigenem Ausprobieren zurück.

    Also der erste Part, dass nur das im Auswertungsteil angezeigt wird, was auch definitiv ausgewählt wurde, das klappt ja prima. Nur will ich als kostenbewußter Kunde von Giften und Neurotika auch wissen, was mich mein Hobby kostet.

    Ergo probiere ich folgendes aus, um ein zweidimensionales Array zu verstehen:

    PHP-Code:
    <head>
      <title>test</title>
      <meta name="GENERATOR" content="Quanta Plus">
      <link rel="stylesheet" type="text/css" href="css/stylesheet.css">
    </head>
    <body>
    <?php
    $daten 
    = array(
             
    => array("Aspirin","125,56"),
         
    => array("Neurotin","25,59"),
         
    => array("Tegretal","15,89"),
         
    => array("Zentropil","55,45"), 
         
    => array("Arsen","45,77")
         );
    echo 
    "<div style=\"width: 250px; text-align: right;\">
        <form action=\"" 
    $_SERVER['PHP_SELF'] . "\"  method=\"post\">";
            echo 
    "<p>";
        foreach (
    $daten AS $m){
        echo 
    $daten[$m][0] . " zu "$daten[$m][1] . " €<br>";
        }
        
        echo 
    "</p>"
        echo 
    "<input type=\"submit\" name=\"Bestellungen\" value=\"Submit\"/>
            <form>
        </div>"
    ;
        
    ?> 
    </body>
    </html>
    Hier bekomme ich die Ausgabe:

    Warning: Illegal offset type in /srv/www/hofapotheke/bestellung2.php on line 20
    Was ich als PHP-Novize absolut nicht kapiere. Was meinen die da mit illegalen Offset-Typen?

    Dagegen scheine ich das Grundprinzip des Arrays kapiert zu haben. Denn wenn ich folgendes mache:

    PHP-Code:
    <head>
      <title>test</title>
      <meta name="GENERATOR" content="Quanta Plus">
      <link rel="stylesheet" type="text/css" href="css/stylesheet.css">
    </head>
    <body>
    <?php
    $daten 
    = array(
             
    => array("Aspirin","125,56"),
         
    => array("Neurotin","25,59"),
         
    => array("Tegretal","15,89"),
         
    => array("Zentropil","55,45"), 
         
    => array("Arsen","45,77")
         );
    echo 
    "<div style=\"width: 250px; text-align: right;\">
        <form action=\"" 
    $_SERVER['PHP_SELF'] . "\"  method=\"post\">";
            echo 
    "<p>";
        
    $i 1;
        foreach (
    $daten AS $m){
        echo 
    $daten[$i][0] . " zu "$daten[$i][1] . " €<br>";
        
    $i++;
        }
        
        echo 
    "</p>"
        echo 
    "<input type=\"submit\" name=\"Bestellungen\" value=\"Submit\"/>
            <form>
        </div>"
    ;
        
    ?> 
    </body>
    </html>
    habe ich zumindest mal eine Ausgabe wie:

    Aspirin zu 125,56 €
    Neurotin zu 25,59 €
    Tegretal zu 15,89 €
    Zentropil zu 55,45 €
    Arsen zu 45,77 €
    Wie baue ich das aber in Dein Script ein, so daß zusätzlich noch der Preis individuell zum Produkt erscheint? Ich denke, das mit dem Berechnen des Gesamtpreises kriege ich wirklich noch hin, nur beim Grundprizip komme ich partout nicht voran.

    Vor allem, was bedeutet das " $k => $medicine" foreach ($daten AS $k => $medicine ). Warum muß ich da einem Wert einen Schlüssel zu weisen?

    Hier ist noch einmal Dein Script, leicht abgewandelt, damit es für mich lesbarer wird:

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>

    <head>
      <title>test</title>
      <meta name="GENERATOR" content="Quanta Plus">
      <link rel="stylesheet" type="text/css" href="css/stylesheet.css">
    </head>
    <body>
    <?php
    // Ertselle ein Array mit den Daten
    $daten = array("Aspirin""Neurotin""Tegretal""Zentropil""Arsen");
    //$daten = array(
      //       1 => array("Aspirin","125,56"),
        // 2 => array("Neurotin","25,59"),
        // 3 => array("Tegretal","15,89"),
        // 4 => array("Zentropil","55,45"), 
        // 5 => array("Arsen","45,77")
         //);

    echo "<div style=\"width: 250px; text-align: right;\">
        <form action=\"" 
    $_SERVER['PHP_SELF'] . "\"  method=\"post\">";
    // Alle Daten aus Array $daten Generieren

    $m 0;
    foreach (
    $daten AS $k => $medicine )
    {
        echo 
    "<label>" $medicine " ";
        echo 
    "zu " $price "&nbsp;€&nbsp;" "
             <SELECT  name=\"" 
    $medicine "\">"
            
    // Durchlaufe immer 9 Werte
            
    foreach (range(0,10) AS $amount ) {
                        
    $select = ( $amount === ) ? " selected" "";
                  echo  
    "<option value=\"" $amount "\" $select>" $amount "</option>\n"
            }
        echo 
    "</select>
             </label>
        <br/>"
    ;
    }
    echo 
    "<input type=\"submit\" name=\"Bestellungen\" value=\"Submit\"/>
            <form>
        </div>"
    ;

    // Nehme Post variablen und sehe nach was vorhanden ist
    // In dem ich sie mit den Arraydaten vergleiche ;)
    if ( isset($_POST['Bestellungen']) )
    {
        foreach ( 
    $_POST AS $k => $wert )
        {

            if ( 
    in_array($k$daten) &&  $wert != "0" )

                echo  
    "Bestellt: " $k "    Anzahl: " $wert "<br/>";
        }
    }
    ?> 
    </body>
    </html>
    Also es wäre super, ich bekäme trotz Brustton der Überzeugung noch einmal einen so brauchbaren Fingerzeig.

    Vielen dank

    Archilles

  6. #6
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Dein mehrdimensionales Array ist OK die Schlüssel würde ich aber wegen Umlauten bei Post und SELECT als Strings setzen somit kannst du deine Daten besser wiederfinden. Dein Fehler im Script war ein nicht geschlossener String Operant bei Preis. Ich habe es Modifiziert und noch ein Berechnungs Beispiel eingefügt. Mit (float) sage ich PHP jetzt kommt ein float Wert weil Daten die über CGI Schnittstelle laufen werden immer zuerst als String behandelt, daher Helfe ich etwas nach. Ein Float Wert verlangt einen Punkt
    PHP-Code:
    <?php

    $daten 
    = array( "aspirin" => array("Aspirin","125.56"),
       
    "neurotin" => array("Neurotin","25.59"),
       
    "tegretal" => array("Tegretal","15.89"),
       
    "zentropil" => array("Zentropil","55.45"),
       
    "arsen" => array("Arsen","45.77")
    );
     
    echo 
    "<div style=\"width: 250px; text-align: right;\"> 
        <form action=\"" 
    $_SERVER['PHP_SELF'] . "\"  method=\"post\">";
    /**
     * Die variable "$k" ist ein Zeiger auf das Array-Element
     * das gelesen wird daher must du nicht einen Zähler wie z.B. bei einer while Schleife setzen.
     */
    foreach ( $daten AS $k => $pro )
    {
        
    /**
         * $pro ist ein Array weil $daten jetzt Mehrdimensional ist ;)
         * $pro[0] ist der erste Zeiger und gibt den Namen an. $pro[1] den Preis
         * Bei Euro am besten nach UTF-8 Konvertieren &#8364
         */
        
    echo "<label>" $pro[0] . " zu " $pro[1] . " ?
             <SELECT  name=\"" 
    $k "\">";
               foreach (
    range(0,10) AS $i ) {
                        
    $select = ( $i === ) ? " selected" "";
                  echo  
    "<option value=\"" $i "\" $select>" $i "</option>\n";
            } 
        echo 
    "</select> 
             </label> 
        <br/>"


    echo 
    "<input type=\"submit\" name=\"Bestellungen\" value=\"Submit\"/> 
            <form> 
        </div>"


    if ( isset(
    $_POST['Bestellungen']) ) 
    {
    /**
     * Zum Debuggen kannst du auch var_dump() oder print_r() verwenden!
      echo "<pre>";
        print_r( $_POST );
      echo "</pre>";
     */
        
    foreach ( $_POST AS $k => $wert 
        {
            
    // $k ist gleich select:name
            
    if ( array_key_exists$k$daten ) &&  $wert != "0" ) {
                
    /**
                 * Hier jetzt mit dem Zeiger auf das Array verweisen
                 */
                
    echo  "Bestellt: " $daten[$k][0] . "    Anzahl: " $wert;
                echo 
    " gesamt Summe " . ( (float)$daten[$k][1] * (float)$wert ) . " &#8364 <br/>";
            }
        } 

    ?>
    PS: Beim Preis und der Konvertierung siehe PHP manual sprintf()
    mfg undefined
    Geändert von undefined (23-10-2004 um 16:00 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  7. #7
    Registrierter Benutzer
    Registriert seit
    12.10.2004
    Beiträge
    33
    Also vor allem besten Dank!

    Aber da sehen wir wieder einmal, wie wichtig das Wissen um das Wie in den Details ist. Denn da hätte ich lange probieren und suchen können, den nicht geschlossenen String habe ich erst jetzt gesehen. Mal abgesehen von dem Nichtwissen über mögliche Folgen im Ablauf des Programmes.

    Gruß

    Archilles

  8. #8
    Registrierter Benutzer
    Registriert seit
    12.10.2004
    Beiträge
    33

    Question Komplizierter als ich dachte

    Also langsam fang ich an, das Ganze Prozedere zu verstehen.
    PHP-Code:
    foreach ( $_POST AS $k => $wert 
    holt also alle Variablen aus dem Formular heraus. Oder?

    Ich habe mit meinem Bestellformular nämlich in Zeile 300 (das ist obige foreach-Anweisung) die Fehlermeldung:

    Warning: array_key_exists(): The second argument should be either an array or an object in /srv/www/hofapotheke/bestellung.php on line 300

    Ist auch klar, wenn ich weitere Infos über Name, Straße, Email, Anrede und so weiter mitschicke.

    Mein endgültiges Formular sieht wie folgt aus:

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

    <html>
      <head>

        <title>HOF-Apotheke Bestellungen</title>
        <meta name="GENERATOR" content="Quanta Plus">
        <link rel="stylesheet" type="text/css" href=
        "css/stylesheet.css">
        <script language="javascript" type="text/javascript">
    <!--
    function Check(form)
        {    
            if(!form.name.value) {
           alert("Geben Sie bitte Ihren Nachnamen ein!");
           form.name.focus();
           return false;
         }
            if(!form.firstname.value) {
           alert("Geben Sie bitte Ihren Vornamen ein!");
           form.firstname.focus();
           return false;
         }         
            if(!form.street.value) {
           alert("Geben Sie bitte Ihre Strasse an!");
           form.street.focus();
           return false;
         }
            if(!form.number.value) {
           alert("Geben Sie bitte Ihre Hausnummer an!");
           form.number.focus();
           return false;
         }     
            if(!form.PLZ.value) {
           alert("Geben Sie bitte Ihre Postleitzahl ein!");
           form.PLZ.focus();
           return false;
         }     
            if(!form.city.value) {
           alert("Geben Sie bitte Ihren Wohnort ein!");
           form.city.focus();
           return false;
         }
            if(!form.phone.value) {
           alert("Geben Sie bitte Ihre Telefonnummer ein!");
           form.phone.focus();
           return false;
         }
        if(!form.email.value) {
           alert("Geben Sie bitte Ihre Emailadresse ein! Ohne die geht es nicht!");
           form.email.focus();
           return false;
         }
    }
    //-->
                                                            </script>
      </head>

      <body>
      
      <?php
      
    if(!isset($_POST["vst"]))
      {
        
    /* In diesem Array sind die online bestellbaren Medikamente
           und ihre Listenpreise festgehalten. 
           ACHTUNG: Der Preis muß mit einem Punkt als Dezimaltrennzeichen
                    geschrieben werden, statt eines Kommas!
        */
        
        // Begin of data ---
            
        
    $daten = array( "aspirin" => array("Aspirin","5.56"),
                        
    "neurotin" => array("Neurotin","25.59"),
                
    "tegretal" => array("Tegretal","15.89"),
                
    "zentropil" => array("Zentropil","7.45"),
                
    "arsen" => array("Arsen","100.00")
                );

        
    // End of data ---
            
        
    echo "<table width=\"100%\" cellspacing=\"0\" border=\"0\" cellpadding=\"0\"
        align=\"center\">
          <tr>
            <td>
              <form name=\"Form\" onreset=\"return ResetCheck()\" onsubmit=
              \"return Check(this)\" action=\"\" method=\"POST\">
                <table border=\"0\" align=\"center\" valign=\"bottom\" width=
                \"80%\" cellspacing=\"2\">
                  <tr>
                    <td colspan=\"4\" align=\"center\">
                      <h1>Medikamenten-Bestellung</h1>
                    </td>
                  </tr>

                  <tr>
                    <td colspan=\"4\">
                      <p>M&ouml;chten Sie Standardmedikamente online
                      reservieren oder per Rechnung zugesandt haben, so
                      k&ouml;nnen hier Ihre Bestellung aufgeben.</p>
                      <br>
                    </td>
                  </tr>

                  <tr>
                    <td align=\"right\">Anrede</td>

                    <td><select name=\"salutation\" size=\"1\">
                      <option selected>
                        Herr
                      </option>

                      <option>
                        Frau
                      </option>
                    </select></td>

                    <td>&nbsp;</td>
                  </tr>

                  <tr>
                    <td align=\"right\">Name</td>

                    <td><input type=\"text\" name=\"name\" size=\"30\"></td>

                    <td align=\"right\">Vorname</td>

                    <td><input type=\"text\" name=\"firstname\" size=
                    \"30\"></td>
                  </tr>

                  <tr>
                    <td align=\"right\">Stra&szlig;e</td>

                    <td><input type=\"text\" name=\"street\" size=
                    \"30\"></td>

                    <td align=\"right\">Nr.</td>

                    <td><input type=\"text\" name=\"number\" size=
                    \"10\"></td>
                  </tr>

                  <tr>
                    <td align=\"right\">Postleitzahl</td>

                    <td><input type=\"text\" name=\"PLZ\" size=\"10\"></td>

                    <td align=\"right\">Stadt</td>

                    <td><input type=\"text\" name=\"city\" size=\"30\"></td>
                  </tr>

                  <tr>
                    <td align=\"right\">Telefon</td>

                    <td><input type=\"text\" name=\"phone\" size=\"30\"></td>

                    <td align=\"right\">eMail</td>

                    <td><input type=\"text\" name=\"email\" size=\"30\"></td>
                  </tr>

                  <tr>
                    <td align=\"right\">Fax</td>

                    <td><input type=\"text\" name=\"fax\" size=\"30\"></td>
                  </tr>

                  <tr>
                    <td>&nbsp;</td>
                  </tr>
                </table>

                <table width=\"80%\" cellspacing=\"5\" valign=\"bottom\"
                border=\"0\" cellpadding=\"0\" align=\"center\">
                  <tr>
                    <td colspan=\"5\">Hier k&ouml;nnen Sie aus der
                    Auswahlliste Ihr Medikament und die gew&uuml;nschte
                    Menge ausw&auml;hlen:<br><br></td>
                  </tr>

                  <tr>
                    <th width=\"60\" align=\"left\">Medikament</th>

                    <th width=\"20\" align=\"right\">Einzelpreis</th>

                    <th width=\"20\" align=\"center\">Packungsmenge</th>
                  </tr>"
    ;
              
              foreach ( 
    $daten AS $k => $pro )
              {

                  echo 
    "<tr>
                    <label><td>" 
    $pro[0] . "</td>

                    <td align=\"right\">" 
    $pro[1] . " €</td>

                    <td align=\"center\"><select name=\"" 
    $k "\">";
            
            foreach (
    range(0,10) AS $i )
            {
            
    $select = ( $i === ) ? " selected" "";
               
                      echo  
    "<option value=\"" $i "\" $select>" 
              
    $i "
              </option>"
    ;
            }
            }  
                    
            echo 
    "</select></td></label>
                  </tr>"
    ;
                echo 
    "</table>

                <table width=\"80%\" cellspacing=\"10\" valign=\"bottom\"
                border=\"0\" cellpadding=\"0\" align=\"center\">
                  <tr>
                    <td width=\"70\">&nbsp;</td>

                    <td colspan=\"2\">Ich w&uuml;nsche eine<br>
                    <br>
                     <input type=\"radio\" name=\"order\" selected=\"true\"
                    value=\"Online-Bestellung\">
                    <strong>Zusendung</strong><br>
                     <input type=\"radio\" name=\"order\" value=
                    \"Reservierung\"> <strong>Reservierung meiner
                    Bestellung</strong></td>
                  </tr>

                  <tr>
                    <td colspan=\"3\">
                      <div align=\"center\">
                        <input value=\"Bestellen\" name=\"Bestellungen\"
                        type=\"submit\">&nbsp;&nbsp;&nbsp;<input value=
                        \" Verwerfen\" type=\"reset\">
                      </div>
                    </td>
                  </tr>
                </table>
                <input type=\"hidden\" name=\"vst\">
              </form>
            </td>
          </tr>
        </table>"
    ;
      }
      else
      {
        if ( isset(
    $_POST['Bestellungen']) ) 
        {
          echo 
    "<pre>";
        
    print_r$_POST );
      echo 
    "</pre>";
          echo 
    "<table width=\"800\" cellspacing=\"0\" border=\"0\" cellpadding=\"5\"
        align=\"center\">
          <tr>
            <td colspan=\"7\">"
    ;
              
              if (
    $_POST["salutation"]=="Herr")
               {
                 echo 
    "<h1>Sehr geehrter Herr ";
                 echo 
    $_POST["name"] .", Ihre <FONT color=\"red\">";
                 echo 
    $_POST["order"] ."</FONT></h1>";
           }
              else 
           {
                 echo 
    "<h1>Sehr geehrte Frau ";
                 echo 
    $_POST["name"] .", Ihre <FONT color=\"red\">";
                 echo 
    $_POST["order"] ."</FONT></h1>";
           }
            echo 
    "</td>
          </tr>

          <tr>
            <td colspan=\"7\">
              <h3>haben Sie wie folgt zusammengestellt</h3>
            </td>
          </tr>

          <tr>
            <td width=\"10\">
            </td>

            <th width=\"10\" align=\"left\">Menge</th>

            <th width=\"250\" align=\"left\">Artikel</th>

            <th width=\"20\" align=\"center\">Einzelpreis</th>

            <th width=\"20\" align=\"center\">Bruttopreis</th>

            <td width=\"250\">
            </td>
          </tr>"
    ;
          
          foreach ( 
    $_POST AS $k => $wert )
          {
          
            if ( 
    array_key_exists$k$daten ) &&  $wert != "0" 
            {

            echo 
    "<tr>
              <td width=\"40\">
              </td>

              <td align=\"center\">" 
    $wert "</td>

              <td align=\"left\">" 
    $daten[$k][0] . "</td>

              <td align=\"right\">" 
    number_format((float)$wert,2,",","") . " €</td>

              <td align=\"right\"><strong>" 
    number_format(( (float)$daten[$k][1] * (float)$wert ),2,",","") . " €</strong></td>
            </tr>"
    ;
        
        
    // Ermittlung der Gesamtsumme
        
    $total = (float)$total + ( (float)$daten[$k][1] * (float)$wert );     
            }
          }
        
    // Ermittlung von Nettopreis und Mehrwertsteuer, sowie Formatierung inklusive Gesamtsumme  
        
    $netto number_format(((float)$total 100 116),2,",","");
        
    $mwst number_format(((float)$total - (float)$netto),2,",","");
        
    $total number_format((float)$total,2,",","");
        echo 
    "</table>
        <br>
         <br>
         

        <table width=\"800\" cellspacing=\"0\" border=\"0\" cellpadding=\"5\"
        align=\"center\">
          <tr>
            <td width=\"40\">
            </td>

            <td align=\"left\"><strong>Nettopreis</strong></td>

            <td align=\"right\"><strong>" 
    $netto " €</strong></td>

            <td width=\"450\">
            </td>
          </tr>

          <tr>
            <td width=\"40\">
            </td>

            <td align=\"left\">+ 16% MwSt</td>

            <td align=\"right\">" 
    $mwst " €</td>

            <td width=\"450\">
            </td>
          </tr>

          <tr>
            <td width=\"40\">
            </td>

            <th align=\"left\">Rechnungsbetrag</th>

            <th align=\"right\">" 
    .  $total " €</th>

            <td width=\"450\">
            </td>
          </tr>
        </table>
        <br>
         <br>
         

        <table width=\"800\" cellspacing=\"0\" border=\"0\" cellpadding=\"5\"
        align=\"center\">
          <tr>
            <td width=\"40\">
            </td>

            <td colspan=\"6\" valign=\"bottom\">
              <h4>Ihre Adressdaten haben wir wie folgt
              registriert:</h4>
            </td>
          </tr>

          <tr>
            <td width=\"40\">
            </td>

            <td colspan=\"6\">
              <table width=\"100%\" border=\"0\" cellpadding=\"2\">
                <tr>
                  <td width=\"150\"><strong>Name:</strong></td>

                  <td>"
    ;
              echo 
    $_POST[firstname] .  " ";
              echo 
    $_POST[name] . "</td>
                </tr>

                <tr>
                  <td><strong>Anschrift:</strong></td>

                  <td>"
    ;
              echo 
    $_POST[street] .  " ";
              echo 
    $_POST[number] . "</td>
                </tr>

                <tr>
                  <td>
                  </td>

                  <td><input type=\"hidden\" name=\"plz\" value=\"70163\">"
    ;
              echo 
    $_POST[PLZ] .  " ";
              echo 
    $_POST[city] . "<input type=\"hidden\" name=\"city\" value=
                  \"Stuttgart\"></td>
                </tr>

                <tr>
                  <td width=\"150\"><strong>Telefon:</strong><input type=
                  \"hidden\" name=\"phone\" value=\"0711\"></td>

                  <td>"
    ;
              echo 
    $_POST[phone] . "</td>
                </tr>

                <tr>
                  <td width=\"150\"><strong>Fax:</strong></td>

                  <td>"
    ;
              echo 
    $_POST[fax] . "</td>
                </tr>

                <tr>
                  <td width=\"150\"><strong>eMail:</strong></td>

                  <td>"
    ;
              echo 
    $_POST[email] . "</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td width=\"40\">
            </td>

            <td colspan=\"6\">Sind die Angaben korrekt? Wenn Sie
            &Auml;nderungen vornehmen wollen, gehen Sie noch einmal <a
            href=\"javascript:history.back()\">hier</a> zur&uuml;ck.</td>
          </tr>

          <tr>
            <td width=\"40\">
            </td>

            <td colspan=\"6\">Wollen Sie Ihre <strong>Bestellung</strong>
            an uns abschicken? Dann dr&uuml;cken Sie den
            Bestell-Button</td>
          </tr>

          <tr>
            <td width=\"40\">
            </td>

            <td colspan=\"6\" align=\"center\"><input type=\"submit\" name=
            \"send\" value=\"Bestellen\"></td>
          </tr>
        </table>"
    ;
        }  
      }  
      
    ?>  
      </body>
    </html>
    Wie mache ich dem Script jetzt deutlich, daß es eben zur Bestellung neben den Formalien an jener Stelle Zeile 300 unsere Daten aus dem Array $daten übernehmen soll?

    Die liegen ja nicht mehr als Array $daten vor, sondern liegen einzeln vor:
    [aspirin] => 2
    [neurotin] => 0
    [tegretal] => 0
    [zentropil] => 0
    [arsen] => 3

    wie mir

    PHP-Code:
          echo "<pre>";
        
    print_r$_POST );
      echo 
    "</pre>"
    zeigt.

    Gruß

    Archilles

  9. #9
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Kleiner Denkfehler bei der verfügbarkeit von Variablen im Globalen Namensraum
    PHP-Code:
          foreach ( $_POST AS $k => $wert 
          { 
           if ( ! 
    is_array$daten )  ) die ( "<h1></h1>Wo ist den mein Array?</h1>" );
            if ( 
    array_key_exists$k$daten ) &&  $wert != "0" )  
            { 
    PHP kann das Array nicht finden weil es in einer nicht erfüllten Bedingung abgelegt ist.
    mfg undefined
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  10. #10
    Registrierter Benutzer
    Registriert seit
    12.10.2004
    Beiträge
    33
    Gott-o-Gott, was heißt denn das, globaler Namensraum?

    Kann ich dem Script im ersten Teil irgendwie mitteilen, daß $daten als fertiges Päckchen verschicken kann? So daß es im zweiten Teil eben wieder als Array vorliegt?

    Mfg Archilles

  11. #11
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Die foreach Schliefe war auch nicht geschlossen.
    PHP-Code:
          foreach ( $_POST AS $k => $wert )
          {
           if ( 
    is_array$daten )  )
           {
            if ( 
    array_key_exists$k$daten ) &&  $wert != "0" )
            {

            echo 
    "<tr>
              <td width=\"40\">
              </td>

              <td align=\"center\">" 
    $wert "</td>

              <td align=\"left\">" 
    $daten[$k][0] . "</td>

              <td align=\"right\">" 
    number_format( (float)$wert,2,",","") . " </td>

              <td align=\"right\"><strong>" 
    number_format( ( (float)$daten[$k][1] * (float)$wert ),2,",","") . " </strong></td>
            </tr>"
    ;

                
    // Ermittlung der Gesamtsumme
                
    $total = (float)$total + ( (float)$daten[$k][1] * (float)$wert );
            }
           }
          } 
    Teste aber bitte auch noch deine Seite auf Opera und IE wegen der Darstellung.
    Sonst sieht es schon sehr gut aus.
    mfg undefined
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  12. #12
    Registrierter Benutzer
    Registriert seit
    12.10.2004
    Beiträge
    33

    Unhappy

    Also wenn ich Deine Korrektur des Codes einfüge, habe ich erst einmal Parse-Fehler bekommen. Warum, habe ich nicht eruieren können. Wenn in meinem Code Deine Korrekturen eintrage, läuft das Script ohne Fehlermeldung durch.

    Mein Code:
    PHP-Code:
    foreach ($_POST AS $k => $wert)
          {
            if (
    is_array$daten ))
        {
            if (
    array_key_exists$k$daten ) &&  $wert != "0"
            {

            echo 
    "<tr>
              <td width=\"40\">
              </td>

              <td align=\"center\">" 
    $wert "</td>

              <td align=\"left\">" 
    $daten[$k][0] . "</td>

              <td align=\"right\">" 
    number_format((float)$wert,2,",","") . " €</td>

              <td align=\"right\"><strong>" 
    number_format(( (float)$daten[$k][1] * (float)$wert ),2,",","") . " €</strong></td>
            </tr>"
    ;
        
        
    // Ermittlung der Gesamtsumme
        
    $total = (float)$total + ( (float)$daten[$k][1] * (float)$wert );     
            }
        }
          }
        
    // Ermittlung von Nettopreis und Mehrwertsteuer, sowie Formatierung inklusive Gesamtsumme  
        
    $netto number_format(((float)$total 100 116),2,",","");
        
    $mwst number_format(((float)$total - (float)$netto),2,",","");
        
    $total number_format((float)$total,2,",","");
        echo 
    "</table>
        <br>
         <br> 
    Was jetzt nicht geschieht, ist dass die Tabellenzeilen geschrieben werden. Das ist so, als ob die Variablen $k, $daten und $wert gar nicht existieren würden. Das hört direkt bei der Tabellenüberschrift, die vor der foreach-Schleife kommt auf.

    Array
    (
    [salutation] => Frau
    [name] => Frimpong
    [firstname] => Selina
    [street] => Mahatma-Gandhi-Straße
    [number] => 20
    [PLZ] => 70376
    [city] => Stuttgart
    [phone] => 01 71 - 523 69 89
    [email] => Selina@aol.com
    [fax] => 07 11 - 89 66 34
    [aspirin] => 1
    [neurotin] => 3
    [tegretal] => 4
    [zentropil] => 5
    [arsen] => 10
    [order] => Online-Bestellung
    [Bestellungen] => Bestellen
    [vst] =>
    )
    Also nach diesen Formulareingaben müssten eigentlich jetzt fünf Tabellenzeilen entstehen. Werden hier tatsächlich die gesamten Array-Daten aus dem Eingabe-Formular mit übergeben? Eigentlich stelle ich mir diese Array-Ausgabe da oben so vor, dass hier etwas mit daten und einzelnen Elementen steht. Da fehlen nämlich noch die Preise. Leider

    Mfg
    Archilles
    Geändert von Archilles (25-10-2004 um 09:22 Uhr)

  13. #13
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    @Archilles nicht einfach copy paste machen
    Warum dein Ausgabe nicht kommt hatte ich dir aber im vorherigen Beitrag schon geschrieben. Das Array $daten liegt in der ersten Bedingung, wird daher bei isset($_POST['Bestellungen']) nicht ausgewertet. Verschiebe das Array einfach in den Dateikopf. Generel sollte man egal bei welcher Scriptssprache (Arrays/Konstanten/Varaiablen) immer an den Scriptanfang setzen und Dokumentieren, das macht die Sache Übersichtlicher und verhindert Fehler wie in deinem Fall. Bei der isset($_POST) bedingung empfehle ich dir ein
    PHP-Code:
    if (Bedingung)
    else if (
    Bedingung)
    else 
    zu verwenden.
    PHP-Code:
      } else if ( isset($_POST['Bestellungen']) ) { 
    Die if (is_array()) Bedingung habe ich dir nur eingefügt um zu Zeigen das man Möglichst so oft wie es geht eine Abfrage für Fehler abzufangen verwendet.
    Bei PHP ist es nicht anders wie in Sonstigen Scriptsprachen dein Code macht im entdefekt mehr als 30% an Code aus der Scripting oder Eingabe Fehler abfangen soll.

    PS: Wenn du das fertig hast und alles Funktioniert dann Sprechen wir noch über dein Javascript da liegt auch noch so einiges im Argen

    mfg undefined
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  14. #14
    Registrierter Benutzer
    Registriert seit
    12.10.2004
    Beiträge
    33

    Smile Besten Dank - jetzt arbeitet es korrekt!

    Hallo undefined,

    da muß ich etwas total falsch verstanden haben. Wenn Du mit globalen Namensraum eben dieses meintest und mir mein
    Fehler beim Betrachten auch ins Auge sticht, dann wird mir das klar.
    Ich habe die Anweisung
    PHP-Code:
    if(!isset($_POST["vst"]))
      { 
    auch aus meinem Buch übernommen. Eben weil hier im Script ein verstecktes "vst" enthalten ist. Ergo hatte ich gedacht, das
    braucht das Script um bei der Auswertung zu wissen "In diesem Fall soll ich hier weitergehen". Daß das mein Array
    $daten durcheinander bringt, wußte ich nicht. Aber richtig ist es, die Variablen nach oben zu verfrachten, somit
    läuft das Script jetzt wie gewünscht.

    Und hiermit noch einmal vielen Dank für das Lehrangebot. So lernst du tatsächlich am besten. So gesehen bin auch
    gerne bereit, aufzunehmen, wo es bei meinem JavaScript habert.

    Mfg Archilles

  15. #15
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Zitat Zitat von Archilles
    Hallo undefined,
    gerne bereit, aufzunehmen, wo es bei meinem JavaScript habert.
    Mfg Archilles
    Morgen Archilles,
    Ich gehe mal davon aus das dein Script nun so weit Funktioniert.
    Beim Javascript geht es um folgendes!
    Du überwachst zwar eine Eingabe ob sie durchgeführt wurde oder nicht - jedoch keine Zeichen. Man kann zum Beispiel bei Postleitzahl nur Buchstaben eingeben. Auch sollte Javascript nicht alleine, zur Kontolle stehen. Ich würde es sogar ganz entfernen und die Geschichte in PHP erledigen.
    Ich finde auch wir sollten mal das Forum wechseln weil man hier einfach keine Dateien anhängen kann und der Administrator anscheinent keine böcke hat diese Funktion zu aktivieren, ist die Geschichte in diesem Forum einfach zu umständlich.
    Ich bin Mod auf Flaschbattle.de
    mfg undefined
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •