eindeutiges Inputfeld

tequila slammer

Erfahrenes Mitglied
Hallo Forum,

ich habe nun schon die Suche mit input, id universaltag usw. durchsucht aber leider nicht das gewünschte gefunden.

Ich habe ein Formular, das mehrere input type=text name="menge" value="1" Textfelder besitzt.
Nun habe ich jedoch das Problem, dass wenn ich im ersten Feld "3" eintrage und dann das Formular übergebe, dass dort wieder "1" steht.
Ich hatte nun an das Tag id gedacht. Aber wie kann ich dann später mit php genau auf das geänderte Feld zugreifen?

Das ganze soll ein Minimini Warenkorb werden.
Danke schonmal für Eure Hilfe
 
Warum denn nicht so:

PHP:
<input type=text name="menge" value="<?php echo isset($_POST['menge']) ? abs(intval($_POST['menge'])) : 1; ?>" />

Das ist die Kurzschreibweise für:
PHP:
<input type="text" name="menge" value="
<?php
if(isset($_POST)) {
    echo abs(intval($_POST['menge']));
} else {
echo 1;
}
?>
">

Ist aber beides das selbe

Viele Grüße
 
Zuletzt bearbeitet:
Abend,
bin mir jetzt ganz unsicher, ob ich das richtig verstanden habe. Vermute einfach mal du bist auf deinem Warenkorb und möchtest jetzt die Anzahl eines Produktes ändern. Nun änderst eins und möchtest natürlich wissen, von welchem Produkt etwas geändert wurde. Dazu hab ich jetzt einfach mal ein simples Beispiel gemacht.

( Kann so in eine PHP Datei kopiert und ausgeführt werden )
PHP:
<html>
    <head>
        <title>Help for YOU!</title>
    </head>
    <body>
    
    <!-- FORM -->
    <strong>Formular</strong><br>
    <form action="<?php print( $_SERVER["PHP_SELF"] ); ?>" method="post">
        <input type="hidden" name="product[]" value="PHP-Buch">
        <input type="text" name="menge[]" value="1"><br>
        
        <input type="hidden" name="product[]" value="C++ Buch">
        <input type="text" name="menge[]" value="2"><br>
        
        <input type="hidden" name="product[]" value="Tokio Hotel CD zum kaputt machen">
        <input type="text" name="menge[]" value="4"><br>
        
        <input type="hidden" name="product[]" value="Eclipse Lizenz">
        <input type="text" name="menge[]" value="8"><br>
        
        <input type="hidden" name="product[]" value="Amazon.de Gutschein">
        <input type="text" name="menge[]" value="16"><br>
        <br>
        <input type="submit" name="action" value="Bestellen">
    </form>
    
    <!-- RESULT -->
    <?php
    if( isset( $_POST["action"] ) && $_POST["action"] == "Bestellen" ) {
    
        // get all quantity values (array<int>)
        $aiMenge = $_POST["menge"];
        // get all product descriptions (array<string>)
        $asProduct = $_POST["product"];
        
        // list all values
        for( $i=0; $i < count( $aiMenge ); $i++ ){
            print( ($i+1) . "# <strong>" . $asProduct[$i] . "</strong><br>\n"); 
            print( "Menge: " . $aiMenge[$i] . "<br><br>\n" );
        }
    
    }
    ?>
    
    </body>
</html>

Gruß Manuel
 
leider nicht ganz.
HTML:
<form method="post" action="test.php?menue=1">
<input type="text" name="menge" value="1">x <input type="submit" name="add" value="in den Warenkorb legen"><input type="hidden" name="Artikel" value="1">
<input type="text" name="menge" value="1">x <input type="submit" name="add" value="in den Warenkorb legen"><input type="hidden" name="Artikel" value="2">
<input type="text" name="menge" value="1">x <input type="submit" name="add" value="in den Warenkorb legen"><input type="hidden" name="Artikel" value="3">
<input type="text" name="menge" value="1">x <input type="submit" name="add" value="in den Warenkorb legen"><input type="hidden" name="Artikel" value="4">
<input type="text" name="menge" value="1">x <input type="submit" name="add" value="in den Warenkorb legen"><input type="hidden" name="Artikel" value="5">
</form>

nun gebe ich bei Artikel 2 bei Menge 12 und klicke auf in den Warenkorb legen. In diesem steht dann aber nur Menge 1, da das letzte input Feld mit 1 belegt ist.
 
So geht das auch nicht. Du könntest die Menge in einem Array hinterlegen, also so:
HTML:
<form method="post" action="test.php?menue=1">
<input type="text" name="menge[1]" value="1">x <input type="submit" name="add" value="in den Warenkorb legen">
<input type="text" name="menge[2]" value="1">x <input type="submit" name="add" value="in den Warenkorb legen">
<input type="text" name="menge[3]" value="1">x <input type="submit" name="add" value="in den Warenkorb legen">
<input type="text" name="menge[4]" value="1">x <input type="submit" name="add" value="in den Warenkorb legen">
<input type="text" name="menge[5]" value="1">x <input type="submit" name="add" value="in den Warenkorb legen">
</form>

Und der PHP-Code:
PHP:
<?php
$artikel = array();
for($i = 1, $j = count($_POST['menge']); $i <= $j; $i++)
{
	$artikel[$i] = $_POST['menge'][$i];
}
echo 'Der Artikel mit ID 2 liegt ' . $artikel[2] . 'x im Warenkorb.';
?>
 
Mhm, so wie du das lösen wolltest, werden nunmal alle Felder abgeschickt und auch "in den Warenkorb gelegt".
Also habe mir deine Seite mal angeschaut -.- da ist soweit ich sehe nur 1 Artikel pro Seite ^^.
So nun mal zu deinem Problem. Du willst also nur einen Artikel jeweils in den Warenkorb legen. Würde dafür dann eine Schleife verwenden und das Endprodukt würde dann etwa so aussehen.
HTML:
<form method="post" action="test.php?menue=1">
<input type="text" name="menge[0]" value="1" size="3">x
<input type="submit" name="add[0]" value="in den Warenkorb legen">
<input type="hidden" name="Artikel[0]" value="1"><br></form>

<form method="post" action="test.php?menue=1">
<input type="text" name="menge[1]" value="1" size="3">x
<input type="submit" name="add[1]" value="in den Warenkorb legen">
<input type="hidden" name="Artikel[1]" value="2"><br></form>
So würdest du nun einen Datensatz jeweils abschicken. Eine andere Idee von mir wäre mit Radiobutton ...
HTML:
<form method="post" action="test.php?menue=1">
<input type="radio" name="will ich" value="Artikel[0]">
<input type="text" name="menge[0]" value="1" size="3">x
<input type="submit" name="add" value="in den Warenkorb legen">
<input type="hidden" name="Artikel[0]" value="1"><br>

<input type="radio" name="will ich" value="Artikel[1]">
<input type="text" name="menge[1]" value="1" size="3">x
<input type="submit" name="add" value="in den Warenkorb legen">
<input type="hidden" name="Artikel[1]" value="2"><br>

<input type="radio" name="will ich" value="Artikel[2]">
<input type="text" name="menge[2]" value="1" size="3">x
<input type="submit" name="add" value="in den Warenkorb legen">
<input type="hidden" name="Artikel[2]" value="3"></form>
Hast auch hier mehrere Submit Button aber schickst auch hier alle Daten, verwendest dort dann aber nur die Daten die du Ausgewählt hast ... Also auch wieder Schleife -.- Musst halt prüfen ob ein Radiobutton aktiviert wurde oder nicht ...
 
Ja das ist eben wie gesagt immer ein eigenes Formular ...
HTML:
<form method="post" action="test.php?menue=1">
<input type="text" name="menge[0]" value="1" size="3">x
<input type="submit" name="add[0]" value="in den Warenkorb legen">
<input type="hidden" name="Artikel[0]" value="1"><br></form>

<form method="post" action="test.php?menue=1">
<input type="text" name="menge[1]" value="1" size="3">x
<input type="submit" name="add[1]" value="in den Warenkorb legen">
<input type="hidden" name="Artikel[1]" value="2"><br></form>

Wie du sehen kannst, gehen beide Formulare zur gleichen Seite, es werden jedoch nur die Daten von einem Formular gesendet ... Die aufteilung ist ganz einfach die, dass jedes Formlar zuerst den Namen hat und dann 2 eckige klammern

HTML:
menge[]
add[]
artikel[]

Daraus wird dann im Browser 0,1,2,3 etc. ^^ wie du bei meinem Beispiel sehen kannst -.-
Jetzt wird ein Button angeklickt und die Daten eines Formulars übertragen -.- und schon haste das was du willst ...

Was du mal testen müsstest ist, ob es auch geht, wenn du nur dem Submit-Button diese Klammern jeweils verpasst [] dann könntest du die anderen ohne diese Lassen und bei der Seite die du aufrufst dann eben jede Variable normal nutzen -.-

so meinte ich dass
HTML:
<form method="post" action="test.php?menue=1">
<input type="text" name="menge" value="1" size="3">x
<input type="submit" name="add[0]" value="in den Warenkorb legen">
<input type="hidden" name="Artikel" value="1"><br></form>

<form method="post" action="test.php?menue=1">
<input type="text" name="menge" value="1" size="3">x
<input type="submit" name="add[1]" value="in den Warenkorb legen">
<input type="hidden" name="Artikel" value="2"><br></form>
 
Zuletzt bearbeitet:
Zurück