iT邦幫忙

0

php電話簿無法修改資料

php

http://114.34.124.111/book.rar
不知道有沒有大大可以幫忙修改?新增資料都沒有問題,但是卻無法修改資料,我一直無法找出
modify.php 哪裡有寫錯了 ~ 請各位大大賜教

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
4
外獅佬
iT邦大師 1 級 ‧ 2010-09-28 01:31:26
最佳解答

ㄟ??這個程式,應該根本就不會接收到$mdfuid2變數的值....
從頭到尾,都沒看到這個變數的初始化或者賦予值....
您應該會說action="xxxx.php?mdfuid2=....那一段。
即使如此,您也應該用**$_GET['mdfuid2']**去接收傳回來的mdfuid2
請注意這幾個地方....

<pre class="c" name="code">
 if(isset($_POST['name']) and $_POST['name'] <> "" and <strong>$mdfuid2</strong> > 0) //測定變數是否設定 and 傳的參數不為一個空白                                          
  {                                
  $sqltxt = "UPDATE book SET name='".$_POST['name']."',birthday='".$_POST['birthday']."',hometel='".$_POST['hometel']."',mobile='".$_POST['mobile']."',webhttp='".$_POST['webhttp']."',email='".$_POST['email']."',address='".$_POST['address']."',comname='".$_POST['comname']."',composition='".$_POST['composition']."',comnumbers='".$_POST['comnumbers']."',comwebhttp='".$_POST['comwebhttp']."',comtel='".$_POST['comtel']."',comfax='".$_POST['comfax']."',comadd='".$_POST['comadd']."',remarks='".$_POST['remarks']."'  WHERE uid=".$mdfuid2.";";                                  
  mysql_query($sqltxt) or die("SQL指令無法送出!" . mysql_error( ));//送出SQL語法到資料庫系統                                          
  echo "修改 ".$_POST['name']." 的通訊錄成功! 請稍後1~2秒系統轉頁中...";                                
  }   

if(isset($mdfuid) and $mdfuid<>"") //測定網址列變數是否設定           
  {           
  $sqltxt = "SELECT * FROM book where uid = ".$mdfuid.";"; //找出資料           
  }           
else             
  {           
  ?>          
  <script language="JavaScript">
       alert("修改完成 或 未指定資料﹗");
  </script>
  <?          
  header("refresh:1 ; url=index.php");           
  exit();//本函式直接結束 PHP 程式 (Script)。                    
  }           

$get_sqldata = mysql_query($sqltxt) or die("SQL指令無法送出!" . mysql_error( ));                       
                               
include "top.php"; //共用標頭                                                            

while ( $row = mysql_fetch_array($get_sqldata) ) { //取得執行SQL語法後的結果(指查詢部份) ?>      

<form method="POST" name="form" <strong>action="modify.php?mdfuid2=<? echo $mdfuid ?>"</strong> onSubmit="return checkform()">

網址帶參數傳遞過去的參數,應該要用Get去擷取參數值,所以,$mdfuid2變數,應該是$_GET['mdfuid2']才對。
不過,問題來了,http協定,有辦法同時post又get嗎?記得好像是不行....
請把$mdfuid2變數值,跟其他文字欄位一樣,放到一個hidden的欄位中,一併post、接收處理應該就行了。

fillano iT邦超人 1 級 ‧ 2010-09-28 08:31:36 檢舉

form不能同時送出GET跟POST,但是你在網址的query string指定的東西,在PHP是要用$_GET來收,用POST送出的資料則用$_POST收。這樣就可能在程式中同時出現$_GET跟$_POST。

rich73 iT邦新手 5 級 ‧ 2010-09-28 22:33:26 檢舉

漏上的大大 ~ 你們好像高手過招!討論的很熱絡!但是小弟看的有點霧煞煞
目前小弟了解到的是 :
1.我沒有正確取得數值資料所以無法傳遞我想修改的資料寫入資料庫
2.get 與 post 無法在 form 中同時使用
那請問各位大大,是否有範例可以教我如何處理目前的狀況 ?
因為我現在暫時取代修改的方法有點蠢 ... XD
我是另外寫一個檔案,然後直接再填寫一次資料,然後指定要修改的 UID,並且直接覆蓋原本的
資料,但是這畢竟不是正常的寫法 ~ 所以再麻煩各位大大指教一下囉 !

外獅佬 iT邦大師 1 級 ‧ 2010-09-28 23:06:03 檢舉

我覺得很奇怪的是....
怎麼你的UPDATE,參考值用的是變數mdfuid2,SELECT 指令用的卻是變數mdfuid....
看到霧煞煞.....汗
重點應該是,你的程式,並沒有去接收傳過來的mdfuid2變數值....
請參考silly大的『抓取』get變數方法...
或者,應該找本PHP的書,好好看一下~這個,書上應該都有寫到。

12
fillano
iT邦超人 1 級 ‧ 2010-09-23 08:12:30

有什麼錯誤訊息嗎?

rich73 iT邦新手 5 級 ‧ 2010-09-23 09:51:01 檢舉

當執行更改資料時,只會直接出現警告訊息,並無法完成更改資料
仔細來說,應該是根本沒有把資料庫的指定資料讀出

12
silly
iT邦好手 2 級 ‧ 2010-09-23 08:24:50

問題應該是出在 $mdfuid 這個變數吧,網址傳遞變數請使用$_GET來取得變數的值。

你在FORM裡用的是modify.php?mdfuid2=<? echo $mdfuid ?>
但是你接變數時沒有使用$_GET['mdfuid2'],只使用$mdfuid這樣當然會沒有值,
而且只有傳$mdfuid2這個變數,但是後續卻有使用了$mdfuid與$mdfuid2這兩個喔。

以上是看到的兩個問題。

看更多先前的回應...收起先前的回應...
rich73 iT邦新手 5 級 ‧ 2010-09-23 09:52:52 檢舉

可否請大大修改?小弟試了大大的方式,還是沒有取得正確的值!感謝大大指教!

rich73 iT邦新手 5 級 ‧ 2010-09-23 22:21:49 檢舉

謝謝大大的指教,但是按照大大的方式去修改後,仍然無法正確執行修改資料,不知道大大是否有遺漏的地方?

wonton iT邦高手 6 級 ‧ 2010-09-24 09:12:10 檢舉

把 query 印出來看看那些變數沒傳好,然後自己一個一個檢查。
學會自己 Debug 也很重要。

silly iT邦好手 2 級 ‧ 2010-09-24 09:44:26 檢舉

抱歉,沒注意有其他敘述被吃了Orz,重打一次

&lt;pre class="c" name="code">
19行
 if(isset($_POST['name']) and $_POST['name'] &lt;> "" and $_GET['mdfuid'] > 0)

21行最後
$mdfuid2改成$_GET['mdfuid']

26行
if(isset($_GET['mdfuid']) and $_GET['mdfuid']&lt;>"")

47行
&lt;form method="POST" name="form" action="modify.php?mdfuid=&lt;? echo $_GET['mdfuid'] ?>" onSubmit="return checkform()">
rich73 iT邦新手 5 級 ‧ 2010-09-25 22:52:04 檢舉

雖然還是無法正確執行,但是還是感謝大大的指導

10
uniquefj21
iT邦新手 5 級 ‧ 2010-09-27 11:07:27

1、確認程式有跑到update的條件去。
2、確定你的update sql是正確的。
(亦可直接到db中確認有沒有寫入,或僅是讀出來的資料有問題)
3、表單的action="modify.php?mdfuid2=<? echo $mdfuid ?>"
可簡化為action="modify.ph" 即可,因你參數傳遞有錯誤。
判斷要進行update的地方亦可不用增加$mdfuid 條件。
你可以自己試看看,慢慢看就會發現哪邊有錯誤了。

rich73 iT邦新手 5 級 ‧ 2010-09-28 00:38:47 檢舉

大大的方法我也有嘗試去 debug 過,但是得到的結果是
1.的確有跑去 updata,但是沒有傳遞資料
2.sql 因為沒有資料傳遞,所以也沒有寫入
3.常試過大大提供的方式,但依然無法找出錯誤的地方

小弟還在學習 php 中,尚有諸多不明白的地方,還請各位大大指教!XD

我要發表回答

立即登入回答