0

一人一人、私は小さな問題に直面しています。誰かが私を助けてくれることを願っています。これは e ショッピング サイトです。ちょっとしたヘルプが必要です。カートに追加リンクを押した後のアイデアは、彼をカートページに転送します.編集と削除の2つのリンクがあり、削除するとアイテムが削除され、それが機能しています. しかし、誰かが編集リンクを押すと、数量列のテキストボックスが表示され、保存を押すと保存リンクも表示され、データベースが更新されます

問題は次のとおりです。1-テキストボックスの値をケース「showupdate」から別のケース「savee」に転送する方法は?アクションとIDの横にある保存のリンクで変数を送信しようとし$qq=$_POST['qun'];ましたが、常に機能しません。未定義の変数「qun」と言いました

2番目の問題は、テキストボックスと保存リンクがカートのすべてのアイテムに表示されることです。それは望ましくありません。そのアイテムの横にある編集を押すと、テキストボックスに変更してリンクを保存する必要があります。

私は while loop を入れたことを知っています。これは、テキストボックスを取得してリンクを保存するリンク編集のみを押すときに、アイテムのIDが取得されたことを確認するためです

ここにコードがあります私を助けてください、

switch($action){
case "add":
{$id=$_REQUEST['id'];
 $query='insert into cart values("1",'.$id.',"1")';
 $result=mysql_query($query);
 header("location:cart.php?action=show");
    break;
}
case "remove":
{ $id=$_REQUEST['id'];
echo $id;
$query='delete from cart where itemId='.$id.'' or die(mysql_error());
$result = mysql_query($query) or die(mysql_error());
header ("location:cart.php?action=show");
break;}


    case "showupdate":
    { $id=$_REQUEST['id'];
      $sql2="select * from cart";
      $result2= mysql_query($sql2);
      while($row2 = mysql_fetch_array($result2))
    {   if ( $id == $row2['itemId'])
        {   $totalCost =0;
            $query = "select * from cart inner join items on cart.itemId = items.itemId";
            $result = mysql_query($query);
            ?>
            <table width="100%" border="1"> 
            <?php while($row = mysql_fetch_array($result)){
            $totalCost += ($row["qty"] * $row["itemPrice"]);
            ?>
            <tr>
            <td><img src="<?php echo $row["image"];?>" height="50" width="50"/></td>
            <td><?php echo $row["itemName"]; ?></td>
            <td>SR<?php echo $row["itemPrice"]; ?></td>
            <td>
            <form method="POST" name="form1">
            <input type = "text" name="qun" value="<?php echo $row['qty'];?>" size="10"/> 
            </form>
            </td>
            <td><a href="cart.php?action=savee&id=<?php echo $row["itemId"]; ?>">Save</a></td>
            <td><a href="cart.php?action=remove&id=<?php echo $row["itemId"]; ?>">Remove</a></td>
            </tr>
            <?php } 

           // Increment the total cost of all items
           $totalCost += ($row["qty"] * $row["itemPrice"]);
           $totalCost = $totalCost + ($row["qty"] * $row["itemPrice"]); ?>
           <tr> <td colspan="2"> <a href="homestore.php">Keep Shopping</a></td>
           <td colspan="2"> <b>Total: SR<?php echo $totalCost; ?></b></td></tr>
           </table>
           <?php  } 
        } break;}


    case "savee":
    {  $id=$_REQUEST['id'];
       $sql='update cart set qty='.$_POST['qun'].'where itemId='.$id.''or die(mysql_error());
       $result=mysql_query($sql)or die(mysql_error());
        header ("location:cart.php?action=show");
        break;
    }

    case "show":
    {
    $totalCost =0;
    $query = "select * from cart inner join items on cart.itemId = items.itemId";
    $result = mysql_query($query);
    ?>
    <table width="100%" border="1"> 
        <?php while($row = mysql_fetch_array($result))
        {   
        $totalCost += ($row["qty"] * $row["itemPrice"]);
        ?>
        <tr>
        <td><img src="<?php echo $row["image"];?>" height="50" width="50"/></td>
        <td><?php echo $row["itemName"]; ?></td>
        <td>SR<?php echo $row["itemPrice"]; ?></td>
        <td><a href="cart.php?action=showupdate&id=<?php echo $row["itemId"]; ?>">edit</a></td>
        <td><a href="cart.php?action=remove&id=<?php echo $row["itemId"]; ?>">Remove</a></td>
       </tr>
    <?php } 

    // Increment the total cost of all items
    $totalCost += ($row["qty"] * $row["itemPrice"]);
    $totalCost = $totalCost + ($row["qty"] * $row["itemPrice"]); ?>
    <tr> <td colspan="2"> <a href="homestore.php">Keep Shopping</a></td>
    <td colspan="2"> <b>Total: SR<?php echo $totalCost; ?></b></td></tr>
    </table>

    <?php break; }
    }?>

add link をクリックすると、 action="add" とそのアイテムの id がトランスファーされ、その後、ヘッダー ("location..") があるため、add ケースのステートメントを切り替えるために挿入されます。テーブルの編集+リンクの削除が表示されます編集リンクをクリックするとshowupdateケースに移動し、テキストボックスを表示+リンクを保存すると保存をクリックすると保存ケースに移動します。

4

1 に答える 1

0

A.$_POST['qun']セッションに保存するために必要なすべての時間を使用するには、ドキュメントについてhttp://php.net/manual/en/function.session-start.phpを参照してください。

session_start();
$_SESSION['qun'] = $_POST['qun'] ;


// to get qun back
echo $_SESSION['qun'] ;

B. あなたのコードは SQL インジェクションでいっぱいですmysql_real_escape_string投稿されたすべてのデータに使用してみてください

 $id = mysql_real_escape_string ( $_POST ['id'] );

C. 申し訳ありませんが、全体classを書くことができますが、これはコードをどのようにきれいに見せることができるかの例です

include 'runner.class.php';
$runner = new Runner ( $action );
$runner->process ();

//runner.class.php

class Runner {
    private $action;
    private $id;
    private $qun;
    function __construct($action) {
        $this->action = $action;
        $this->id = mysql_real_escape_string ( $_REQUEST ['id'] );
        $this->qun = mysql_real_escape_string ( $_REQUEST ['id'] );

    }

    function process() {
        switch ($this->action) {
            case "add" :
                $this->add ();
                break;

            case "remove" :
                $this->remove ();
                break;

            case "savee" :
                $this->save ();
                break;
            case "show" :
                $this->show ();
                break;

        }
    }
    function add() {
        $query = 'insert into cart values("1",' . $this->id . ',"1")';
        $result = mysql_query ( $query );
        header ( "Location: cart.php?action=show" );
    }

    function remove() {
        $query = 'delete from cart where itemId=' . $this->id . '' or die ( mysql_error () );
        $result = mysql_query ( $query ) or die ( mysql_error () );
        header ( "Location: cart.php?action=show" );
    }

    function save() {
        $_SESSION ['qun'] = mysql_real_escape_string ( $_POST ['qun'] ); // Save
                                                                         // Quu
        $sql = 'update cart set qty=' . $_POST ['qun'] . 'where itemId=' . $this->id . '' or die ( mysql_error () );
        $result = mysql_query ( $sql ) or die ( mysql_error () );
        header ( "Location: cart.php?action=show" );
        break;
    }

    function showUpdate() {
        $_SESSION ['qun'] = mysql_real_escape_string ( $_POST ['qun'] ); // Save Quu
        // Add Code
    }

    function show() {
        $qun = $_SESSION ['qun']; // Use Qui
         // Add Code
    }

}
于 2012-04-28T23:08:33.820 に答える