2012-05-03 6 views
0

Я пытаюсь написать липкий блок выбора с использованием HTML и PHP. Я хочу, чтобы выбранные пользователем данные были введены перед отправкой, чтобы быть выделены после нажатия кнопки. Я пробовал пару разных способов, и он, похоже, не работает. Вот строка, как у меня сейчас.Важная область выбора

<select name="selectBox[]" multiple="multiple" size="5"> 
<?php 
$i=0; 

while($temp=mysql_fetch_array($result,MYSQL_NUM)) 
{ 
    //echo $temp[1]; 
?> 
    <option value="<?php echo $temp[1] ?>" 
     <?php if(isset($_POST[$temp[1]])) {echo "selected";} ?> > 
     <?php echo $temp[1] ?> </option> 

<?php 
    $i++; 
} 

?> 
</select> 

Я знаю, что echo "selected" работает, потому что я пытался сделать это с только что в опции тега.

Вот весь код со слегка отличающимся тегом параметра в тегах выделения, но он все равно не волнует.

<html> 
<head><title>Business Registration</title></head> 

<body> 
<h1> 
Business Registration 
</h1> 



<?php 

$user="*********"; 
$DBserver="localhost"; 
$password="*********"; 

$myDatabase='nedwards'; 
$myTable1='categories'; 
$myTable2='businesses'; 
$myTable3='biz_categories'; 

//connect to the database server. 
$con=mysql_connect($DBserver,$user,$password); 

$con or die('Could not connect to MySQL: ' . mysql_error());//check connection 

mysql_select_db($myDatabase) or die("Unable to select database");//select the databse we will be using 
                   //check selection 

$result = mysql_query("SELECT * FROM $myTable1");//gets the category table.... we will use the fetch_array and take the 2nd element of the array for select box 

$submitted=$_POST['submitted']; 

if($submitted) 
{ 

    $sql="INSERT INTO $myTable2 (name, address, city, telephone, url) VALUES ('$_POST[bis_name]', '$_POST[addr]', '$_POST[city]', '$_POST[tele]' , '$_POST[url]')"; 
    mysql_query($sql, $con) or die('Error dude: ' .mysql_error()); 



// echo "$_POST[bis_name]"; 
// echo "$_POST[addr]"; 
// echo "$_POST[city]"; 


    $chosenTitles=$_POST[selectBox]; 

    //echo "$_POST[bis_name]"; 

    foreach ($chosenTitles as $temp)//will run through each title chosen 
    { 
     //echo "$temp";//for testing 

     //get cat id 
     $catTitle2IDtemp=mysql_query("SELECT * FROM $myTable1 WHERE title='$temp'", $con); 
     $catTitle2ID=mysql_fetch_array($catTitle2IDtemp, MYSQL_NUM); 
     $catID=$catTitle2ID[0];//this is the category ID 

     //get biz id 
     $temp=$_POST[bis_name]; 
     $bis_name2IDtemp=mysql_query("SELECT * FROM $myTable2 WHERE name='$temp'", $con); 
     $bis_name2ID=mysql_fetch_array($bis_name2IDtemp, MYSQL_NUM); 
     $bizId=$bis_name2ID[0];//this is the biz ID 


     mysql_query("INSERT INTO $myTable3 (business_id, category_id) VALUES ('$bizId', '$catID')"); 

    } 




} 



?> 


<table border="1"> 


<tr> 
<td rowspan="5"> 
<form name="input" action="<?php $_SERVER['PHP_SELF'] ?>" method="post"> 


<select name="selectBox[]" multiple="multiple" size="5"> 
<?php 
$i=0; 


while($temp=mysql_fetch_array($result,MYSQL_NUM))//gets each row of categroy table "$result" and takes second element of array $tempto select box 
{ 
    //echo $temp[1]; 
?> 




    <option value="<?php echo $temp[1] ?> " <?php if(in_array($temp[1], $chosenTitles)){echo "selected";} ?>  > <?php echo $temp[1] ?> </option> 


<?php 
    $i++; 
} 

?> 
</select> 

</td> 

<td>Buisness Name</td> 
<td> <input type="text" name="bis_name" value="<?php if($submitted==1){echo $_POST['bis_name'];}?>"/></td> 
</tr> 

<tr> 
<td>Address</td>  
<td><input type="text" name="addr" value="<?php if($submitted==1){echo $_POST['addr'];}?>" /></td> 
</tr> 

<tr> 
<td>City</td> 
<td><input type="text" name="city" value="<?php if($submitted==1){echo $_POST['city'];}?>"/></td> 
</tr> 

<tr> 
<td>Telephone</td> 
<td><input type="text" name="tele" value="<?php if($submitted==1){echo $_POST['tele'];}?>"/></td> 
</tr> 

<tr> 
<td>URL</td> <td><input type="text" name="url" value="<?php if($submitted==1){echo $_POST['url'];}?>" /></td> 
</tr> 


<input type="hidden" name="submitted" value="1"> 

</table> 

<input type="Submit" value="Add Business"  /> 
</form> 





<?php 
$submitted="0"; 
$_POST['submitted']="0"; 
?> 

</html> 
+1

Я думаю, вам было бы полезно сократить выбор кода, чтобы устранить строки, которые вы совершенно уверены, не имеют отношения к этой конкретной проблеме. –

+0

Верхняя часть - это соответствующая секция, нижняя часть которой является цельной страницей на случай, если кто-то захочет увидеть общую картину. Конкретно тег

ответ

2

Вы можете использовать функцию in_array php.

Ниже приведен пример кода, который поможет вам.

<? 
    if(isset($_POST['submit'])) 
    { 
     $selectBox = $_POST['selectBox']; 
    } 
?> 
<form name="input" action="<?php $_SERVER['PHP_SELF'] ?>" method="post"> 
<select name="selectBox[]" multiple="multiple" size="5"> 
<option <? if(in_array('one',$selectBox)){ echo 'selected';}?> value="one">one</option> 
<option <? if(in_array('two',$selectBox)){ echo 'selected';}?> value="two">two</option> 
<option <? if(in_array('three',$selectBox)){ echo 'selected';}?> value="three">three</option> 
<option <? if(in_array('four',$selectBox)){ echo 'selected';}?> value="four">four</option> 
</select> 

<input type="Submit" name="submit" value="Add Business"/> 
</form> 
+0

попытался использовать функцию in_array, и по какой-то причине это не работает. –

+0

Можете ли вы опубликовать свой код с использованием функции in_array? – VibhaJ

0

Если я читаю это правильно

<option value="<?php echo $temp[1] ?>" 
    <?php if(isset($_POST[$temp[1]])) {echo "selected";} ?> > 
    <?php echo $temp[1] ?> </option> 

производит

<option value="some value"selected> some value </option> 

Чтобы указать, что option следует выбирать вам необходимо использовать selected атрибут:

<option value="some value" selected="selected"> some value </option> 

Попробуйте следующее:

<option value="<?php echo $temp[1] ?>" 
    <?php if(isset($_POST[$temp[1]])) {echo ' selected="selected"';} ?> > 
    <?php echo $temp[1] ?> </option> 
+0

независимо от того, выбрано ли это эхо или выбрано эхо = выбрано, что он не работает. Похоже, что он не получает значение $ temp [1]. Echo selected работает для этой цели, но я знаю правильный путь это то, как вы намеревались. –

+0

@ aaron burns: Тогда это должен быть ваш вопрос. Вы прокомментировали 'echo $ temp [1];' - что это сделал, и вы пробовали 'print_r ($ temp);'? Какова цель '$ i'? – mkjeldsen

Смежные вопросы