2016-09-17 6 views
0

Ich arbeite am Erstellen einer PHP-Datei und eine Sache, die ich tun möchte, ist ein Array (Beispiel 1). Von dem, was ich verstehe, und Array ist wie eine Liste, und ich möchte auch Elemente auf der Liste eingeben (Beispiel 2). Die Anzahl der Elemente in dem Array muss jedoch durch eine Zahl bestimmt werden, die über ein HTML-Formular eingegeben wird (Beispiel 3).Wie wird die Anzahl der Elemente in einem Array basierend auf der HTML-Formulareingabe festgelegt?

Beispiel 1:

<?php 
$a=array("red","green"); 
array_push($a,"blue","yellow"); 
print_r($a); 
?> 

</body> 
</html> 
</code>  

Beispiel 2:

<!DOCTYPE html> 
<html> 
<body> 

<?php 
$a=array("red","green"); 
array_push($a,"$_POST["color3"]","$_POST["color4"]"); 
print_r($a); 
?> 

</body> 
</html> 

Beispiel 3.

<ol> 
<form action="finished.php" method="post"> 
<li><input type="text" name="color3"></li> 
<li><input type="text" name="color4"></li> 
</form> 
</ol> 

EDIT: Ich hoffe, das alles richtig formatiert ist und Sie verstehe die Frage. Um zu wiederholen: Die erste Seite ist leer mit nur einem Formular; Eingabefeld, in das Sie eine beliebige Zahl eingeben (X). Die zweite Seite hat die gleiche Zeile immer wieder (abhängig von der Zahl X von der vorherigen Seite), es ist Zeile: <li><input type="text" name="color Y"></li> Y sollte von 1 bis unendlich unendlich zählen, bis X erreicht ist. Die letzte Seite druckt alles in einer Liste (Array?).

Zum Beispiel: Auf der ersten Seite geben wir die Nummer 3 ein. Auf der zweiten Seite haben wir 3 Felder zur Eingabe der Namen unserer gewählten Farben: Rot, Blau, Gelb. Auf der letzten Seite sehen wir eine Liste unserer drei Farben: Rot, Blau und Gelb.

Hoffe, das hilft.

+0

Die Formatierung sieht nicht gut aus. : | –

+0

Problem behoben! Das tut mir leid. –

+1

Nun, Formatierung ist gut, ich verstehe nicht ganz, was Sie wirklich wollen. :) –

Antwort

1

Ich glaube, ich habe es, was Sie wollen (nach mehr als einmal zu lesen). Lass es mich wissen, wenn ich es richtig verstanden habe. Nehmen wir an, Sie verwenden 3 verschiedene Dateien (wie Sie in Ihrer Frage geschrieben haben).

file1.php (eine einfache Form mit 1 Eingang und 1-Senden-Schaltfläche):

<form action="file2.php" method="post"> 
    <input type="text" name="amount" placeholder="The amount of elements"> 
    <input type="submit" value="Enter"> 
</form> 

file2.php (überprüfen, ob $_POST und der Wert ist eine ganze Zahl):

if (!empty($_POST['amount'])) { 
    if (!is_int($_POST['amount'])) { 
     exit('Not an integer'); 
    } 
    ?> 
    <form action="file3.php" method="post"> 
    <?php 
    for ($i = 0; $i < $_POST['amount']; $i++) { 
     echo '<input type="text" name="colors[]" placeholder="Enter color name"><br>'; 
    } 
    ?> 
    <input type="submit" value="Done"> 
    </form> 
    <?php 
} else { 
    exit('Only $_POST method is allowed.'); 
} 

file3.php (alle Ergebnisse erhalten und ein Array in variablen speichern):

if (!empty($_POST)) { 
    $colors = $_POST['colors']; 
    foreach ($colors as $color => $value) { 
     echo '<li>'.$value.'</li>'; 
    } 
    exit; 
} else { 
    exit('Only $_POST method is allowed.'); 
} 

Wir können noch mehr Sicherheit hinzufügen (z. B. prüfen, ob es nicht leer ist, usw.), aber ich füge nur grundlegende Dinge hinzu.

+0

Ich änderte Zeile 3 + 4 in Datei 2.php '{ Exit ('Nicht eine ganze Zahl'); } 'durch Entfernen dieses Blocks. Und es erlaubt mir durch Eingabe der Nummer, und es schafft es gut. –

+0

Das ist gut, wir sind auf halbem Weg, aber meine Schuld. Ich bin nicht sicher, warum ich Array oben gesagt habe, ich möchte Seite 3 für sie in eine Liste eingegeben werden. Also die Zeile '

  • ' von meinem Beispiel drei brauche ich. Also ** Seite 2 ** lässt uns _3_ Farben schreiben^Zum Beispiel^jetzt auf ** Seite 3 ** wir wollen _3_ Zeilen dieses '
  • ' Beispiel. Ist das sinnvoll? –

    +0

    @WilliamBachynsky Dann können Sie so schreiben: 'foreach ($ Farben als $ Farbe => $ Wert) {Echo '

  • '. $ Wert. '
  • '; } 'Dies wird die Liste aller Farben ausdrucken. –

    2
    <ol> 
    <form action="finished.php" method="post"> 
    <li><input type="text" name="data['color3']"></li> 
    <li><input type="text" name="data['color4']"></li> 
    </form> 
    </ol> 
    

    dann im finished.php

    $_POST['data']; 
    
        print_r($_POST);//print out the whole post 
        print_r($_POST['data']); //print out only the data array 
    
    +0

    Siehe Bearbeiten auf der Hauptseite. –

    Verwandte Themen