作者 主題: 字串變數傳送問題  (閱讀 5210 次)

0 會員 與 1 訪客 正在閱讀本文。

Hsuan

  • 懷疑的國中生
  • **
  • 文章數: 51
    • 檢視個人資料
字串變數傳送問題
« 於: 2006-12-05 18:03 »
這個問題困擾我很久
我試了很多不同的方法,問了很多人
但還是沒改善,請大大幫我看一下
------------------------
我第一個程式傳變數到第二程式是沒問題的
但我第二個程式傳變數到第三個程式就會怪怪的
我選的資料一定要是連續的,如果中間有斷掉,後面的資料就會沒有
請問一下我該怎麼解決
例:我選擇1.2.3.4項資料,傳過去的就會是1.2.3.4項資料,是正確的
但我傳送1.3.4項資料,傳過去的就會1.3項資料而以
我傳送1.4項資料,傳過去的就只有1項資料
我傳送2.3.4項資料,傳過去的就只有2.3項資料
請問一下是為什麼會這樣

Hsuan

  • 懷疑的國中生
  • **
  • 文章數: 51
    • 檢視個人資料
Re: 字串變數傳送問題
« 回覆 #1 於: 2006-12-05 18:08 »
這是我的程式:
----------------
第一隻:
<?
$user_id= $_SESSION["userid"];
echo "<form method='post' action='stu_addchange_award.php'>
      <table align=center border=1>
            <input type=submit name=submit value=兌換獎品>
            <tr><td align=center>照片<td align=center>獎品名稱<td align=center>所需點數<td align=center>兌換數量</tr>";
   echo "剩餘點數:"; echo "<input type='hidden' name='user_id' value='$user_id'>";
   $list=mysql_query("select * from award" ,$link);
   
   while(list($award_id,$aw_name, $aw_point, $aw_amount, $aw_photo)=mysql_fetch_row($list))
   {
                        
                  $i+=1;
                  echo"<tr><td align=center><img src='/orffmusic/award_images/$aw_photo'
                           ALT='$aw_photo' width='100' height='70' border='0'>
                           <input  type='hidden' name='aaward_id[$i]' value='$award_id'></td>";
                  echo"<td align=center>$aw_name
                              <input type='hidden' name='aaw_name[$i]' value='$aw_name'></td>";
                  echo"<td align=center>$aw_point
                              <input type='hidden' name='aaw_point[$i]' value='$aw_point'></td>";
                  echo "<td align=center>  <select name=achange[$i]>";
                              for ($x=0; $x<11; $x++)
                              {
                  echo"
                                      <option value=$x>$x</option>\n";
                                    
                              }
                              echo " </select>
                              <input type='hidden' name='aaw_amount[$i]' value='$aw_amount'></td>";
            }
            
      echo   "</tr>
            </form>";
            
           echo "</table>";
   



?>
----------------------------
第二隻:
<?
$award_id=$_POST["aaward_id"];
$change=$_POST["achange"];
$aw_name=$_POST["aaw_name"];
$aw_point=$_POST["aaw_point"];
$aw_amount=$_POST["aaw_amount"];

$list=mysql_query("select rule_count from users where  user_id='$user_id'" ,$link);
list($rule_count)=mysql_fetch_row($list);
echo "<input type='hidden' name='user_id' value='$user_id'>";
echo "<input type='hidden' name='rule_count' value='$rule_count'>";

    for($i=1; $i<=count($award_id); $i++)
      {


         

             if($aw_amount[$i]>=$change[$i])
               {
               
               
               if($change[$i]!=0)
                  {
                   echo '<br>'.$aw_name[$i].'<br>';
                   echo "所需點數:$aw_point[$i]";
                  echo "<br>";
                  echo "兌換數量$change[$i]";
                  echo "<br>";
                  echo "<input type=hidden name=change[$i] value=$change[$i]>";
                                    $count[$i]=$change[$i]*$aw_point[$i];
               
                  echo "單件需要點數$count[$i]";
                  echo "<br>";
               $amount[$i]=$aw_amount[$i]-$change[$i];
                  echo "<input type='hidden' name='aw_amount[$i]' value='$amount[$i]'>";
               
                  $total=$total+$count[$i];
                  echo "<input type='hidden' name='award_id[$i]' value='$award_id[$i]'>";
                  }
               }   
                           else
               {
                  echo "歹勢沒那麼多$aw_name[$i],目前庫存只剩下:$aw_amount[$i]<br>";
                  
               }        
      }
--------------
第三隻:
<?
if($submit)
{
$award=$_POST["award_id"];
$amount=$_POST["aw_amount"];
$changea=$_POST["change"];
$aa=$rule_count-$total;
if($aa>=0)
   {
echo '學生:'.$user_id.'<br>';
echo '自己剩下的點數:'.$aa.'<br>';
 for($i=1; $i<=count($award_id); $i++)
         {
echo '倉庫剩下的數量:'.$amount[$i].'<br>';
echo '要兌換的id:'.$award[$i].'<br>';
echo '要兌換的數量:'.$changea[$i].'<br><br><br>';

         
      }
   }
   else {echo "沒有賒帳這回事";}   

}
if($reset)
{
   header ("location:stu_change_award.php");
}
?>

shengeih

  • 鑽研的研究生
  • *****
  • 文章數: 970
    • 檢視個人資料
字串變數傳送問題
« 回覆 #2 於: 2006-12-06 11:43 »
別再用這種方式了 $XXX = $_POST['XXX'] or $XXX = $_GET['XXX']

您可以直接用 extarct($_POST) or extract(_GET)

extract 之後就可以直接使用 $xxx 直接叫出變數內容.

這樣子可以讓你少打很多字.

Hsuan

  • 懷疑的國中生
  • **
  • 文章數: 51
    • 檢視個人資料
字串變數傳送問題
« 回覆 #3 於: 2006-12-10 15:40 »
引述: "shengeih"
別再用這種方式了 $XXX = $_POST['XXX'] or $XXX = $_GET['XXX']

您可以直接用 extarct($_POST) or extract(_GET)

extract 之後就可以直接使用 $xxx 直接叫出變數內容.

這樣子可以讓你少打很多字.


可是我是post過來給另一個變數名稱耶

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
字串變數傳送問題
« 回覆 #4 於: 2006-12-11 21:06 »
引述: "shengeih"
別再用這種方式了 $XXX = $_POST['XXX'] or $XXX = $_GET['XXX']

您可以直接用 extarct($_POST) or extract(_GET)

extract 之後就可以直接使用 $xxx 直接叫出變數內容.

這樣子可以讓你少打很多字.

少打很多字的下場,就是讓你的程式很難維護,不容易 debug。

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
字串變數傳送問題
« 回覆 #5 於: 2006-12-31 08:31 »
引述: "螢火飛"
引述: "shengeih"
別再用這種方式了 $XXX = $_POST['XXX'] or $XXX = $_GET['XXX']

您可以直接用 extarct($_POST) or extract(_GET)

extract 之後就可以直接使用 $xxx 直接叫出變數內容.

這樣子可以讓你少打很多字.

少打很多字的下場,就是讓你的程式很難維護,不容易 debug。



同意~~~

第一行打出來,

可以清楚的知道那些變數是怎麼來的  :)

FIEND

  • 鑽研的研究生
  • *****
  • 文章數: 700
    • 檢視個人資料
    • http://bbs.ecstart.com
字串變數傳送問題
« 回覆 #6 於: 2007-01-01 17:02 »
基本上  小弟覺得 長新的變數 不會造成什麼困擾 只是有沒有必要 .

如果 你要統一處理 in/out 的問題 長出新的變數 反而比直接用 的好 .

這裡我就持 與上頭各位老大不同的意見 .

另外 你宣告 超全域陣列變數 為 私有變數 本來就會產生很多問題..

你也可以用 常數的方式去宣告 超全域陣列變數 .

附帶一題的是 .

你寫程式 都沒有考 慮 sql injection 的問題 這點是小弟看到最大的毛病 .
你累了嗎? 這樣不行 , 人要比 LINUX 兇 @@ " ......