|
Subject:
|
Passing value in select box to another page
|
|
Posted By:
|
Bandy
|
Post Date:
|
2/9/2004 11:42:28 AM
|
Hi, - I want pass multiple values in select box (which is populated by another drop down box) and display them in another page in php. - How I could keep these values, because when users want modify these values, they can come back on page 1 to add more values. Actually when I return on page 1, all values that I add in the select box are deleted. It's urgent, I tried many times but it didn't work. Thanks for your help.
Page 1
<input type="HIDDEN" name="art_show" action=""> <select name="artSelectionne[]" style="width:300px" size=10> <option value=0></option> </select>
Page 2
$artSelectionne = array(); $artSelectionne[]=$_POST['artSelectionne[]']; $action=$_POST['art_show'];
function show_article() { Global $artSelectionne; $num_art=count($artSelectionne);
for ($i = 0; $i < $num_art; $i++) { $show_art = $artSelectionne[$i]; echo $show_art; }
}//end show_article
<select name="artSelectionne[]" style="width:300px" size=10> <option value=0> <? show_article(); ?></option> </select> Bandy
|
|
Reply By:
|
richard.york
|
Reply Date:
|
2/9/2004 12:55:06 PM
|
Ok, a number of errors here..
1.) In order to be able to select multiple items in the select box, you must include the multiple='multiple' attribute.
<select name='artSelectionne[]' style='width:300px;' size='10' multiple='multiple'> ...
2.) $artSelectionne = array(); <- this line isn't neccessary.
3.) $artSelectionne[]=$_POST['artSelectionne[]']; <- This is wrong for a couple of reasons. First, you are using the empty bracket notation to create a new indice in the $artSelectionne array then you are assigning $_POST['artSelectionne[]'] to that array, $_POST['artSelectionne'] is the correct way to reference the array, and the empty bracket notation isn't neccessary on either variable. This is a common mistake. Empty bracket notation is used to create a *new* numerical offset entry in an array. Because of the empty bracket notation in the select field's name, artSelectionne, becomes a multi-dimensional array when passed to the server.
Page 2
$action=$_POST['art_show'];
function show_article() { for ($i = 0; $i < count($_POST['artSelectionne']); $i++) { echo $_POST['artSelectionne'][$i]; } }//end show_article
You are creating a lot of varibles that you don't need. The $_POST array is a superglobal array, meaning that it may be accessed in any scope, and as such, there would be no need to import it. If the variable isn't gauranteed to be called $_POST['artSelectionne'], then, IMO, it would be better to pass that variable as an argument to the function which makes your code less obfuscated.
You're placing all of the previous selections in one option?
<option value=0> <?php show_article(); ?></option>
: ) Rich
::::::::::::::::::::::::::::::::: Smiling Souls http://www.smilingsouls.net :::::::::::::::::::::::::::::::::
|
|
Reply By:
|
Bandy
|
Reply Date:
|
2/9/2004 1:45:24 PM
|
Thanks for your reply. But I don't know why it didn't work although I have changed the code.
On page 1 I have 2 drop down and one select box. The first drop down hold all the categories which is populated from data base (mysql). The second one ,which hold all articles, is populated depends on the selected value in the first one (the data is from the data base) When user select on value in the second drop down and press button ADD, the value will be added in the select box in where users can add many values or retrieve them. For this step I did it but I could not pass all values in the select box to another page.
Could you help me? Thanks Bandy
|
|
Reply By:
|
richard.york
|
Reply Date:
|
2/9/2004 3:29:10 PM
|
It sounds like you might need some JavaScript.
Have a look at these related threads: http://p2p.wrox.com/topic.asp?TOPIC_ID=8284 http://p2p.wrox.com/topic.asp?TOPIC_ID=8040
If you are still having trouble let us know.
: ) Rich
::::::::::::::::::::::::::::::::: Smiling Souls http://www.smilingsouls.net :::::::::::::::::::::::::::::::::
|
|
Reply By:
|
Bandy
|
Reply Date:
|
2/9/2004 11:57:19 PM
|
Thank you, I will see it. Bandy
|
|
Reply By:
|
Bandy
|
Reply Date:
|
2/11/2004 3:40:54 PM
|
Hi, I have read the link that you gave me. The only thing is I don't know how to do with the select box when I add another value from drop down. Here is my code in the project. I took a couple of java script in the Internet to do the function add article, delete article and sort, but the function sort and add didn't work correctly. Because the select box (art_selectionne[] did not do the job) and value can add many times although in the code avoid the duplicate. Thank you very much about all your help. Bandy
<?php //article.php include "inc/common_db.inc";
// Connection BD $id_lien = db_connect("novo163"); if(!$id_lien) die(sql_error());
//request item in table categorie
$categorie = "SELECT no_categorie, categorie FROM categorie_t ORDER BY categorie"; $resultat_cat = mysql_query($categorie); if(!$resultat_cat) error_message(sql_error());
?>
<!*************************************!>
<script language="JavaScript"> liste=new Array() liste[0]=new Array("Articles","") <? //********** //Request to display the drop down of articles //********** while ($cat_select = mysql_fetch_array($resultat_cat)) { $resultat_art = "SELECT description FROM article_t WHERE no_categorie = "; $resultat_art .= $cat_select["no_categorie"]; $article = mysql_query($resultat_art); ?> liste[<?echo $cat_select["no_categorie"];?>]=new Array(<? while ($val2 = mysql_fetch_array($article)) echo "\"".$val2["description"]."\","; ?>"") <? } ?> //********** //Change the drop down of articles when select categorie in the drop down categorie //********** function change_liste() { with(document.article_enregistrement){ choix=categorie.value; article="<select name='articles'>"; for(i=0;i<liste[choix].length-1;i++) article+="<option>"+liste[choix][i]+"</option>" articles.outerHTML=article+"</select>" }//end with }
//Sort items in the select box function sortSelect(obj) { var o = new Array(); if (obj.options==null) { return; } for (var i=0; i<obj.options.length; i++) { o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ; } if (o.length==0) { return; } o = o.sort( function(a,b) { if ((a.text+"") < (b.text+"")) { return -1; } if ((a.text+"") > (b.text+"")) { return 1; } return 0; } );
for (var i=0; i<o.length; i++) { obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected); } }
//********** //Add articles in the select box //********** function ajout_article(from,to) { var options = new Object(); for (var i=0; i<to.options.length; i++) { options[to.options[i].value] = to.options[i].text; } for (var i=0; i<from.options.length; i++) { var o = from.options[i]; if (o.selected) { if (options[o.value] == null || options[o.value] == "undefined" || options[o.value]!=o.text) { to.options[to.options.length] = new Option( o.text, o.value, false, false); } } } if ((arguments.length>3) || (arguments[0]==true)) { sortSelect(to); }
from.selectedIndex = -1; to.selectedIndex = -1;
}
//********* //Retrieve article in the select box //********* function retire_article(from) { for (var i=(from.options.length-1); i>=0; i--) { var o=from.options[i]; if (o.selected) { from.options[i] = null; } } from.selectedIndex = -1; } </script>
<!*************************************!> </head> <body>
<form method="post" name="article_enregistrement" action="confirmation.php"> <input type="HIDDEN" name="art_show"> <tr> <td width="27%"><strong>Choose category</strong> </td> <td width="23%"><strong>Choose article</strong></td> <td> </td>
<td><strong>Aticle added</strong></td> </tr>
<tr> <td align="left" valign="top"> <select name="categorie" onChange=change_liste()> <Option value=0>Categories</option> <? //display the drop down of category mysql_data_seek($resultat_cat,0); // movefirst while ($val = mysql_fetch_array($resultat_cat)) { ?> <option value=<?echo $val["no_categorie"];?>> <? echo $val["categorie"];?></option> <? } mysql_close(); ?> </select> </td>
<td align="left" valign="top"> <select name="articles"> <option>Articles</option> </select>
//This is two button to add or delete articles in the select box (art_selectionne[])
<input type="button" name="add" value="Add ->" onClick="ajout_article(document.forms[0]['articles'],document.forms[0]['artSelectionne[]'],false);return false;">
<input type="button" name="delete" value="<- Delete " onClick= "retire_article(document.forms[0]['artSelectionne[]']); return false;">
<select name="artSelectionne[]" style="width:300px" size=10 multiple="multiple"> <option = 0></option> </select> </td> </tr>
<input type="submit" name="submit" value=" Submit" > <input type="button" name="cancel" type="text" value=" Cancel " onClick="window.location='../Index.html'">
</body> </html>
|