2012-05-03 6 views
0

J'essaye d'écrire une boîte de sélection collante utilisant le HTML et le PHP. Je souhaite que les sélections que l'utilisateur a saisies avant la soumission soient mises en surbrillance après l'appui sur submit. J'ai essayé plusieurs façons différentes et cela ne semble pas fonctionner. Voici la ligne comme je l'ai maintenant.Boîte de sélection adhésive

<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> 

Je sais que les travaux echo "selected" parce que j'ai essayé avec juste que dans la balise option.

Voici le code complet avec une balise d'option légèrement différente dans les balises de sélection, mais cela ne vous inquiète pas.

<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

Je pense qu'il serait utile pour vous de réduire l'échantillon de code afin d'éliminer les lignes qui, à votre avis, ne sont pas pertinentes pour ce problème particulier. –

+0

la partie supérieure est la section pertinente avec le fond étant la page entière au cas où quelqu'un voulait voir l'image globale. Spécifiquement, la balise

Répondre

2

Vous pouvez utiliser la fonction php in_array.

Voici un exemple de code qui vous guidera.

<? 
    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

a essayé d'utiliser la fonction in_array et cela ne fonctionne pas pour une raison quelconque. –

+0

Pouvez-vous poster votre code avec l'utilisation de la fonction in_array? – VibhaJ

0

Si je lis ce droit

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

produit

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

Pour spécifier qu'un option doit être sélectionné, vous devez utiliser l'attribut selected:

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

Essayez ceci:

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

que ce soit echo selected ou echo selected = "sélectionné cela ne fonctionne pas." Il semble que la valeur de $ temp [1] ne soit pas prise en compte. Echo selected fonctionne dans le but pour lequel je l'utilise mais je sais –

+0

@aaron burns: Alors cela devrait être votre question Vous avez commenté 'echo $ temp [1];' - qu'est-ce que cela a fait, et avez-vous essayé 'print_r ($ temp);'? Quel est le but de '$ i'? – mkjeldsen