2010-10-25 2 views
1

Quelqu'un peut-il m'aider s'il vous plaît? Je suis nouveau sur php, actuellement j'essaie d'utiliser $_POST['item'] pour obtenir une chaîne (composée de plusieurs mots) à partir d'une liste déroulante et ensuite le traiter. Cependant, lorsque j'utilise $_POST['item'], seul le premier mot est renvoyé, le reste des mots est manquant.comment obtenir php pour lire dans une chaîne de mots d'une liste déroulante?

J'ai une liste déroulante, quelque chose comme:

echo "<form action='process_form.php' method='post'>"; 
echo "Select an item<br />"; 
echo "<select name='item' id='item'>"; 
... 
... 
... 

chaque élément dans la liste déroulante est une chaîne qui a des noms de produits tels que:

dressmaker mannequin size 12 
torso mannequin in white color 
... 

L'utilisateur sélectionne ensuite un élément de la liste déroulante. Quand j'ai utilisé $_POST['item'] pour obtenir cette chaîne, j'ai le premier mot "dressmaker", tous les silences manquaient.

Comment obtenir la chaîne entière?

Merci beaucoup à l'avance.

+0

envoyer votre code afin que nous puissions jeter un oeil – Drewdin

+0

Comment utilisez-vous $ _POST [ « item »]? Ce que vous décrivez devrait fonctionner, mais je devrais voir le code pour vous dire ce qui ne va pas. – Hans

+0

À quoi ressemblent les valeurs de vos options? – Drewdin

Répondre

2

Je ne sais pas exactement ce que vous faites mais je ferais quelque chose comme ça. Pour cet exemple, je suppose que les valeurs "mannequin de mannequin taille 12" correspondront aux valeurs des colonnes de la base de données auxquelles je me référerai comme "colA, colB, colC, et colD", et en plus je suppose que vous avez une colonne "ID" dans votre base de données.

Voici le code j'utiliser pour générer la liste de sélection déroulante:

//$query is the variable storing the result of the mysql_query(); 
//assumption is that the result-set is non-empty 

echo '<select name="item" id="item">\n'; //\n - new line character 

//run through the loop to generate the items inside the list 
while ($result = mysql_fetch_assoc($query)) { 
    //note the id - it will be used to find data in the 
    //database after the POST is complete 

    //couple of temp variables (not necessary but makes code cleaner) 
    $database_id = $result["ID"]; 
    $colA = $result["colA"]; //ex:dressmaker 
    $colB = $result["colB"]; //ex:mannequin 
    $colC = $result["colC"]; //ex:size 
    $colD = $result["colD"]; //ex:12 

    //add option to the select drop-down 
    echo "<option value=\"$database_id\">$colA $colB $colC $colD</option>\n"; 
} 
echo "</select>"; 

maintenant pour récupérer les données du POST. J'inclus le code suggéré par Drewdin.

//form was submitted already 
//assumption is that the database connection is established 
$item_id = mysql_real_escape_string(trim($_POST["item"])); 

//Now get the info from the database for this id 
//table is "table" 
$string = "SELECT * FROM table WHERE ID = $item_id"; 
$query = mysql_query($string) or die("Could not complete the query: $string"); 

//assumption here is that the result set is non-empty 
$result = mysql_fetch_assoc($query); 

$colA = $result["colA"]; //ex:dressmaker 
$colB = $result["colB"]; //ex:mannequin 
$colC = $result["colC"]; //ex:size 
$colD = $result["colD"]; //ex:12 

//now you can use the values of colA-D to compute whatever you want 

Espérons que cela aide. L'utilisation des identifiants de base de données est agréable pour la sécurité et rend les choses plus gérables.

En ce qui concerne l'utilisation de ce blog. Vous pouvez poster des commentaires sur les réponses des personnes postées. Si vous voulez toutefois ajouter quelque chose à votre question, vous pouvez éditer votre question originale et assurez-vous que c'est évident ce qui a été ajouté.

Lorsque le problème est résolu et si une réponse vous a aidé et que vous l'avez appréciée, vous pouvez la sélectionner comme réponse finale en cliquant sur la coche qui se trouve à côté.

Bonne chance

+0

Je comprends maintenant. Tous les problèmes que j'ai eu était dû à mon manque de connaissance de (plus sur) la forme et le côté de la base de données. Si j'avais utilisé l'identifiant de clé primaire comme valeur de l'attribut value, mes problèmes auraient été plus évidents (à meself) en premier lieu. Au lieu de cela, j'utilisais le style (qui est un peu comme un code d'article avec plusieurs mots) comme valeur, ce qui a créé le problème. Après avoir lu beaucoup de réponses, j'ai commencé à comprendre le problème sous-jacent. Au lieu d'obtenir une solution rapide et temporaire, je devrais utiliser correctement ma base de données et mes formulaires html. – Ottoman

+0

Désolé miki725, merci aussi de m'avoir aidé à utiliser ce forum. Puis-je vérifier plusieurs réponses? Parce que je trouve que presque toutes les réponses aident vraiment. Au début, je ne comprenais pas comment ils aident, mais maintenant je le fais et je trouve que la plupart d'entre eux sont très utiles, y compris le vôtre. Puis-je vérifier plusieurs au lieu d'un? :) – Ottoman

+0

Je suis également nouveau sur ce forum, donc je ne sais pas si vous pouvez vérifier plusieurs réponses, mais je suis d'accord, généralement de nombreuses réponses sont très utiles. En ce qui concerne l'apprentissage de bases de données, de PHP et de formulaires HTML, lorsque j'ai appris ces choses, j'ai trouvé ce livre utile, surtout pour les bases de données. Je suggère de vérifier: "Programmation PHP 6/MySQL pour le débutant absolu" par Andrew B. Harris. C'est très simple, mais présente des idées importantes et utiles. – miki725

0

Voici comment le php obtient les valeurs de l'élément sélectionné HTML:

<select name="item" id="item"> 
    <option value="this is option 1">option 1</option> 
    <option value="this is option 2">option 2</option> 
    <option value="this is option 4">option 3</option> 
    ... 
</select> 

Fondamentalement, vous feriez quelque chose comme:

$var = $_POST['item']; 

Le var $ sera le tout ce qui était entré dans la "valeur" de l'étiquette d'option. Donc assurez-vous juste que vous avez les bonnes valeurs entrées dans les champs de valeur.

Espérons que ça aide.

+0

Je recommande de ne pas passer tout votre contenu dans votre champ de valeur, mais en utilisant un identifiant à la place. Cet ID peut être une valeur dans votre BD ou dans un tableau. – malletjo

+0

@racar C'est ce à quoi 'value' correspond, en spécifiant la valeur d'un élément. – meagar

+0

Salut les gars, 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. – Ottoman

1

sans voir vos options sélectionnez Je pense que cela pourrait vous aider à

if (isset($_POST['submit'])) { 
    // Grab the output of the select list 
    $Select_Output = mysqli_real_escape_string($dbc, trim($_POST['item'])); 
    //What ever else you want to do here... 
} 

Je voudrais aussi utiliser le poste de Miki725 pour vous assurer que votre liste de sélection est correctement configuré

Questions connexes