2010-10-25 3 views
0

merci beaucoup à tous pour votre aide. C'est apparemment une tâche si facile, et je pense que je viens de frapper un mur de briques et de ne pas savoir comment le réparer.comment obtenir php à lire dans une chaîne de mots d'une liste déroulante?

Je vais essayer d'expliquer ce que je fais un peu plus et j'espère que c'est logique.

J'ai utilisé une base de données pour remplir ma boîte de menu déroulant, menu déroulant est quelque chose comme:

echo "<form action='process_form.php' method='post'>"; 
echo "Select an item<br />"; 
echo "<select name='item' id='item'>"; 
//database was connected and select query was executed succesfully. $result was the select query result. 
while($row = mysql_fetch_array($result)) 
{ 
//each row contains more than one words, something like "dressmaker mannequin size 12" 
echo "<option value=" . $row['style'] . ">" . $row['style']. "</option>" . "<br />"; 
} 
... 
... 

zone de liste déroulante a été rempli avec les données correctes.

Ensuite, l'utilisateur sélectionne un élément dans cette liste déroulante et clique sur le bouton Soumettre.

J'ai besoin de savoir quel article l'utilisateur a sélectionné pour calculer ses frais de port, mais quand j'utilise $_POST['item'] pour essayer de trouver quel article a été sélectionné, j'obtiens le premier mot "dressmaker", les silences manquaient!

S'il vous plaît aidez-moi à obtenir toute la chaîne de mots.

Merci beaucoup à l'avance.

Désolé, je suis complètement nouveau sur les forums, et je ne sais même pas comment poster ou suivre une question. Si vous pouvez aussi m'aider à ce sujet. En ce moment, j'ai du mal à poster mes questions de suivi ... j'espère que cela apparaîtra ...

+0

duplicata possible de [comment obtenir php à lire dans une chaîne de mots d'une liste déroulante?] (Http://stackoverflow.com/questions/4011253/how-to-get-php-to-read-in -a-string-of-words-from-a-dropdown-box) –

Répondre

1

J'espère que votre base de données MYSQL a une clé primaire? Si c'est le cas, définissez le value de chaque <option> sur la clé primaire de l'élément.

Par exemple:

SQL

id desc 
1 "dressmaker thing with mannequin" 
2 "dressmaker thing no mannequin" 

Formulaire PHP

echo "<option value='".$query['id']."'>".$query['desc']."</option>"; 

lorsque le formulaire est soumis, ré-interroger la base de la description souhaitée. Vous allez faire cette re-requête de toute façon pour récupérer les prix et tel, oui?

La raison pour laquelle cela se produit est que les espaces sont découragés dans les attributs HTML. Vous ne devriez pas avoir un attribut comme value='this attribute is spaced'.

+0

Rien à redire avec les espaces dans un attribut de formulaire 'value' de l'élément. – Phil

0

Si vous avez vraiment ce que vous avez affiché comme code, alors vous manque des guillemets autour de la valeur:

<option value=" . $row['style'] . "> 

Ceci produirait:

<option value=dressmaker mannequin size 12> 

Ce n'est pas valide html, et analyseur va penser que le premier mot est la valeur. Vous devez mettre votre valeur entre guillemets:

<option value='" . $row['style'] . "'> 

GOOD: <option value='dressmaker mannequin size 12'> 

Maintenant votre valeur sera tout dans les guillemets. Soyez prudent, cependant, car si vous avez des guillemets dans la valeur $ row ['style'], cela va prématurément échapper votre valeur.

BAD: <option value='this won't work because of the apostrophe in won't'> 

Remarquez comment dans ce forum la couleur du texte de code fonctionne pour montrer ce que les valeurs sont, et explique pourquoi vous continuez à obtenir juste « modiste ».

Questions connexes