Generierte Codes

Ich habe jetzt 2 Forms angelegt.
Das eine Form zum generieren des Codes und die Ausgabe in Form 2 gelegt.
Das zweite Form zum Speichern in die Datenbank..
Leider wird jetzt nichts mehr gespeichert..

PHP:
<form action="" method="POST">
                <div class="col-lg-12">
                    <?php
                        function generateCode($laenge = 13) {
                           $zeichen = "0123456789";
                           $text="";
                           mt_srand ((double) microtime()*100000000000);
                           for ($i=0; $i<$laenge; $i++) {
                              $text .= $zeichen{mt_rand(0,strlen($zeichen))};
                              $gutschein_code2 = $text;
                           }
                           return $text;
                        }
                    ?>
                    <label>Anzahl</label>
                    <input type="text" class="form-control" name="gutschein_code2">
                    <br />
                    <button type='submit' class='btn btn-success btn-xs'>Code generieren</button>
                    <hr />
                </div>
              </form> 
            <form action="" method="POST">
                <?php                       
                    $gutschein_code2 = $_POST['gutschein_code2'];
                    for( $i = 1; $i <= $gutschein_code2; $i++ ) {
                    printf( "<input type='text' class='form-control' name='gutschein_code2%s' value='%s'><br />",
                    $i, generateCode( ) );
                    }
                ?> 
                    <div class="col-lg-6">
                        <label>Einrichtung</label>
                        <input type="text" class="form-control" name="gutschein_code_einrichtung" value="<?php echo $gutschein_code_einrichtung ?>">
                    </div>
                    <div class="col-lg-6">
                        <label>Ort</label>
                        <input type="text" class="form-control" name="gutschein_code_ort" value="<?php echo $gutschein_code_ort ?>">
                    </div>
                   
                    <div class="col-lg-3">
                    </div>
                    <div class="col-lg-6">
                        <input type="hidden" class="form-control"  name="gutschein_code1" value=" ">
                        <input type="hidden" class="form-control"  name="gutschein_code_vorname" value=" ">
                        <input type="hidden" class="form-control"  name="gutschein_code_nachname" value=" ">
                    </div>
                </div>
                <hr />
                <button type='submit' class='btn btn-success btn-xs'>Code speichern</button>
            </form>
 
Hi,

hm, die im Formular erzeugten Inputs haben alle den Namen "gutschein_code2%s".
Das daraus resultierende POST-Array sieht dann wie folgt aus:

gutschein_code21, gutschein_code22, gutschein_code23, gutschein_code24 .. usw.

Ich glaube nicht, dass das dein Ziel ist?!

Darauf aufbauend, dass Du die Datensätze in der Datenbank untereinander einpflegen möchtest, würde ich aus diesen Codes eher ein Array bauen:

PHP:
name="gutschein_code2[%s]"


Viele Grüße
goto;
 
Genau das habe ich auch versucht..
PHP:
<form action="" method="POST">
                <div class="col-lg-12">
                    <?php
                        function generateCode($laenge = 13) {
                           $zeichen = "0123456789";
                           $text="";
                           mt_srand ((double) microtime()*100000000000);
                           for ($i=0; $i<$laenge; $i++) {
                              $text .= $zeichen{mt_rand(0,strlen($zeichen))};
                              $gutschein_code2 = $text;
                           }
                           return $text;
                        }
                    ?>
                    <label>Anzahl</label>
                    <input type="text" class="form-control" name="gutschein_code2">
                    <br />
                    <button type='submit' class='btn btn-success btn-xs'>Code generieren</button>
                    <hr />
                </div>
              </form> 
            <form action="" method="POST">
                    <div class="col-lg-6">
                        <label>Einrichtung</label>
                        <input type="text" class="form-control" name="gutschein_code_einrichtung" value="<?php echo $gutschein_code_einrichtung ?>">
                    </div>
                    <div class="col-lg-6">
                        <label>Ort</label>
                        <input type="text" class="form-control" name="gutschein_code_ort" value="<?php echo $gutschein_code_ort ?>">
                    </div>
                    <div class="col-lg-6">
                        <?php                       
                        for( $i = 1; $i <= $gutschein_code2; $i++ ) {
                        printf( "<input type='text' class='form-control' name='gutschein_code2[%s]' value='%s'><br />",
                        $i, generateCode( ) );
                        }
                        ?> 
                    </div>
                </div>
                <hr />
                <button type='submit' class='btn btn-success btn-xs'>Code speichern</button>
            </form>

Leider kommt dies heraus.. Siehe Bild..
Eingegeben 10 Stück Einrichtung: Test Schule Ort Kassel
 

Anhänge

  • Bildschirmfoto 2017-09-20 um 17.49.35.png
    Bildschirmfoto 2017-09-20 um 17.49.35.png
    10,2 KB · Aufrufe: 3
  • Bildschirmfoto 2017-09-20 um 17.50.13.png
    Bildschirmfoto 2017-09-20 um 17.50.13.png
    14,1 KB · Aufrufe: 3
Hi,

das Array muss natürlich noch durchlaufen werden, damit die einzelnen Einträge auch in die Datenbank kommen.

quick and dirty example:
PHP:
$gutscheinCodeArray = $_POST['gutschein_code2']; // Array
if(!is_array($gutscheinCodeArray)){
     throw new Exception('xyc'); 
}

foreach($gutscheinCodeArray as $value){
    $singleCode = $value;
    $stmt = $this->db->prepare('INSERT INTO table (gutscheinspalte,xyz) VALUES (:gutscheinspalte, :xyz)');
    $stmt->bindParam(':gutscheinspalte', $singleCode);
    // etcpp
}


best practice: (ohne query-loop)

PHP:
$gutscheinCodeArray = $_POST['gutschein_code2']; // Array
$sql = "INSERT INTO table (gutscheinspalte,xyz) values ";

$valuesArr = array();
foreach($gutscheinCodeArray as $value){
    $valuesArr[] ("('mysql_real_escape_string($value)')";
}
$sql .= implode(',', $valuesArr);                 

$stmt = $this->db->prepare($sql);
                  // ...
 
Zuletzt bearbeitet:
Guten Morgen goto,

ich habe versucht, mein Script zu erweitern..
Leider ohne Erfolg.. Ergebnis: Nur eine weiße Seite beim aufrufen der Seite..

Nochmals meine Script:
PHP:
<h3>Gutschein-Code für Einrichtungen/Schulen:</h3>
            <hr />
            <div class="row">
            <form action="" method="POST">
                <div class="col-lg-12">
                    <?php
                        function generateCode($laenge = 13) {
                           $zeichen = "0123456789";
                           $text="";
                           mt_srand ((double) microtime()*100000000000);
                           for ($i=0; $i<$laenge; $i++) {
                              $text .= $zeichen{mt_rand(0,strlen($zeichen))};
                              $gutschein_code2 = $text;
                           }
                           return $text;
                        }
                    ?>
                    <label>Anzahl</label>
                    <input type="text" class="form-control" name="gutschein_code2">
                    <br />
                    <button type='submit' class='btn btn-success btn-xs'>Code generieren</button>
                    <hr />
                </div>
              </form> 
            <form action="" method="POST">
                    <div class="col-lg-6">
                        <label>Einrichtung</label>
                        <input type="text" class="form-control" name="gutschein_code_einrichtung" value="<?php echo $gutschein_code_einrichtung ?>">
                    </div>
                    <div class="col-lg-6">
                        <label>Ort</label>
                        <input type="text" class="form-control" name="gutschein_code_ort" value="<?php echo $gutschein_code_ort ?>">
                    </div>
                    <div class="col-lg-6">
                        <?php   
                        $gutschein_code2 = $_POST['gutschein_code2'];                   
                        for( $i = 1; $i <= $gutschein_code2; $i++ ) {
                        printf( "<input type='text' class='form-control' name='gutschein_code2[%s]' value='%s'><br />",
                        $i, generateCode( ) );
                        }
                        ?> 
                    </div>
                    <div class="col-lg-6">
                        <input type="hidden" class="form-control"  name="gutschein_code1" value=" ">
                        <input type="hidden" class="form-control"  name="gutschein_code_vorname" value=" ">
                        <input type="hidden" class="form-control"  name="gutschein_code_nachname" value=" ">
                    </div>
                </div>
                <hr />
                <button type='submit' class='btn btn-success btn-xs'>Code speichern</button>
            </form>

Ein Form zum generieren der Codes, was auch funktioniert und als Inputfelder ausgegeben wird.
Ein Form zum Speichern der erzeugten Codes..

Dazu das Insert:
PHP:
$gutscheinCodeArray = $_POST['gutschein_code2']; // Array
if(!is_array($gutscheinCodeArray)){
     throw new Exception('xyc'); 
}
foreach($gutscheinCodeArray as $value){
    $singleCode = $value;
    $stmt = $this->db->prepare('INSERT INTO bewerbungsgutscheincode (gutschein_code1, gutschein_code2, gutschein_code_vorname, gutschein_code_nachname, gutschein_code_einrichtung, gutschein_code_ort, xyz)
    VALUES (:gutschein_code1, :gutschein_code2, :gutschein_code_vorname, :gutschein_code_nachname, :gutschein_code_einrichtung, :gutschein_code_ort, :xyz)');
    $stmt->bindParam(':gutschein_code2', $singleCode);
    // etcpp
}
Worin liegt der Fehler..???
Ich würde gern erreichen,
das die Codes , die Einrichtung und der Ort untereinander in die Tabelle gespeichert werden.
Die weiteren Spalten, wie Vorname, Nachname und gutschein_code1 werden für ein anderes Form benötigt, wo ich keine Sammelcodes für benötige.
 
Zurück