php會員加入的判斷問題

edited 十月 2013 in PHP新手區
http://ccadm2.ocit.edu.tw/momoko/add2.htm
這是使用這一隻程式的頁面
程式碼如下
<?

$conn=mysql_connect("localhost","xxx","xxx"); //開啟MySQL Server連結
mysql_select_db("xxx",$conn); //選擇資料庫 mysql_query("SET NAMES 'big5'");
$SQL="SELECT * FROM xxx"; //顯示資料表的所有欄位資料
$row=mysql_query($SQL); //送出$sql查詢
$count=0;


$r_id=$_POST["r_id"];
$password=$_POST["password"];
$prompt=$_POST["prompt"];
$mail=$_POST["mail"];
$sex=$_POST["sex"];
$b1=$_POST["b1"];
$b2=$_POST["b2"];
$b3=$_POST["b3"];
$b4=$_POST["b4"];
$b5=$_POST["b5"];
$birthday=$b1.$b2.$b3.$b4.$b5;
$vocation=$_POST["vocation"];
$address=$_POST["address"];


session_start();
session_register("ID");
session_register("Password");
$_SESSION=$_POST;
$_SESSION=$_POST;

//

while($rows=mysql_fetch_array($row)) //用while取得$row查詢後的結果,存入陣列中
{

if(($_POST["r_id"]!=$rows["id"]))
{
$count=1;
}
else
{
$count=0;
break;
}


}
//
if($count==0)
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">抱歉!您的帳號已經有人使用了,請重新填寫帳號......</font><p>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if(empty($_REQUEST["r_id"])) //檢查欄位是否為空格
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫帳號~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if(empty($_REQUEST["mail"])) //檢查欄位是否為空格
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫e-mail~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if(empty($_REQUEST["password"])) //檢查欄位是否為空格 //39
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫密碼~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if(empty($_REQUEST["password1"])) //檢查欄位是否為空格
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">請您再次確認密碼~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if($_REQUEST["password"]!=$_REQUEST["password1"]) //檢查設定密碼與確定密碼是否相同
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您的密碼不相同 請重填~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if(empty($_REQUEST["prompt"])) //檢查欄位是否為空格
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫提示密碼~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if($_REQUEST["b2"]=="---") //檢查欄位是否為空格
{ //60
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫生日年份~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if($_REQUEST["b3"]=="---") //檢查欄位是否為空格
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫生日年份~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if($_REQUEST["b4"]=="---") //檢查欄位是否為空格
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫生日月份~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if($_REQUEST["b5"]=="---") //檢查欄位是否為空格
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫生日日期~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if($_REQUEST["address"]=="--請選擇--") //檢查欄位是否為空格
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫居住地~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}
else if($_REQUEST["vocation"]=="--請選擇--") //檢查欄位是否為空格
{
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">您忘記填寫職業~~</font>";
echo "<input onclick=\"history.go(-1)\" type=\"button\" value=\"回上一頁\" name=\"回上一頁\">"."</p>";
}

//
if($count==1)
{
echo "<font face=\"華康勘亭流(P)\" color=\"#FF0000\" size=\"4\">以下是你的會員資料</font><p>";


if($_POST["sex"]=="w") //判斷輸入的性別是男或女
{
$sex="女";
}
else
{
$sex="男";
}
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">暱稱:".$r_id."</font><p>";
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">E-mail:".$mail."</font><p>";
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">密碼:".$password."</font><p>";
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">提示密碼:".$prompt."</font><p>";
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">性別:".$sex."</font><p>";
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">生日:".$b1.$b2.$b3."年".$b4."月".$b5."日</font><p>";
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">居住地區:".$address."</font><p>";
echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">職業:".$vocation."</font><p>";

//
$conn = mysql_connect("localhost","xxx","xxx"); //連結SQL Server
mysql_select_db("xxx",$conn); //選擇資料庫

$sql="insert member set id='".$r_id."',password='".$password."',prompt='".$prompt."',mail='".$mail."',sex='".$sex."',birthday='".$b1.$b2.$b3."/".$b4."/".$b5."',vocation='".$vocation."',address='".$address."'"; //將資料插入rs資料表中

mysql_query($sql); //送出$sql查詢

echo "<font face=\"華康勘亭流(P)\" color=\"#0099FF\" size=\"4\">填寫會員資料成功............</font><p>";


}

?>

以上是程式碼 而目前小弟我的問題應該是出在以上程式碼的這一部分


while($rows=mysql_fetch_array($row)) //用while取得$row查詢後的結果,存入陣列中
{

if(($_POST["r_id"]!=$rows["id"]))
{
$count=1;
}
else
{
$count=0;
break;
}


}

因為在小弟的頁面裡 除了全部都填完資料沒問題外 如果漏掉其中某些選項..照上面的程式應該是會跑if(count=0)這一部份 可是卻會發生
if(count=1)裡的內容也一起跑了...然後...竟然資料也寫入資料庫了.....(資料庫裡都是空值) echo $count 後出現的值都是1

小弟我想了很久想不出有什麼可以解決的方法 希望各位大大能夠教教小弟我解決這個問題~! 感激不盡~@﹍@!

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=2233

評論

  • edited 十一月 2006
    依照你寫的程式run的結果的確是都會跑沒錯阿?
    漏key資料跑的是if(count==0)裡的else
    跟if(count==1)會判斷到是兩碼子事
    當找不到重複帳號時你if(count==1)就一定成立會執行到

    建議你重新構思一下你程式的判斷流程

    另外,建議你熟悉一下mysql的select功能
    使用資料庫的條件篩選來抓特定資料,而不是把所有資料撈出來一筆一筆對
  • edited 十一月 2006
    感謝sam0228大大的回答 您說的mysql的select功能

    是指select* from 資料表 order by 欄位名稱這種寫法嗎?
    小弟剛踏入php不久所以很多寫法都不太了解..
    如果方便的話是否有範例可以參考或是提示一下小弟..
    將完整的寫法說明一下..(當然不是請大大直接修改我的程式 這種東西還是要自己來才學的會...) 萬分感激...謝謝...~!
  • edited 十一月 2006
    你應該要學會使用WHERE條件
    將查詢的結果給縮小
    像這個case,你可以下個WHERE id = '查詢值'
    如此一來,可以加快你程式的執行也可以減少MySQL的Loading
Sign In or Register to comment.