2012-04-28 11 views
0

私は小さな問題に直面しています。 eショッピングサイトですが、ちょっと助けて欲しいだけです。 カートに追加リンクをクリックするとアイデアがカートのページに移動し、編集と削除の2つのリンクがあり、削除によってアイテムが削除され、それが機能しています。 編集リンクを押すと数量欄のテキストボックスが表示され、保存ボタンを押すと保存されます。データボックスに更新がありますスイッチで2つのケースの間でtextboxtの値を転送する方法

問題は次のとおりです。 case "showupdate"を別のcase "savee"に変更しますか? 私は$qq=$_POST['qun'];にしようとしたアクションとIDの横にセーブのリンクで変数を送っましたが、それは常に仕事をdoesnotそれは未定義の変数と 『qun』

第二の問題点は次のとおりです。テキストボックスとリンクを保存するには、すべてに表示されます。カートの項目は、私はそれを望んでいない、私はその項目の横に編集を押して、テキストボックスに変更してリンクを保存するだけです。

私は「whileループ入れましことを知って、それは単にテキストボックスを取得し、ここにリンク

を救う唯一のプレスリンク編集コードを助けてくださいお願いしたときにアイテムの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; } 
    }?> 

、それはヘッダー( "場所があるので、それは追加のケースでなステートメントを切り替えるために挿入することの後に=が「追加」し、その項目 のidアクションtransfareます。 ")それはimmeddiatly私たちにテーブルの編集+リンクを削除リンクをクリックして表示する場合を表示するためにtransfareそれはshowupdateの場合に行くだろうwhi chを表示テキストボックス+保存リンクを一度クリックすると保存されます savee case。

+0

のようなあなたのコードの外観を作ることができますきれいに、あなたは、オブジェクト指向のアプローチを考えがあります? – Baba

+0

私はオブジェクト指向のアプローチで十分ではありません。 – shosho

+0

私はあなたのための例を試してみましょう – Baba

答えて

0

A.は

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


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

B.あなたのコードはすべてのためにmysql_real_escape_stringを使用してみてくださいSQLインジェクションの完全であるあなたがセッションに保存する必要があるドキュメントのためhttp://php.net/manual/en/function.session-start.php

例を参照してください$_POST['qun']すべての時間を使用するには掲載データ

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

C.私はあなたのために全体class書くことができます申し訳ありませんが、これは時間の一例ですOWあなたが

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 
    } 

} 
+0

と呼んでいます。問題は、私がアクションを書くことを忘れるということです。

shosho

+0

アクションとして '$ _SERVER ['PHP_SELF'];'を使うことができます。これは常に現在のページに投稿します。 – Baba

+0

ありがとうございました...あなたが言ったようにセッションを使用しましたが、私はaction = "cart.php"を入れているので間違っています – shosho

関連する問題