Accueil | Aide en ligne | Annuaire | Sécurité | Articles | Astuces | Téléchargements | Association 


Mon compte SOS Ordi

Vous n'êtes pas identifié
[-> S'inscrire à SOS Ordi
[-> Mot de passe perdu ?
S'identifier


Rechercher sur SOS Ordi

Ok

Dans





 Catégories de l'aide en ligne

 Aide en ligne




 Partenaires

  SOS Ordi > Aide en ligne > Logiciel > Développement > Base de données > mySQL > bouton radio alimenté par une BDD

bouton radio alimenté par une BDD

14 réponse(s)
dont 2 ont aidé nmicoud à résoudre son problème

  Problème résolu posté le 28/08/2007 à 21:25
Profil Configuration PC
nmicoud


tux-base_overlord59_tux2
État : Absent
Bonjour,

Je réalise actuellement ma première appli en php/mysql.
Je souhaite proposer en ligne ma collection de DVD.

J'ai réussi à faire pas mal de choses, mais je bloque sur un détail.
Les boutons radio qui sont liés dans mon cas au genre du film (action, drame, etc.)

J'ai besoin d'eux dans 2 formulaires : ajout et modification.

Et j'ai besoin dans les 2 cas d'avoir les mêmes options.
Actuellement, les propositions sont stockées directement dans les fichiers php (à 2 endroits car 2 formulaires).

Je souhaite donc savoir s'il est possible de référence ces choix directement dans la BDD ; et si oui, comment ;-)



Merci


Nicolas

   

Bas de page 


Information

Pour participer vous devez d'abord être membre ou identifié :
[-> M'identifier
[-> Je ne suis pas membre SOS Ordi, je souhaite m'inscrire
[-> J'ai perdu mon mot de passe


  Réponse postée le 28/08/2007 à 21:51
Profil du membre Configuration PC
spottydj



État : Absent
Bonjour,

Oui c'est possible, exemple :

un film n'a qu'un seul genre qui est : Action, comédie, auteur.

dans ta base de données, tu fais une table "Genre" (id_genre, nom_genre)
une table "Film" (id_film, id_genre, nom_film)

Ensuite, tu peux classer te sfilms par genre, et aussi récupérer les genres disponibles pour les placer dans tes boutons radio !
Code :

<?
// connexion mysql
// ...
// ...

$rs = mysql_query("SELECT * FROM Genre");
while ($o_select = mysql_fetch_object($rs)){
?>
<? echo $o_select->nom_genre ?> <input type="radio" name="id_genre" value="<? echo $o_select->id_genre ?>" />
<?
}

?>


Pour récupérer tous les films d'un genre :

Select * from Film where id_genre = $id_genre
ou
Select * from Film, Genre where Film.id_genre = Genre.id_genre AND nom_gnere = 'Action'

Edité par spottydj le 28/08/2007 à 21:54



Réplique du développeur : Moi on m'a demandé un programme qui fonctionne, pas une oeuvre d'art !

  Réponse postée le 28/08/2007 à 22:13
Profil du membre Configuration PC
nmicoud



État : Absent
ok, merci pour la réponse; je vais tester ça.

Je laisse cependant la question ouverte pour déventuelles difficultés à venir.

Merci

  Réponse postée le 12/09/2007 à 08:58
Profil du membre Configuration PC
nmicoud



État : Absent
Je suis de retour... ça ne fonctionne pas pascontent.gif
Du moins la partie pour alimenter le bouton radio à partir des infos de la table qui contient les genres.


Quelques éléments :

En recopiant ton code, j'obtiens :


Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/121/sdb/7/f/nicololo69/dvd/add_dvd.php on line 66

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /mnt/121/sdb/7/f/nicololo69/dvd/add_dvd.php on line 67



ligne 66 = $rs = mysql_query("SELECT * FROM dvd_genre");
ligne 67 = while ($o_select = mysql_fetch_object($rs)){


J'ai créé une table dvd_genre qui contient 2 colonnes ("id" et "nom_genre").

La table qui contient les infos sur les films est "dvd".


J'ai essayé de bidouiller, et de modifier le code, mais je n'arrive à rien ; je débute vraiment dans ce domaine.


Merci,

Nicolas

  Réponse postée le 12/09/2007 à 21:51
Profil du membre Configuration PC
spottydj



État : Absent
Bonjour,

Code :

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/121/sdb/7/f/nicololo69/dvd/add_dvd.php on line 66


Déjà, vérifie que la connexion à la base de données se fait bien !

Après on verra si il y a encore des erreurs.

Réplique du développeur : Moi on m'a demandé un programme qui fonctionne, pas une oeuvre d'art !

  Réponse postée le 12/09/2007 à 21:53
Profil du membre Configuration PC
nmicoud



État : Absent
ah ben oui, elle se fait bien, je peux faire des requêtes.
La consultation fonctionne et j'interroge bien les 2 tables.

  Réponse postée le 13/09/2007 à 08:44
Profil du membre Configuration PC
spottydj



État : Absent
Et est-ce que la connection n'est pas fermée avant de refaire cette requete ?
Parce que l'erreur indique qu'il n'y a pas de connection à la base de données...

Réplique du développeur : Moi on m'a demandé un programme qui fonctionne, pas une oeuvre d'art !

  Réponse postée le 20/09/2007 à 22:02
Profil du membre Configuration PC
nmicoud



État : Absent
salut,

effectivement, je pense que la connection devait être fermée.
J'ai donc modifié le fichier "add_dvd.php", qui permet d'ajouter un DVD (!) pour obtenir ceci :


<tr align="left">
<td><b>genre par radio:</b></td>
<td>

<?
// connexion mysql
// ...
// ...

if (!($connection = @ mysql_connect($hostname, $username, $password)))
die("Cannot connect");

if (!(mysql_select_db($databaseName, $connection)))
showerror();

// Run the query on the connection
if (!($result = @ mysql_query ($query, $connection)))
showerror();

$rs = query("SELECT * FROM dvd_genre");
while ($o_select = mysql_fetch_object($rs)){
?>
<? echo $o_select->nom_genre ?> <input type="radio" name="id_genre" value="<? echo $o_select->id_genre ?>" />
<?
}
?>



J'obtiens l'erreur suivante : Error 1065 : Query was empty


J'ai essayé de modifier des choses (ajouter des $, les enlever, mettre des guillemets, etc.) mais rien ne fonctionne pour le moment...

Une idée ?


Merci

Nicolas

  Réponse postée le 22/09/2007 à 18:26
Profil du membre Configuration PC
spottydj



État : Absent
Attention aux copier coller ^^

L'erreur provient de ce morceau de code
Code :

if (!($result = @ mysql_query ($query, $connection)))
showerror();

qui est inutile dans notre cas !

supprime ce morceau de code et tout devrait aller mieux.

Réplique du développeur : Moi on m'a demandé un programme qui fonctionne, pas une oeuvre d'art !

  Réponse postée le 22/09/2007 à 19:42
Profil du membre Configuration PC
nmicoud



État : Absent
Je viens de faire la modif... et j'obtiens une autre erreur...

Le code est donc le suivant :

Code :

<?
// connexion mysql
// ...
// ...

if (!($connection = @ mysql_connect($hostname, $username, $password)))
die("Cannot connect");

if (!(mysql_select_db($databaseName, $connection)))
showerror();

$rs = query("SELECT * FROM dvd_genre");
while ($o_select = mysql_fetch_object($rs)){
?>
<? echo $o_select->nom_genre ?> <input type="radio" name="id_genre" value="<? echo $o_select->id_genre ?>" />
<?
}

?>


L'erreur est la suivante :

Fatal error: Call to undefined function query() in /mnt/121/sdb/7/f/nicololo69/dvd/add_dvd.php on line 72

la ligne 72 est : $rs = query("SELECT * FROM dvd_genre");

EDIT : Je précise à tout hasard, pour éviter toute confusion, que ce que je chercher à faire sur cette page (add_dvd) et d'alimenter le bouton radio avec le contenu de la table dvd_genre.


Je sens qu'on touche au but, merci pour le coup de main


Nicolas

Edité par nmicoud le 23/09/2007 à 09:26


  Réponse postée le 23/09/2007 à 09:29
Profil du membre Configuration PC
nmicoud



État : Absent
Ca y est, je viens de trouver !!!!

Il "suffisait" de remplacer query par mysql_query à la ligne 72. Cela donne donc :

Code :


$rs = mysql_query("SELECT * FROM dvd_genre");
while ($o_select = mysql_fetch_object($rs)){
?>
<? echo $o_select->nom_genre ?> <input type="radio" name="id_genre" value="<? echo $o_select->id_genre ?>" />
<?
}

?>




Yiipiiie !

  Réponse postée le 23/09/2007 à 09:44
Profil du membre Configuration PC
nmicoud



État : Absent
Et encore plus fort !

Je pensais que des boutons radio seraient bien, mais compte tenu du nombre d'entrées dans la table "genre", une liste de choix déroulante me semble plus appropriée.

Code :


<tr align="left">
<td><b>Genre :</b></td>
<td>

<?
if (!($connection = @ mysql_connect($hostname, $username, $password)))
die("Cannot connect");

if (!(mysql_select_db($databaseName, $connection)))
showerror();

echo "<SELECT Name=id_genre Size=1><OPTION Value=0></OPTION>";
$sql= "SELECT * FROM dvd_genre ORDER BY nom_genre ASC";
$rep= mysql_query($sql);
while($ligne_liste=mysql_fetch_array($rep)){
echo "<OPTION Value=\"".$ligne_liste['id_genre']."\">".$ligne_liste['nom_genre']."</OPTION>";
}
echo "</SELECT>";
?>



Et voilou,

merci pour tout !


Nico

  Réponse postée le 23/09/2007 à 09:44
Profil du membre Configuration PC
Robot SOSORDI



État : Absent
Réponse automatique :

Cette question est résolue

  Réponse postée le 23/09/2007 à 11:34
Profil du membre Configuration PC
spottydj



État : Absent
Voilà on y arrive ^^
En plus je vois que tu as réussi a débugguer ton programme tout seul et a adapter la solution, tu es sur la bonne voie pour la programmation !

@ bientôt !

Réplique du développeur : Moi on m'a demandé un programme qui fonctionne, pas une oeuvre d'art !

  Réponse postée le 23/09/2007 à 12:06
Profil du membre Configuration PC
nmicoud



État : Absent
Re,

En fait, je pense que je me suis emballé un peu vite...
Effectivement, je parviens bien à afficher une liste déroulante qui reprend les différents genres.

Mais quand je valide l'ajout, toutes les infos sont inscrites dans la BDD sauf... le genre pascontent.gif

Extrait add_dvd.php
Code :

<tr align="left">
<td><b>Genre :</b></td>
<td>

<?
if (!($connection = @ mysql_connect($hostname, $username, $password)))
die("Cannot connect");

if (!(mysql_select_db($databaseName, $connection)))
showerror();

echo "<SELECT name=genre>";
$sql= "SELECT * FROM dvd_genre ORDER BY nom_genre ASC";
$rep= mysql_query($sql);
while($ligne_liste=mysql_fetch_array($rep)){
echo "<OPTION Value=\"".$ligne_liste['id_genre']."\">".$ligne_liste['nom_genre']."</OPTION>";
}
echo "</SELECT>";
?>



extrait process.php
Code :

$id_increment = "NULL";

if($_POST['titre'] == NULL)
die("<html><p><center>il faut saisir au moins un titre.</center></p></html>");

if($_POST['annee'] == NULL)
$_POST['annee'] = 0;

$query = "INSERT INTO rooter_by_nico VALUES (" . $id_increment .
" ,'" . $_POST['titre'] .
"','" . $_POST['genre'] .
"','" . $_POST['acteurs'] .




En fait, je pense qu'il faut arriver à lui faire dire que si je sélectionne le genre "concert", il faut inscrire "3" dans la colonne genre. Là, je sèche...



Haut de page 

 

Version 5.6 | Infos / Contacts | Partenariat | Publicité