Formulardaten aus HTML in PHP in eine Variable einlesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Formulardaten aus HTML in PHP in eine Variable einlesen

    Hallo zusammen,
    ich bin absoluter PHP-Neuling (seit gestern Abend) und brauche dringend eure Hilfe.
    Ich habe ein Bestellformular in HTML erstellt. Und zwar gibt es dort den Produktnamen, den Preis und die Menge. Die Menge kann man in ein Eingabefeld eintragen.
    Nun möchte ich mir in einer Mail die einzelnen Produkte mit dem dazugehörigen Gesamtpreis (Preis * Menge) anzeigen/ausgeben lassen.
    Ich kriege es hin, die Daten einzelnd jeweis über $_POST['Produktnamen']; auszulesen, aber ich hätte gerne nur 3 Variablen (eine für den Namen, eine für die Menge und eine für den Preis), mit denen ich das komplette Formular auslesen kann und dann über die beiden Variablen für Preis und Menge die Gesamtmenge dazu errechnen kann. Geht das überhaupt? Wie sieht es aus mit Datenbankanbindung? Brauch ich sowas dafür? Wie funzt das?
    Ich habe in Perl solch ein script gelesen, dass über eine Variable alle Namen ausgelesen hat:

    $Sendmail_Prog = "/usr/lib/sendmail";

    use CGI;

    $query = new CGI;
    @names = $query->param;

    $delimiter = $query->param('delimiter');
    $mailto = $query->param('mailto');
    $returnhtml = $query->param('return');
    $subject = $query->param('subject');

    $mailtext = "";
    foreach(@names) {
    $name = $_;
    @values = "";
    @values = $query->param($name);
    if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
    foreach $value (@values) {
    $mailtext = $mailtext.$name;
    $mailtext = $mailtext.$delimiter;
    $mailtext = $mailtext.$value."\n";
    }
    }
    }
    ...

    das hat funktioniert...

    Aber wie geht das mit PHP???

    Bitte helft mir, ist wirklich dringend!!!

    Vielen Dank im Voraus für eure Mühen!!!

    Viele Grüße,
    Nathalie

  • #2
    Hi,

    wie sieht denn dein Formular aus (Quellcode)

    Kommentar


    • #3
      mal ab vom problem: ich wuerde den preis niemals aus dem gesendeten formular nehmen, sondern immer ueber das produkt auf den originaldatenbestand zugreifen. im formular sollte der preis nur zur information fuer den benutzer stehen. ansonsten oeffnest du tuer und tor fuer betrueger.
      1101100 1101001 1100110 1100101 1101001 1110011 1100001 1100010 1101001 1110100 1100011 1101000

      /(bb|[^b]{2})/

      Kommentar


      • #4
        @Patrick_PQ:
        meintest du den HTML-Code?
        Hier ist er:

        <form action="http://www.big-food.net/Websitetest/bestellformular.php" method="post" target="_self">

        <table width="950" border="0" cellpadding="0" cellspacing="4" align="center">
        <tr>
        <td width="84"></td>
        <td width="240"></td>
        <td width="49" valign="top"><h3>&nbsp;</h3></td>
        <td width="82" valign="top"><h3 align="right" class="Stil1">St&uuml;ckpreis</h3></td>
        <td width="70" valign="top"><h3>Anzahl</h3></td>
        <td width="44" valign="top"></td>
        <td width="159" valign="top"></td>
        <td width="42" valign="top"><h3>&nbsp;</h3></td>
        <td width="82" valign="top"><h3 align="right">St&uuml;ckpreis</h3></td>
        <td width="54" valign="top"><h3>Anzahl</h3></td>
        </tr>
        <tr>
        <td><h2>Käse:</h2></td>
        <td></td>
        <td></td>
        <td><h3 align="right">&nbsp;</h3></td>
        <td><h3>&nbsp;</h3></td>
        <td><h2></h2></td>
        <td></td>
        <td></td>
        <td><h3 align="right">&nbsp;</h3></td>
        <td><h3>&nbsp;</h3></td>
        </tr>
        <tr>
        <td><a href="Produkte/emmentaler.htm" target="_blank"><img src="http://www.big-food.net/Bilder/Website/mini/emmentaler.gif" border="0" alt="Für nähere Produktinformationen bitte auf das Bild klicken"></a></td>
        <td>Emmentaler</td>
        <td>0,7 kg</td>
        <td><div align="right">4,22 &euro;</div></div></td><input name="Emmentaler_P" type="hidden" size="0" maxlength="0" class="field" value="4.22">
        <td><input name="Emmentaler" type="text" size="5" maxlength="5" class="field" value="0"></td>
        <td><a href="Produkte/amsterdamer.htm" target="_blank"><img src="http://www.big-food.net/Bilder/Website/mini/amsterdamer.gif" border="0" alt="Für nähere Produktinformationen bitte auf das Bild klicken"></a></td>
        <td>Amsterdamer Käse<br>(ganzes Rad)</td>
        <td>4,2 kg</td>
        <td><div align="right">21,07 &euro;</div></td><input name="Amsterdamer_P" type="hidden" size="0" maxlength="0" class="field" value="21.07">
        <td><input name="Amsterdamer" type="text" size="5" maxlength="5" class="field" value="0"></td>
        </tr>
        ...

        <br>
        <fieldset><legend><b>Liefer-/Rechnungsanschrift</b></legend>
        <table width="950" border="0" align="center" cellpadding="0" cellspacing="4">

        <td align="right">Firma:</td>
        <td><input name="absender_firma" type="text" size="30" maxlength="50" class="field"></td>
        <td>&nbsp;</td><td>&nbsp;</td></tr>
        <tr>
        <td align="right">*Vor- und Zuname:</td>
        <td><input name="absender_name" type="text" size="30" maxlength="30" class="field"></td>
        <td>&nbsp;</td><td>&nbsp;</td></tr>
        <tr>
        <td align="right">*Straße:</td>
        <td><input name="absender_strasse" type="text" size="30" maxlength="50" class="field"></td>
        <td align="right">*Hausnummer:</td>
        <td><input name="absender_hausnummer" type="text" size="5" maxlength="10" class="field"></td>
        </tr>
        <tr>
        <td align="right">*PLZ:</td>
        <td><input name="absender_plz" type="text" size="5" maxlength="5" class="field"></td>
        <td align="right">*Wohnort:</td>
        <td><input name="absender_ort" type="text" size="30" maxlength="30" class="field"></td>
        </tr>
        <tr>
        <td align="right">*Telefon:</td>
        <td><input name="absender_telefon" type="text" size="30" maxlength="30" class="field"></td>
        <td align="right">Telefax:</td>
        <td><input name="absender_telefax" type="text" size="30" maxlength="30" class="field"></td>
        <td>&nbsp;</td><td>&nbsp;</td></tr>
        <tr>
        <td align="right">*E-Mail:</td>
        <td><input name="absender_mail" type="text" size="30" maxlength="30" class="field"></td>
        <td>&nbsp;</td><td>&nbsp;</td></tr>
        </table>

        <table border="0" cellpadding="0" cellspacing="4" width="950" align="center">
        <tr>
        <td>
        <p align="center">Die mit * gekennzeichneten Felder sind Pflichtfelder und müssen ausgefüllt werden.</p> </td>
        </tr>
        <tr>
        <td>&nbsp;
        </td>
        </tr>
        <tr>
        <td>
        <div align="center">
        <input type="submit" name="button" value="Bestellung abschicken" class="field">
        <input type="reset" value="Vorgang abbrechen" class="field">
        </div></td>
        </tr>
        </table>

        </fieldset>

        </div>
        </form>


        Das Formular ist auch noch nicht ganz fertig...

        @loci:
        wie meinst du das? ich nehme den wert, der auf der Website steht in nem versteckten input-tag (anders wusste ich mir nicht zu helfen...)
        wie sollte ich es deiner Meinung nach machen? Das hab ich nicht ganz verstanden, sorry!

        VG,
        Nathalie

        Kommentar


        • #5
          PHP-Code:
          $deine_variable=$_POST['NAME_DES_INPUTFELDES']; 
          Er meint mit Preis vom Datenbestand abfrage, den Preis auf der Datenbank zu holen und NICHT über das Formular mitzusenden, weil man selbiges SEHR LEICHT verändern kann (und somit auch den Preis)

          Kommentar


          • #6
            Das heisst, ohne Datenbankanbindung ist das übertragen der Daten (hier der Preis) an den Anbieter per email nie sicher?
            Oder gibt es da eine andere Möglichkeit?

            das mit der Variablen hab ich auch schon so gemacht, das klappt auch.
            Aber wenn ich 50 Produkte habe, dann muss ich das ganze ja 50x so in php eingeben, oder?

            Ich dachte, es gibt vielleicht eine Möglichkeit über eine Variable alle input-Daten, also alle 50 input-namen, in mein php einzulesen in der Art und Weise wie ein array zum Beispiel. Und dann kann ich die Daten mit PHP über eine E-mail an den Anbieter schicken.
            Verstehst du, was ich meine?
            Zuletzt geändert von natket; 30.04.2005, 15:00.

            Kommentar


            • #7
              stichwort schleife

              stichwort grundlagen

              Kommentar


              • #8
                Original geschrieben von natket
                Das heisst, ohne Datenbankanbindung ist das übertragen der Daten (hier der Preis) an den Anbieter per email nie sicher?
                Oder gibt es da eine andere Möglichkeit?
                Nicht das übertragen per Email ist unsicher, sondern die Angabe des Preises als Feld in der HTML-Datei.

                Original geschrieben von natket
                in der Art und Weise wie ein array zum Beispiel.
                imo sieht die Stuktur von $_POST['asd'] doch sehr nach einem array aus....

                Kommentar


                • #9
                  kann man denn das Feld manipulieren, wenn es den Status "hidden" hat?

                  Ich weiss halt nicht, wie ich das array anwenden soll, dass ich die Daten alle auslesen kann.

                  Kann mir vielleicht jemand ein kleines Beispiel zum Verständnis posten?

                  Vielen Dank,

                  Nathalie

                  Kommentar


                  • #10
                    So isses:
                    - Ich öffne die Seite mit dem Formular.
                    - Ich speicher die Seite und öffne sie in einem Texteditor.
                    - Ich ändere im Quelltext den value des hidden-Felds auf 0.
                    - Ich lade die geänderte Seite im Browser.
                    - Ich schicke das Formular ab.
                    - Du nimmst arglos den Preis aus dem Formular entgegen (der ist nun 0).
                    - Ich freue mich auf die Rechnung!

                    So sollte es sein:
                    ... (wie oben)
                    - Ich schicke das Formular ab.
                    - Du nimmst den Preis aus einer Datei/Datenbank auf dem Server (den kann ich nicht ändern, komme nicht ran).
                    - Ich freue mich nich so.

                    Nun sollte erstmal klar sein, wie der Hase läuft.
                    Wie man Arrays verwendet steht auf http://php.net und
                    ein
                    PHP-Code:
                    echo '<pre>'print_r($_POST); echo '</pre>'
                    ganz oben im Script bringt weitere Erleuchtung.

                    Kommentar


                    • #11
                      Vielen Dank für die Antwort!!!

                      Dann muss ich wohl schauen, dass ich meinen Webspace um ne Datenbank erweitere...

                      Kommentar


                      • #12
                        Original geschrieben von natket
                        Dann muss ich wohl schauen, dass ich meinen Webspace um ne Datenbank erweitere...
                        es ist nicht wichtig, wo du die daten ablegst - ob das jetzt eine datenbank, eine textdatei oder auch nur variablen/konstanten in deinem script sind, wo du die preise ablegst, ist eigentlich egal.
                        und wenn du versteckte formularfelder mit den werten vorbelegst, machst du ja im grunde auch schon nichts anderes - du gibst den wert vor.

                        nur halt auf eine sehr unsichere weise, weil ich als nutzer diese ohne probleme verändern kann.
                        dass ist in etwa so, als ob im supermarkt alle preisetiketten nur mit bleistift beschrieben wären, und jeder kunde hat einen radiergummi dabei - und dann der kasse erfolgt dann keine kontrolle über barcode o.ä. mehr, sondern es wird einfach der preis abgerechnet, der auf dem preisschild steht - nicht gut.

                        also sorge dafür, dass die preise irgendwo in deinem script/auf deinem server abgelegt werden - und nicht über wege übergeben werden, die der client nach belieben manipuliert haben kann.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Vielen Dank für die schnelle Antwort.

                          Das heißt also, es reicht aus, wenn ich die Preise direkt in meinem PHP-Script in Variablen anlege oder in einer Textdatei auf dem Server... Cool, und was ist die bessere Variante (oder vielleicht die einfachere)?

                          Tolles Forum, ich bin begeistert!
                          DANKE!!!

                          Kommentar


                          • #14
                            ich würde vermuten, das variablen die einfaachere sind.

                            probiers einfach aus, welches dir besser gefällt.

                            Kommentar


                            • #15
                              Naja die beste Möglichkeit ist wohl die Kombination aus "in Datei" und "im PHP-Script".

                              PHP-Code:
                              <?php
                              // Preisliste: 'Artikel' => Preis
                              $preise = array(
                                  
                              'Produkt 1' => 10.50,
                                  
                              'Verpackung' => 2,
                                  
                              'Versand' => 5.29
                              );
                              ?>
                              Preisänderungen sind so kein Problem und um mit den Preisen in deinen Scripten arbeiten zu können genügt ein
                              PHP-Code:
                              include 'preisdatei.php'
                              Zuletzt geändert von onemorenerd; 01.05.2005, 12:49.

                              Kommentar

                              Lädt...
                              X