iT邦幫忙

0

PHP and MYSQL語法邏輯!!!

harry789111 8 月前3196 瀏覽

Dear 大大們
於這支程式還有一些php and MYSQL的邏輯,有點想不透...

該如何把select option人名放到php語法MYSQL裡頭...
最後再以以下圖片的方式以$id = $_SESSION['username']登入進來的人名去判斷
這個登入者是否在資料庫有這個select option人名的資料,有資料就select option就反灰
如果沒有就不要反灰!!!!(在當頁php頁就要判斷出來)
有辦法呈現這個邏輯嗎...麻煩大大給我個方向...
http://ithelp.ithome.com.tw/upload/images/20161124/200898330LYZIFYa2e.jpg

php MYSQL語法

<?php
$result10=mysql_query("SELECT * from initial where season = '2017Q1'");
$row10 = mysql_fetch_row($result10); 
?>

select option語法

<?php
if ($id == 'D0373' or $id == 'D0483')//(資訊課)
{
echo "部門/姓名:   <SELECT NAME='ptprovince' SIZE='1' >
      <OPTION value='0'>---請選擇---</OPTION>	  
      <optgroup selected='true' label='資訊課'>";
if ($id == 'D0373'){echo "<option value='alpha'>alpha</option>";}
if ($id == 'D0373'){echo "<option value='harry'>harry</option></SELECT>";}
}
?>      
Samと可樂快跑 iT邦研究生 3 級 ‧ 8 月前 檢舉
這邊我必須告訴你的是。
請不要再使用mysql()指令集。
請改用PDO。
mysql()指令集在php 5.6會產生警告。
在php7完全被廢止。
你現在不打掉重學,以後還是得再重學。
harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉
好的大大,這個我會慢慢改成之後的mysql語法

2 個回答

0
海綿寶寶
iT邦超人 1 級 ‧ 8 月前

參考資料來源

//一般的 option 長這樣
<option value="January">January</option>
//有 selected 的 option 長這樣
<option value="January" selected="selected">January</option>
//所以差別在於「判斷條件以決定是否要加那段 selected="selected"」
//這段要用 php 寫,範例如下
<option value="January" <?=$row['month'] == 'January' ? ' selected="selected"' : '';?> >January</option>
看更多先前的回應...收起先前的回應...
harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

海綿大大,用這樣的方法,登入者是否能連進來這頁PHP就自動偵測select. Mysql裡面有資料直接反灰,沒有就不反灰

海綿寶寶 iT邦超人 1 級 ‧ 8 月前 檢舉
<option value="alpha_hong" <?=$id == 'alpha_hong' ? ' selected="selected"' : '';?> >alpha_hong</option>
harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

海綿大大,可能我表達有點錯誤,
假如我登入者是test,mysql資料表有alpha跟Harry的資料,因為這兩個user都是登入者test人名去打這兩個人的分數,所以我想呈現就是當test登入進來下拉式選單的PHP,會偵測MySQL資料庫的資料表如果有Harry的資料就反灰,如果資料表沒有Harry資料就不反灰……
表達錯誤不好意思ˊˋ

海綿寶寶 iT邦超人 1 級 ‧ 8 月前 檢舉
<option value="Harry" <?=MySQLHas('Harry') ? ' selected="selected"' : '';?> >Harry</option>

function MySQLHas($pname) {
   //到 MySQL 裡去找是否有 $pname 的資料
   //如果有
   return true;
   //如果沒有
   return false;
}
harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

感謝海綿大,我在試試看,有問題在反應上來 感謝!!

harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

Dear 海綿大...
感覺Select Option沒什麼反應耶...是我CODE哪裡有問題嗎...
我發覺改了Option這段=MySQLHas($row10[3])== ('harry_chien')?
== 改成 != 就會反灰,如果沒有用==就不會反灰,代表我的SQL是不是沒抓到我的NAME的名字,不過我Option那段我印出來是有的...
http://ithelp.ithome.com.tw/upload/images/20161130/20089833dSQlH58MQK.jpg
不知道是哪邊是否有問題...

<?
$result10=mysql_query("SELECT * from initial where season = '2017Q1'"); 
while($row10 = mysql_fetch_array($result10)) 
echo $row10[3];

function MySQLHas($row10)
{
if	($row10['englishname'] == 'harry_chien')
   //到 MySQL 裡去找是否有 $pname 的資料
   //如果有 
   {return true;}
   //如果沒有
else
   {return false;}
}

?>

<SELECT NAME='test' SIZE='1' ONCHANGE=ChangeCity()>
<OPTION value='0'>---請選擇---</OPTION>
<option value="Harry"<?=MySQLHas($row10[3])== ('harry_chien')?  'disabled=disabled"' : '';?>>Harry</option>
</SELECT>
海綿寶寶 iT邦超人 1 級 ‧ 8 月前 檢舉
<?
$result10=mysql_query("SELECT * from initial where season = '2017Q1'"); 
while($row10 = mysql_fetch_array($result10)) 
echo $row10[3];

function MySQLHas($pname)
{
if	($pname == 'harry_chien')
   {return true;}
else
   {return false;}
}

?>

<SELECT NAME='test' SIZE='1' ONCHANGE=ChangeCity()>
<OPTION value='0'>---請選擇---</OPTION>
<option value="Harry" <?=MySQLHas($row10[3]) ? ' selected="selected"' : '';?> >Harry</option>
</SELECT>
harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

Dear 海綿大,感謝回答...
我改成您的CODE,還是不會顯示反灰的效果!!!
明明SQL裡面有資料,卻無法達到FUNTION條件@@

<?
$result10=mysql_query("SELECT * from initial where season = '2017Q1'"); 
while($row10 = mysql_fetch_array($result10)) 
echo $row10[3];

function MySQLHas($pname)
{
if	($pname == 'harry_chien')
   {return true;}
else
   {return false;}
}

?>

<SELECT NAME='test' SIZE='1' ONCHANGE=ChangeCity()>
<OPTION value='0'>---請選擇---</OPTION>
<option value="Harry" <?=MySQLHas($row10[3]) ? 'disabled="disabled"' : '';?> >Harry</option>
</SELECT>
海綿寶寶 iT邦超人 1 級 ‧ 8 月前 檢舉

好吧
我承認我寫的程式沒有上機實測過
/images/emoticon/emoticon25.gif
以下是我測試過的程式碼
如果可以用
就剩下「確定傳進去的 $row10[3] 的值」沒錯
如果還是不能用
就請您另請高明了

<?
//$result10=mysql_query("SELECT * from initial where season = '2017Q1'"); 
//while($row10 = mysql_fetch_array($result10)) 
//echo $row10[3];

function MySQLHas($pname) {
if ($pname == 'harry_chien') {
   return true;
} else {
   return false;}
}
?>

<SELECT NAME='test' SIZE='1' ONCHANGE=ChangeCity()>
<OPTION value='0'>---請選擇---</OPTION>
<option value="Harry" <?=MySQLHas('harry_chien') ? ' disabled=disabled' : '';?> Harry</option>
</SELECT>
harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

好的,海綿大,明天我在試試看 感謝您……

harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

Dear 海綿大,還是感謝幫忙...
用妳的CODE確實可以用,只是抓不到$row10[3]裡面的資料去比對...
不知道是哪裡出了問題,而且還印的出來$row10[3]資料@@
裡面有harry and pulley資料,而沒有alpha資料,改成以下CODE,還是都一起反灰/images/emoticon/emoticon20.gif

http://ithelp.ithome.com.tw/upload/images/20161201/20089833hmEEOPMr7I.jpg

<?
$result10=mysql_query("SELECT * from initial where season = '2017Q1'"); 
while($row10 = mysql_fetch_array($result10)) 
echo $row10['englishname']."<br>"; 



function MySQLHas($pname) {
$result10=mysql_query("SELECT * from initial where season = '2017Q1'"); 
while($row10 = mysql_fetch_array($result10)) 
if ($row10[3] == 'harry_chien') {
   return true;
} else {
   return false;}
}
?>

<SELECT NAME='test' SIZE='1' ONCHANGE=ChangeCity()>
<OPTION value='0'>---請選擇---</OPTION>
<option value="harry_chien" <?=MySQLHas('harry_chien') ? ' disabled=disabled' : '';?>>harry_chien</option>
<option value="pulleylee" <?=MySQLHas('pulleylee') ? ' disabled=disabled' : '';?>>pulleylee</option>
<option value="alpha_hong" <?=MySQLHas('alpha_hong') ? ' disabled=disabled' : '';?>>alpha_hong</option>
</SELECT>
0
kerryindex
iT邦新手 5 級 ‧ 8 月前

根據大大你上述的需求

  1. 你在select成員時,就需要submit這張form ←Javascript or jQuery達成
  2. 假設是由POST取得資料,就判斷該成員是否存在
  3. 如果成員存在的話,就在option tag 輸出selected

不過大大你提到反灰是要將select給disabled嗎? 不在給人變更內容嗎?

看更多先前的回應...收起先前的回應...
harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

大大,是否有範例呢?
是阿用Disabled反灰,不過是在當頁PHP直接條件達成這樣的效果

kerryindex iT邦新手 5 級 ‧ 8 月前 檢舉

簡單的語法,你可以先試試看。
如果合用,再把資料庫的語法套用上去。

<html>
<head>
<meta charset='utf-8'>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>
<script type='text/javascript'>
$(document).ready(function() {
	//$('#Select').change(function() {
	$('#Select').on('change', function() {
		$('#Form').submit();
	});
});
</script>
</head>
<body>
<?php
	$mysql_value = "alpha"; //假設資料庫中存在alpha這個帳號
	if ( isset($_POST['Select']) && $_POST['Select'] == $mysql_value){
		//POST比對到資料庫中存在alpha
		$disable = 1;
		echo "『alpha』帳號為真,故鎖定Select。";
	} else {
		$disable = 0;
	}
?>
<form id='Form' action="" method='post'>
	<select id='Select' name='Select' <?php if ($disable == 1){ echo "disabled"; }?>>
	//disabled用在select中,才有將select反灰的作用。
		<option value='0'>請選擇</option>
		<option value='alpha' <?php if (isset($_POST['Select']) && $_POST['Select'] == "alpha"){ echo "selected";} ?>>alpha</option>
		<option value='Harry' <?php if (isset($_POST['Select']) && $_POST['Select'] == "Harry"){ echo "selected";} ?>>Harry</option>
	</select>
</form>
</body>
</html>

harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

Dear kerryindex大大~
我用了海綿大的CODE...
只是抓不到$row10[3]裡面的資料去比對...
不知道是哪裡出了問題,而且還印的出來$row10[3]資料@@
裡面有harry and pulley資料,而沒有alpha資料,改成以下CODE,還是都一起反灰/images/emoticon/emoticon20.gif

http://ithelp.ithome.com.tw/upload/images/20161201/20089833hmEEOPMr7I.jpg

<?
$result10=mysql_query("SELECT * from initial where season = '2017Q1'"); 
while($row10 = mysql_fetch_array($result10)) 
echo $row10['englishname']."<br>"; 



function MySQLHas($pname) {
$result10=mysql_query("SELECT * from initial where season = '2017Q1'"); 
while($row10 = mysql_fetch_array($result10)) 
if ($row10[3] == 'harry_chien') {
   return true;
} else {
   return false;}
}
?>

<SELECT NAME='test' SIZE='1' ONCHANGE=ChangeCity()>
<OPTION value='0'>---請選擇---</OPTION>
<option value="harry_chien" <?=MySQLHas('harry_chien') ? ' disabled=disabled' : '';?>>harry_chien</option>
<option value="pulleylee" <?=MySQLHas('pulleylee') ? ' disabled=disabled' : '';?>>pulleylee</option>
<option value="alpha_hong" <?=MySQLHas('alpha_hong') ? ' disabled=disabled' : '';?>>alpha_hong</option>
</SELECT>
kerryindex iT邦新手 5 級 ‧ 8 月前 檢舉

function MySQLHas($pname) {
$result10=mysql_query("SELECT * from initial where season = '2017Q1'");
while($row10 = mysql_fetch_array($result10))
if ($row10[3] == 'harry_chien') {
return true;
} else {
return false;}
}

問題出在你的function裏
你從外部給於$pname,所以你的if判斷式應該要修改

if ($row10[3] == 'harry_chien') {
將harry_chien改為$pname

不過我從你的程式碼中沒看見你要怎麼判斷你的登入者是那位呢?
依這段邏輯的結果,是你的select還是會全部反灰的。
資料庫每一個user帳號都是存在,所以回傳true。

harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

Dear kerryindex大大,好的 我在TryTry看,有問題在回覆上來,感謝幫助小弟…這關卡好久ˊˋ

harry789111 iT邦新手 4 級 ‧ 8 月前 檢舉

Dear kerryindex大大!!!
我覺得很像是SQL那段出問題...我用php IF條件還是印出沒有
不過echo $row10['englishname']."";是有資料的...
感覺上很像是SQL的問題.../images/emoticon/emoticon46.gif
卡好久 嗚嗚

<?
$result10=mysql_query("SELECT * from initial where season = '2017Q1'"); 
while($row10 = mysql_fetch_array($result10, MYSQL_ASSOC)) 
echo $row10['englishname']."<br>"; 
if ($row10['englishname']== 'harry_chien')
{echo '有';}
else {echo '沒有';}	
?>

我要發表回答

立即登入回答