2012-02-15 2 views
0

quand je change la quantité de produit, et mettre à jour, les données sont envoyées, mais il se perd et la commande de mise à jour apporte réellement la colonne totale à 0, (en fait le code de mise à jour fonctionnait bien page de formulaire pour inclure le total en bas, au-dessous est les captures d'écran, et le code de mise à jourmettre à jour une base de données

form

enter image description here

script forme

<?php require_once("include/session.php");?> 
<?php require_once("include/dataconnect.php");?> 
<?php require_once("include/functions.php");?> 
<?php include("include/basicheader.php");?> 
<div class="y-acc-contain"> 
<div class="page-top"> 
<table width="100% class="y-acc-pagehead"> 
<tbody> 
<tr> 
<td> 
<h1> 
"Your account"<?php echo $_SESSION['username'];?> 
</h1> 
</td> 
</tr> 
</tbody> 
</table> 
</div> 
<div class="column-holder"> 
<div class="primary"> 
<div class="action-box rounded"> 
<div class="titlebar"> 
<h2>Order Form</h2> 
</div> 
<div class="listbar"> 
<div> 
<?php 
$submit = $_POST['Add']; 

//form data 
$Sname = mysql_real_escape_string(htmlentities(strip_tags($_POST['Sname']))); 
$Pname = mysql_real_escape_string(htmlentities(strip_tags($_POST['Pname']))); 
$Pidno = mysql_real_escape_string(htmlentities(strip_tags($_POST['Pidno']))); 
$Psize = mysql_real_escape_string(htmlentities(strip_tags($_POST['Psize']))); 
$Pcolour = mysql_real_escape_string(htmlentities(strip_tags($_POST['Pcolour']))); 
$Pquantity = $_POST['Pquantity']; 
$Weblink = mysql_real_escape_string(htmlentities(strip_tags($_POST['Weblink']))); 
$Price = mysql_real_escape_string(htmlentities(strip_tags($_POST['Price']))); 
$date = date("Y-m-d"); 


if('POST' === $_SERVER['REQUEST_METHOD']) 

{ 
if ($Sname&&$Pname&&$Pidno&&$Weblink&&$Price) 
{ 
if (is_numeric($Price)) 
{ 
    $repeatheck = mysql_query("SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}' AND Pidno ='$Pidno' AND Sname='$Sname'"); 
    $count = mysql_num_rows($repeatheck); 
if($count!=0) 
{ 
    die ('PRODUCT ALREADY IN BASKET YOU CAN INCREASE OR DECREASE QUANTITY'); 
} 
else 
$tprice = $Price * $Pquantity; 
$queryreg = mysql_query(" 
INSERT INTO repplac VALUES ('','$Sname','$Pname','$Pidno','$Psize','$Pcolour','$Pquantity','$Weblink','$Price','$tprice','$date','{$_SESSION['username']}') 
")or die(mysql_error()); 
} 
else 
echo 'price field requires numbers'; 
} 
else 
echo 'please fill in all required * fields '; 
} 
?> 
</div> 
<form action='youraccount.php' method='Post' class='slistbar'> 
    <!--<div> 
    <label for='shoppinglist' class='fixedwidth'></label> 
    <textarea type='text' name='shoppinglist' id='username' cols='100' rows='15'></textarea> 
    </div> --> 
    <div> 
    <label for='Sname' class='fixedwidth'> * Shop name</label> 
    <input type='text' name='Sname' id='Sname'/> 
    </div> 
    <div> 
    <label for='Pname' class='fixedwidth'> * Product name</label> 
    <input type='text' name='Pname' id='Pname'/> 
    </div> 
    <div> 
    <label for='Pidno' class='fixedwidth'> * Product id no /ad reference</label> 
    <input type='text' name='Pidno' id='Pidno'/> 
    </div> 
    <div> 
    <label for='Psize' class='fixedwidth'>Product size</label> 
    <input type='text' name='Psize' id='Psize'/> 
    </div> 
    <div> 
    <label for='Pcolour' class='fixedwidth'>Product colour</label> 
    <input type='text' name='Pcolour' id='Pcolour'/> 
    </div> 
    <div> 
    <label for='Pquantity' class='fixedwidth'>Product quantity</label> 
    <select name="Pquantity" id="Pquantity"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
     <option value="6">6</option> 
     <option value="7">7</option> 
     <option value="8">8</option> 
     <option value="9">9</option> 
     <option value="10">10</option> 
</select> 
    </div> 
    <div> 
    <label for='Weblink' class='fixedwidth'> * Web link</label> 
    <input type='text' name='Weblink' id='Weblink'/> 
    </div> 
    <div> 
    <label for='Price' class='fixedwidth'> * Price GBP</label> 
    <input type='text' name='Price' id='Price'/> 
    </div> 
    <div> 

    <div class='buttonarea'> 
      <p> 
      <input type='submit' name='submit' value='Add'> 
      </p> 
      </div> 
      </p> 
    </form> 
</div> 
</div> 
<div class="action-box rounded"> 
<div class="titlebar"> 
<h2>Shopping List</h2> 
<a href='totalprice.php'>Update</a> 
</div> 
<div class="listbar"> 

    <form action='orderpplac.php' method='Post' class='slistbar'> 
    <table border='1'> 
    <tr> 
    <th>SHOP NAME</th> 
    <th>PRODUCT NAME</th> 
    <th>PRODUCT SIZE</th> 
    <th>PRODUCT COLOUR</th> 
    <th>PRODUCT QUANTITY</th> 
    <th>PRICE</th> 
    <th>TOTAL</th> 
    <th></th> 
    </tr> 
    <?php 
    // Get DB results and loop, outputting table rows with counter 
    $pplresult = mysql_query("SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}'") or die(mysql_error()); 
    while ($row = mysql_fetch_assoc($pplresult)) { 
    echo " 
    <tr> 
    <td>".htmlspecialchars($row['Sname'])."</td> 
    <td>".htmlspecialchars($row['Pname'])."</td> 
    <td>".htmlspecialchars($row['Psize'])."</td> 
    <td>".htmlspecialchars($row['Pcolour'])."</td> 
    <td> 
    <input type='text' name='item[$i][Pquantity]' id='Pquantity' value='".htmlspecialchars($row['Pquantity'])."' /> 
    <input type='hidden' name='item[$i][Pidno]' id='Pidno' value='".htmlspecialchars($row['Pidno'])."' /> 
    </td> 
    <td>".htmlspecialchars($row['Price'])."</td> 
    <td> 
    <input type='text' name=tprice value='".htmlspecialchars($row['Tprice'])."' readonly> 
    </td> 
    <td><a href='deleteproduct.php?del=".htmlspecialchars($row['Pidno'])."'>delete</a></td> 
    </tr>"; 
    } 
    $pplresult = mysql_query("SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}'") or die(mysql_error()); 
    while ($row = mysql_fetch_assoc($pplresult)) 
    //echo $row['Pquantity'] * $row['Price']; 
    { 
    $totalprice += $row['Tprice']; 
    } 
    //echo "$totalprice"; 

     ?> 
     <tr> 
       <th>Total Price</th> 
       <th><?php echo $totalprice; ?></th> 

      </tr> 
    <!--Close table and form--> 

    </table> 
    <input type='submit' name='submit1' value='UPDATE' /> 
    <input type='submit' name='submit2' value='SUBMIT' /> 
    </form> 
</div> 
</div> 
<div class="action-box rounded"> 
<div class="titlebar"> 
<h2> payment & balance</h2> 
</div> 
<div class="listbar"> 
</div> 
</div> 
</div> 
</div> 
</div> 
<?php include("include/footer.php");?> 

et c'est le script qui met à jour

 <?php 
require_once("include/session.php"); 
require_once("include/dataconnect.php"); 
require_once("include/functions.php"); 
if (isset($_POST['submit1'])) { 
if(array_key_exists('item', $_POST)){ 

    //Loop through $_POST items, updating the database for each item 
    foreach ($_POST['item'] as $item) { 
     $Pquantity = intval($item['Pquantity']); 
     $Pidno = ($item['Pidno']); 
     $queryreg = mysql_query(" 
      UPDATE repplac 
       SET Pquantity = {$Pquantity} 
       WHERE 
         Pidno = '{$Pidno}' 
       AND 
         Uname = '{$_SESSION['username']}' 
     ") or die(mysql_error()); 

    } 
    } 
    $pplresult = mysql_query("SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}'") or die(mysql_error()); 
    while ($row = mysql_fetch_assoc($pplresult)) 
    { 
    $Pidno = ($row['Pidno']); 
    $totalprice = $row['Price'] * $row['Pquantity']; 
    $queryreg = mysql_query(" 
    UPDATE repplac 
    SET Tprice = {$totalprice} 
    WHERE 
         Pidno = '{$Pidno}' 
       AND 
         Uname = '{$_SESSION['username']}' 
    ") or die(mysql_error()); 
    } 

    } 
    else if (isset($_POST['submit2'])) { 
    //Get Email Address 
    $emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '{$_SESSION['username']}'")or die(mysql_error()); 
    //$emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '".$_SESSION['username']."'")or die(mysql_error()); 
    $results = (mysql_fetch_assoc($emails)) or die(mysql_error()); 
    $email= $results['email']; 

    if(mysql_num_rows($emails) == 0){ 
     exit("No email addresses found for user '{$_SESSION['username']}'"); 
    } 
    $email = mysql_result($emails, 0); 

    //Get list to email user 
    $body = "<html><body><table border='1'> 
<tr> 
<th>Shop Name</th> 
<th>Product Name</th> 
<th>Size</th> 
<th>Color Name</th> 
<th>Quantity</th> 
</tr>"; 
$pplresult = mysql_query("SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}'"); 
while($row = mysql_fetch_assoc($pplresult)){ 
    $body .= "<tr> 
     <td>" . $row['Sname'] ."</td> 
     <td>" . $row['Pname'] ."</td> 
     <td>" . $row['Psize'] ."</td> 
     <td>" . $row['Pcolour'] ."</td> 
     <td>" . $row['Pquantity'] ."</td> 
     </tr>"; 
} 

$body .="</table></body></html>"; 

    //Send email 
$to = $email; 
    $subject = "YOUR ORDER LIST FROM REACHEASY"; 
$headers = "From: [email protected]\r\n"; 
$headers .= 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
mail($to,$subject,$body,$headers); 
     //Transfer records to wishlist 
    $transfer = mysql_query("INSERT INTO wishlist (SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}')")or die(mysql_error()); 
    // Delete temporary records if the above query was successful: 
    if($transfer !== false){ 
     $deletetable = mysql_query("DELETE FROM repplac WHERE Uname = '{$_SESSION['username']}'"); 
    } 
} 
redirect_to('youraccount.php'); 
?> 
+0

Est-ce une faute de frappe ou votre formulaire de mise à jour a deux étiquettes de forme dedans? – leon

+0

@ leon son une faute de frappe – lostty84

+2

S'il vous plaît fixer votre code puis - à la fois indentation et précision – leon

Répondre

0

Votre quantité est fixée à 0 parce intval ne peut pas jeter votre quantité à un numéro valide . Vous devez déboguer ce qui revient dans votre soumission $ item.

+0

quand j'ai le résultat du post, il donne ce tableau ([item] => Array ([0] => Array ([Pquantity] => 2) [1] => Array ([Pidno] = > 123)) [tprice] => 24 [submit2] => SUBMIT), ce qui est correct car pour ce champ la quantité que j'ai entrée était 2 – lostty84

+0

Votre sortie montre que $ item n'a pas de clé de 'Pquantity'. Cette valeur est dans un sous-tableau. On dirait que vous aurez besoin de $ item [0] ['Pquantity'] ou dans votre boucle $ item [$ i] ['Pquantity'] – davidethell

+0

c'est vrai, je peux voir ce que vous dites – lostty84

0

Où est-ce que vous obtenez le $i sur la ligne

"<input type='text' name='item[$i][Pquantity]' id='Pquantity' value='".htmlspecialchars($row['Pquantity'])."' />" 

de? Est-ce que vous lancez toutes les erreurs pour que vous puissiez voir si PHP se plaint de quoi que ce soit? Quel est le niveau d'erreur défini?

En outre, le dernier morceau de votre code pourrait utiliser la fonction d'agrégation SUM SQL, comme dans:

SELECT SUM(Tprice) FROM repplac WHERE Uname = '{$_SESSION['username']}' 
+0

toutes les erreurs, sont affichées – lostty84

Questions connexes