Liste/bouton radio formulaire avec php

Résolu/Fermé
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 - 3 oct. 2008 à 22:03
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 - 5 oct. 2008 à 21:16
Bonjour,

je débute en php, je m'entraine sur de petits exemples de formulaire pour comprendre comment ça marche!
Je prends pour exemple un boutique en ligen qui vendrait des animaux de compagnie.

J'ai fais un champs de saisie dans un formulaire où l'on tappe le type d'animal que l'on veut acheter!

Dans ma base de donné l'animal est répertorié avec son prix et quand on tappe le nom de l'animal la bdd nous affiche le prix qu'il coute. Jusque là j'y arrive!

Maintenant je ne comprends pas comment transmettre des données à aller chercher dans la bdd quand il s'agit de bouton radio ou de liste. exemple:( oiseaux, rongeurs ou reptile).

Que dois-je mettre dans le name des balises :

<input name="" type="radio" value="" />

et <select name=""></select> ????


et que dois-je rajouter comme champs dans la table en plus des champs type d'animaux et prix pour qu'il differencit les cathégories?Faut -il ajouter quelque chose dans une autre table?
dans la page traitement.php?voici mes codes actuelles: ( merci de m'aider)



<form method="post" action="traitement.php">

type d'animal:<input type="text" name="animaux" />
</form>



page traitement:

<?php
include("config.inc.php"); ?>
<?php

// on teste si notre variable est déclarée
if (isset($_POST['animaux'])) {

// lancement de la requête
$sql = 'SELECT prix FROM produits WHERE type = "'.$_POST['animaux'].'"';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on récupère le résultat sous forme d'un tableau
$data = mysql_fetch_array($req);

// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
mysql_close ();

// on affiche le résultat
echo 'Le prix est : '.$data['prix'];
}
else {
echo 'La variable animaux n\'est pas déclarée';
}
?>
A voir également:

8 réponses

donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
3 oct. 2008 à 22:35
bonjour,

voici un petit exemple pour les boutons radios si c'est ce que tu cherches:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<title></title>
</head>
<body>
<?php
if(isset($_POST["choix"]))
{
echo "Vous avez choisi ".$_POST["choix"].".";
}
else
{
?>
<form method="post" action="">
<input name="choix" id="choix1" type="radio" value="1" />
<label for="choix1">Choix 1</label>
<input name="choix" id="choix2" type="radio" value="2" />
<label for="choix2">Choix 2</label>
<input name="choix" id="choix3" type="radio" value="3" />
<label for="choix3">Choix 3</label>
<input name="choix" id="choix4" type="radio" value="4" />
<label for="choix4">Choix 4</label>
<input type="submit" value="Valider" />
</form>
<?php
}
?>
</body>
</html>



pour les catégories, dans ta base rajoute une table avec un identifiant de catégorie (1,2,3,4,etc...) et le nom de la catégorie, ensuite il te suffira de mettre le numéro de la catégorie dans l'enregistrement de chaque type d'animal

exemple:

Catégories:
ID Nom
1 Reptiles
2 Oiseaux

Animaux:
ID Nom IDCAT
1 Rouge-gorges 2
2 Crocodile 1
3 Perroquet 2
4 Pie 2
1
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 5
4 oct. 2008 à 16:37
Merci, le système fonctionne mais j'ai ajouter des animaux à ma bdd, genre : loup, amster angora, amster russe et pourtant quand je choisie une cathégorie rongeur ou canin, il sort que le lapin ou le chien qui étaient mes premières entrées dans la bdd.



comment sortir tt mes articles d'une cathégorie?
et là je rajoute le syteme radio avec mon formulaire initiale mais j'ai une erreur ligne 14 de ma page de traitement:


<form method="post" action="traitement.php">

type d'animal:<input type="text" name="animaux" />


<br />
<br />


<input name="choix" id="choix1" type="radio" value="22" />
<label for="canin">Canin</label> <br />

<input name="choix" id="choix2" type="radio" value="23" />
<label for="rongeur">Rongeur</label>

<input type="submit" value="Valider" />



</form>



et la page de traitement qui est surement tres fausse!!

// on teste si notre variable est déclarée
if (isset($_POST['animaux'])) &&(isset($_POST['choix'])){

// lancement de la requête
$sql = 'SELECT prix,type FROM produits WHERE type = "'.$_POST['animaux'].'" AND WHERE idcath = "'.$_POST['choix'].'"';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on récupère le résultat sous forme d'un tableau
$data = mysql_fetch_array($req);

// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
mysql_close ();

// on affiche le résultat
echo 'animal : '.$data['animaux']; ?>
<br />

<?php
echo 'Le prix est : '.$data['prix'];


}
else {
echo 'La variable nom_proprio n\'est pas déclarée';
}
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
4 oct. 2008 à 18:42
il y a une erreur:

<input name="choix" id="canin" type="radio" value="22" />
<label for="canin">Canin</label> <br />

<input name="choix" id="rongeur" type="radio" value="23" />
<label for="rongeur">Rongeur</label>

regardes bien l'exemple, la valeur de l'attribut "for" doit avoir la même valeur que l'attribut "id"

sinon pour la requête SQL, c'est assez simple, en fait tu ne parcours pas le résultat de ta requête, ici tu ne fais appel qu'une seule fois à mysql_fetch_array donc tu ne prends que la première ligne!

voici la méthode à utiliser:

while($data = mysql_fetch_array($req))
{
echo 'animal : '.$data['animaux'].'<br /';
echo 'Le prix est : '.$data['prix'];
}

à chaque boucle, ça appelera mysql_fetch_array et donc ça mettra la ligne suivante dans $data, jusqu'à ce qu'il n'y ait plus de résultats à afficher
0
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 5
4 oct. 2008 à 18:48
ok mais à quoi sert le label for puisque tout à l'heure j'ai essayé en laissant rongeur pour for dans un autre exemple et ça marchait??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 5
4 oct. 2008 à 18:56
jai ce message d'erreur aussi!


Parse error: parse error, unexpected T_BOOLEAN_AND in C:\Documents and Settings\nicolas\Bureau\apprentissage php\traitement.php on line 14
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
4 oct. 2008 à 19:26
problème de parenthèses ;)

if (isset($_POST['animaux']) && isset($_POST['choix'])) {
0
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 5
5 oct. 2008 à 15:16
j'ai tjrs la meme erreur!


Parse error: parse error, unexpected T_BOOLEAN_AND in C:\Documents and Settings\nicolas\Bureau\apprentissage php\traitement.php on line 14


la ligne 14 de ma page traitement c'est ça:


// lancement de la requête
$sql = 'SELECT prix,type FROM produits WHERE idcath = "'.$_POST['choix'].'" AND idtrans="'.$_POST['trans'].'"' ;



je ne sais pas si c'est autorisé de mettre un and!




revoici mes codes:!

page formulaire:

<form method="post" action="traitement.php">

<input name="trans" id="trans1" type="radio" value="11" />
<label for="trans1">Vente</label> <br />

<input name="trans" id="trans2" type="radio" value="12" />
<label for="trans2">Location</label>


<br />
<br />


<input name="choix" id="choix1" type="radio" value="22" />
<label for="choix1">Canin</label> <br />

<input name="choix" id="choix2" type="radio" value="23" />
<label for="choix2">Rongeur</label>

<input type="submit" value="Valider" />



</form>



page de traitement:





// on teste si notre variable est déclarée
if (isset($_POST['trans']))&& ($_POST['choix'])){

// lancement de la requête
$sql = 'SELECT prix,type FROM produits WHERE idcath = "'.$_POST['choix'].'" AND idtrans="'.$_POST['trans'].'"' ;

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on récupère le résultat sous forme d'un tableau
$data = mysql_fetch_array($req);



while ($data = mysql_fetch_array($req)) {
// on affiche les résultats
echo 'Animal : '.$data['type'].'<br />';
echo 'Son prix : '.$data['prix'].'<br /><br />';
}




}
else {
echo 'La variable nom_proprio n\'est pas déclarée';
}
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
5 oct. 2008 à 15:44
en SQL, ce ne sont pas des guillemets normalement ^^

// lancement de la requête
$sql = "SELECT prix,type FROM produits WHERE idcath ='".$_POST['choix']."' AND idtrans='".$_POST['trans']."'" ;

copie/colle

EDIT: sur la même ligne surtout!
0
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 5
5 oct. 2008 à 16:08
t'es sure de ta ligne de code??
j'ai encore l'erreur, si ce ne sont pas des guillemets pourquoi le début de ta ligne de code est :"SELECT
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
5 oct. 2008 à 16:24
// lancement de la requête
$sql = "SELECT prix,type FROM produits WHERE idcath='".($_POST['choix'])."' AND idtrans='".($_POST['trans'])."'";

ce sont des guillemets pour dire que c'est une chaîne de caractères pour PHP mais à l'intérieur d'une requête SQL ce sont des apostrophes ^^

pour la requête essai comme ça, sinon c'est que l'erreur ne vient pas de là...
0
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 5
5 oct. 2008 à 21:16
merci
0