Afficher le contenu d'1 tableSQL ds un bouton

Fermé
keny91 - 30 août 2011 à 16:06
 Utilisateur anonyme - 1 sept. 2011 à 13:36

Bonjour,

alors voilà mon soucis. je voudrais afficher le contenu du champs d'une table dans un bouton type select comme celui ci en PDO:

<select name="categorie" size=1>
<option value=""> ici
<option value=""> ici
<option value=""> ici
<option value=""> ici
</select>


j'ai réussi à les afficher dans ma page ( code ci dessous ) mais la but est qu'ils se retrouve dans mon bouton et non dans ma page.

$r =$bdd->prepare('SELECT categorie FROM categories') or die(print_r($bdd->errorInfo()));
$r->execute(array());

while ($donne = $r->fetch())
{
echo $donne['categorie']. '<br/>';
}


si quelqu'un pouvait m'aider car je suis perdu, j'ai essayer plein de choses en trouvant ça et la des idées sur les forums mais rien de concluant.

merci à vous.

Keny

3 réponses

Bonjour,

En faisant comme ceci :

$r =$bdd->prepare('SELECT categorie FROM categories') or die(print_r($bdd->errorInfo())); 
$r->execute(array()); 

echo '<select name="categorie" size=1>'; 
while ($donne = $r->fetch()) 
{ 
echo '<option value="'.$donne['categorie'].'">'.$donne['categorie']; 
}  
echo '</select>'; 



Zébulon
0
super,
ça marche, mais petit soucis ça créer le même bouton que le mien mais en haut à gauche de ma page et pas dans celui que j'avais placé dans ma page qui lui reste vide.

merci bcp pour cette réponse rapide et efficace .

keny
0
j'ai trouvé comme un grand !! MMMerciiiiii

kevin
0
Utilisateur anonyme
30 août 2011 à 16:42
bonne continuation
0
j'ai une autre question sans vouloir abuser ( je précise que mon code marchait en mysql mais en PDO je n'y connait rien donc la retranscription est ardu )

j'ai donc mes boutons comme celui des commentaires (qui marche, merci Neoprog67 )

ainsi qu' un bouton "valider" qui devrai envoyer les données sélectionnées dans une nouvelle table resultats:





$bdd->exec('INSERT INTO resultats(categorie,local,scoreLocal,visiteur,scoreVisiteur,date,formeMatch,indexCategorie) VALUES (\'$_POST[envoi_categorie]\',\'$_POST[envoi_local]\',\'$_POST[envoi_scoreLocal]\',\'$_POST[envoi_visiteur]\',\'$_POST[envoi_scoreVisiteur]\',\'$_POST[envoi_date]\',\'$_POST[envoi_formeMatch]\',\'$_POST[envoi_indexCategorie]\')');

echo 'le résultat à bien été ajouté';





et un bouton "supprimer" qui supprime la ligne de resultat choisie de la table resultat :





$bdd->exec("DELETE * FROM resultats
WHERE categorie = '$_POST[envoi_categorie]'");



echo 'le résultat à bien été supprimé';



MAIS VOILA, je pense que mes codes sont bon (ou pas, lol) mais je n'arrive pas à les raccorder à mes 2 boutons "valider" et "supprimer" !!
0
Utilisateur anonyme
31 août 2011 à 07:25
C'est un problème HTML que vous avez là, plus rien à voir avec SQL.
Si je comprends bien vous avez un formulaire et deux boutons, valider et supprimer, c'est bien ça ?

Dans ce cas vous pouvez faire ainsi, ajouter un <hidden name='todo'>dans votre formulaire, lorsque vous cliquez sur le bouton ajouter vous mettez en JS le hidden à ajouter et vous soumettez le formulaire, pour supprimer vous mettez le hidden à supprimer et vous soumettez le formulaire et dans votre PHP vous testez la valeur de $_POST['todo'] pour savoir quell action exécuter, delete ou insert
0
Utilisateur anonyme
31 août 2011 à 15:39
Scincèrement, je ne comprends pas du tout votre code, désolé.

A quoi servent ces variables ?

$scores = "resultats";
$requetes = "requetes";
$visiteurs = "visiteurs";
$categories = "categories";
$maj = "miseAJour";
$clubs = "clubs";
$categories = "categories";
$clubsCopie = "clubsBak";

Pourquoi initialisez-vous $_POST avec ceci :$_POST['choix_action']=$bdd->exec('INSERT INTO ...

A quoi sert cet hidden <input type="hidden" value="ajouter" name="choix_action"/>

Votre code fait systématiquement un insert, puisqu'il passe systématiquement sur cette partie :

$_POST['choix_action']=$bdd->exec('INSERT INTO resultats(categorie,local,scoreLocal,visiteur,scoreVisiteur,date,formeMatch,indexCategorie) VALUES (\'$_POST[envoi_categorie]\',\'$_POST[envoi_local]\',\'$_POST[envoi_scoreLocal]\',\'$_POST[envoi_visiteur]\',\'$_POST[envoi_scoreVisiteur]\',\'$_POST[envoi_date]\',\'$_POST[envoi_formeMatch]\',\'$_POST[envoi_indexCategorie]\')');

Si vous voulez un comportement à façon il va falloir tester sur quel bouton vous avez cliqué.

Là vous avez deux boutons submit, si vous cliquez sur l'un des deux, comment pouvez vous le savoir ?

Il faudrait faire deux boutons ajout et suppr, pas des submit, un hidden choix_action.
Sur les boutons mettre un évènement qui en Javascript met à jour la valeur de choix_action avec 'suppr' ou 'ajout' et qui ensuite poste le formulaire.

Ensuite à l'emplacement du insert faire un test sur la valeur de $_POST['choix_action'], si $_POST['choix_action']=='ajout' faire un insert sinon faire un delete
0
- alors, les variables en haut ne servent plus à rien, cela faisait parti de mon ancien code, voilà c'est supprimé.

- mes boutons sont restés en hidden et appelés choix_action car précédement j'avais essayé ça :


if(isset($_POST['choix_action'])){
$choix=$_POST['choix_action'];
}
else
{

if(isset($_POST['ajout'])){
$choix='ajouter';}

if(isset($_POST['suppr'])){
$choix='supprimer';}
}


switch($choix)
{
case 'ajouter':
$bdd->exec('INSERT INTO resultats(categorie,local,scoreLocal,visiteur,scoreVisiteur,date,formeMatch,indexCategorie) VALUES(\'$_POST[envoi_categorie]\',\'$_POST[envoi_local]\',\'$_POST[envoi_scoreLocal]\',\'$_POST[envoi_visiteur]\',\'$_POST[envoi_scoreVisiteur]\',\'$_POST[envoi_date]\',\'$_POST[envoi_formeMatch]\',\'$_POST[envoi_indexCategorie]\')');

echo 'le résultat à bien été ajouté';

break;


case 'supprimer':
$bdd->exec("DELETE FROM resultats
WHERE categorie = '$_POST[envoi_categorie]'", $connexion);

echo 'le résultat à bien été supprimé';

break;
}
0
Utilisateur anonyme
31 août 2011 à 16:13
Oui globalement c'est l'idée en effet, le hidden choix_action dit ce qu'il faut faire, encore faut-il qu'il n'y aie qu'un seul <hidden name='choix_action"> et que votre code HTML Javascript mette sa valeur à ajouter ou supprimer en fonction du <input type="button" name="ajouter">
ou
<input type="button" name="supprimer">
sur lequel vous cliquez
0
j'ai pas bien compris votre dernier message, pourriez vous approfondir un petit peu svp.

Et comment puis-je n'avoir qu'un seul <hidden name='choix_action"> si j'en ai un sur le bouton "supprimer" et un autre sur celui "ajouter"
0
Utilisateur anonyme
1 sept. 2011 à 08:03
Vous n'avez qu'un seul <hidden name='choix_action" id="choix_action">
et deux boutons
<input type="text" name="ajouter" value="ajouter">
<input type="text" name="supprimer" value="supprimer">

Sur ces deux boutons vous ajoutez un évènement onClick, dans cet évènement vous récupérez l'objet ayant pour id="choix_action" et vous lui assignez la valeur désirée soit, ajouter, soit supprimer, ce qui donne pour le bouton ajouter
<input type="text" name="ajouter" value="ajouter" onclick="document.getElementById('choix_action').value='ajouter';'">

ainsi le champ hidden prend la valeur 'ajouter' lorsque que vous cliquez sur le bouton ajouter

Ensuite il faut soumettre votre formulaire (méthode submit()) donc il faut que votre formulaire possède un nom, vous ajoutez donc un attribut name='formulaire' par exemple à votre balise form <form name='formulaire'....

Dans l'évènement onClick du bouton ajouter vous complètez avec l'instruction suivante document.formulaire.submit(); pour envoyer le formulaire ce qui donne :

<input type="text" name="ajouter" value="ajouter" onclick="document.getElementById('choix_action').value='ajouter';document.formulaire.submit();'">

Reste à faire la même chose pour le bouton supprimer :

<input type="text" name="supprimer" value="supprimer" onclick="document.getElementById('choix_action').value='supprimer';document.formulaire.submit();'">
0
Super, j'ai compris. Mon post est resolu :-)
Merci beaucoup, c'est agréable d'avoir des personnes
Comme vous qui prennent sur le temps pour partager
Leurs connaissances.
Bonne continuation.
Keny
0
Utilisateur anonyme
1 sept. 2011 à 13:36
Bonne continuation à vous aussi
0