2016-05-29 21 views
0

Also im Grunde, was ich versuche zu tun ist mit einer Schleife, um mehrere Bilder anzuzeigen und erstellen Sie eine entsprechende Schaltfläche für jedes Bild. Wenn ich auf die entsprechende Schaltfläche drücke, wird das Bild in einer anderen Datenbank gespeichert.Loop, um mehrere Schaltflächen in HTML und PHP zu erstellen

Der erste Teil zeigt sich recht gut. Im zweiten Teil kann ich jedoch kaum herausfinden, wie man den entsprechenden Button für jedes Bild bestimmt.

<?php while($row=mysqli_fetch_array($result)) { ?> 
 
<div id="item"> 
 
    <?php echo '<img height="200" width="200" src="data:image;base64,'.$row[2]. '">';?> 
 
    </br> 
 
    <?php echo $row[ "name"];?> 
 
    </br> 
 
    <?php echo $row[ "price"];?> 
 
    </br> 
 
    <?php echo $row[ "description"];?> 
 
    </br> 
 
<form>Quantity: 
 
    <input type="text" value="" name="quantity" /> 
 
    </br> 
 
    <input type="submit" value="add to cart" name="cart" /> 
 
</form> 
 
    <?php 
 
if (isset($_POST[ "cart"])){ 
 
$addtoname=$_SESSION[ 'username']; 
 
$addtoprice=$row[ 'price']; 
 
$addtodiscount=$row[ 'discount']; 
 
$addtoid=$row[ 'id']; 
 
$addtoimage=$row[ 'image']; 
 
$addtoquantity=$_POST[ 'quantity']; 
 
$hostname="localhost" ; 
 
$username="root"; 
 
$password="" ; 
 
$database="myproject" ; $con=mysqli_connect($hostname,$username,$password,$database) or die(mysqli_error()); 
 
$select=mysqli_select_db($con, "myproject")or die("cannnot select db"); mysqli_query($con,"INSERT INTO cart(username,quantity,price,image,id,discount) VALUES('$addtoname','$addtoquantity','$addtoprice','$addtoimage','$addtoid','$addtodiscount')"); 
 
echo "success"; 
 
} 
 
else{ 
 
echo "fail"; 
 
}?> 
 
</div> 
 
<?php }//end of while ?>

Es scheint, wie es immer in isset ($ _ POST [ "Warenkorb"])) gehen zu scheitern und nie laufen

Alle Tipps werden sehr geschätzt.

Danke

+0

$ _POST ['Menge']; Woher kommt das? Sie haben kein Formular, das die Daten in $ _POST übermittelt, Sie sollten ein Formular in Ihre Eingaben einfügen –

+1

@Try, ** Dies ist ein völlig falsches Codierungsmuster. Sie sollten den Workflow zuerst korrigieren. ** –

+0

Gibt es mehr Code, den Sie uns nicht zeigen? Ich sehe ein Eingabefeld und eine Schaltfläche, aber keine notwendige Form, damit diese Elemente funktionieren. –

Antwort

1

Erstellen 2-Dateien eingereicht wurde:

von der DB bevölkerte

One mit der tatsächlichen Form:

<?php while($row=mysqli_fetch_array($result)) { ?> 
<div id="item"> 
<form method="post" action="cartReceiver.php">Quantity: 
    <?php echo '<img height="200" width="200" src="data:image;base64,'.$row[2]. '">';?> 
    </br> 
    <?php echo $row[ "name"];?> 
    </br> 
    <?php echo $row[ "price"];?> 
    </br> 
    <?php echo $row[ "description"];?> 
    </br> 
    <input type="text" value="" name="quantity" /> 
    </br> 
    <input type="submit" value="add to cart" name="cart" /> 
</form> 
</div> 
<?php }//end of while ?> 

Und dann der Empfänger der in Form erklärt Aktion (cartReceiver.php):

<?php 
if (isset($_POST[ "cart"])){ 
$addtoname=$_SESSION[ 'username']; 
$addtoprice=$row[ 'price']; 
$addtodiscount=$row[ 'discount']; 
$addtoid=$row[ 'id']; 
$addtoimage=$row[ 'image']; 
$addtoquantity=$_POST[ 'quantity']; 
$hostname="localhost" ; 
$username="root"; 
$password="" ; 
$database="myproject" ; $con=mysqli_connect($hostname,$username,$password,$database) or die(mysqli_error()); 
$select=mysqli_select_db($con, "myproject")or die("cannnot select db"); mysqli_query($con,"INSERT INTO cart(username,quantity,price,image,id,discount) VALUES('$addtoname','$addtoquantity','$addtoprice','$addtoimage','$addtoid','$addtodiscount')"); 
echo "success"; 
} 
else{ 
echo "fail"; 
} 

Bitte beachte, dass ich den Tag, um die Form verändert. Wenn Sie die abgerufenen Parameter von POST erhalten möchten, ohne dass die DB nach dem Übergang abfragt, dann können Sie die erste Datei wie folgt ändern:

<?php while($row=mysqli_fetch_array($result)) { ?> 
    <div id="item"> 
    <form method="post" action="cartReceiver.php">Quantity: 
     <?php echo '<img height="200" name="image" width="200" src="data:image;base64,'.$row[2]. '">';?> 
     </br> 
     <input type="text" name="username" value="<?php echo $row[ "name"];?>" readonly /> 
     </br> 
     <input type="text" name="price" value="<?php echo $row[ "price"];?>" readonly /> 
     <input type="hidden" name="discount" value="<?php echo $row[ "discount"];?>" /> 
     </br> 
     <input type="text" name="description" value="<?php echo $row[ "description"];?>" readonly /> 
     </br> 
     <input type="text" value="" name="quantity" /> 
     </br> 
     <input type="submit" value="add to cart" name="cart" /> 
    </form> 
    </div> 
    <?php }//end of while ?> 

So ist die cartReceiver.php Datei wie folgt in diesem Fall aussehen:

Beachten Sie die schreibgeschützte Anzeige in den Eingängen. Es wird verhindern, dass die Benutzer ihre Inhalte ändern.

Jetzt können Sie alle Zugriff auf die Eingaben, nachdem Sie das Formular (klicken Sie auf den in den Warenkorb Button) unter Verwendung von $ _POST [ 'name'], $ _ POST [ 'description'] einreichen etc

EDIT: Code aktualisiert für Ihre Bedürfnisse. Da es scheint, dass Sie den Rabatt nicht anzeigen möchten, übergeben Sie ihn an das Formular durch ein verstecktes Feld, das dann als die anderen über $ _POST zugegriffen werden kann.

+0

Dann wie soll ich auf die aktuelle Reihe der Daten zugreifen, die ich auf die Schaltfläche geklickt habe. Da es sich um eine while-Schleife handelt, ist die letzte Datenzeile die einzustellende Datenzeile. Danke – TryToProgram

+0

Ich habe meine Antwort aktualisiert, um Ihnen genau zu zeigen, wie es geht. – m33ts4k0z

0

Zuerst, wenn alles, was Sie Ihre einreichen sicherstellen müssen Schaltfläche in einer Form vor, die das Aktionsfeld für das aktuelle Skript festgelegt hat. Zweitens würde ich in ihm ein verborgenes Feld mit der ID des Bildes als Wert legen, so dass Sie wissen, welches Bild

Verwandte Themen