je souhaiterais afficher la discographie par artiste apres avoir selectionner ce dernier parmis une liste
Lorsque je teste ma page sql je reçois le mesage d'erreur suivnant "Erreur lors de la requête SQL !!! "
<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$password = '';
$db = 'musiceo';
// connection à la DB
$connexion=mysql_connect($host,$user,$password) or die ('Erreur lors de la connexion au serveur !!! ');
mysql_select_db($db,$connexion) or die ('Erreur lors de la connexion à la base de données !!! ');
$sql='SELECT nom_artiste FROM artiste';
$rep=mysql_query($sql,$connexion) or die ('Erreur lors de la requête SQL !!! ');
echo 'Selectionner un artiste :
';
echo '<form method="GET">';
echo '<select>';
while($row = mysql_fetch_array($rep)) {
echo'<option name="nomartiste">'.$row["nom_artiste"].'</option>';
}
echo '</select>';
echo '</form>';
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$r='SELECT artiste_album, titre_album, typemusique_album, commentaires_musique FROM album where artiste_album="$_GET["nomartiste"]."';
$req=mysql_query($r,$connexion) or die ('Erreur lors de la requête SQL !!! ');
//nombre de lignes rapportées
$nblignes=mysql_num_rows($req);
$i=0;
echo"
Il y a $nblignes albums enregistrés dans la base
";
// debut du tableau
echo ''.\"\n\";
// première ligne on affiche les titres
echo '----
';
echo 'ARTISTE, ';
echo 'ALBUM, ';
echo 'CATEGORIE, ';
echo 'DESCRIPTION, ';
echo ''.\"\n\";
// lecture et affichage des résultats, 1 résultat par ligne.
while($row = mysql_fetch_array($req)) {
echo '----
';
echo ''.$row["artiste_album"].', ';
echo ''.$row["titre_album"].', ';
echo ''.$row["typemusique_album"].', ';
echo ''.$row["commentaires_musique"].', ';
echo ''.\"\n\";
}
echo '
'."\n";
// fin du tableau.
// on libère le résultat
mysql_free_result($req);
mysql_free_result($rep);
?>
</html>
L'erreur se situe pour la requete $r en fait je ne sais pas comment introduire la variable du select
est ce quil faut utiliser un $_get, $_post ou autre???
slt
$r = "SELECT artiste_album, titre_album, typemusique_album, commentaires_musique FROM album where artiste_album='$_GET[nomartiste]'";
si ca marche pas remplace ta requete par:
$r='SELECT artiste_album, titre_album, typemusique_album, commentaires_musique FROM album where artiste_album="$_GET["nomartiste"]."';
$req=mysql_query($r,$connexion) or die (mysql_error());
et dit nous le message d'erreur
@+
<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$password = '';
$db = 'musiceo';
// connection à la DB
$connexion=mysql_connect($host,$user,$password) or die ('Erreur lors de la connexion au serveur !!! ');
mysql_select_db($db,$connexion) or die ('Erreur lors de la connexion à la base de données !!! ');
$sql='SELECT nom_artiste FROM artiste';
$rep=mysql_query($sql,$connexion) or die ('Erreur lors de la requête SQL !!! ');
echo 'Selectionner un artiste :
';
echo '<form method="GET">';
echo '<select name="nomartiste">';
while($row = mysql_fetch_array($rep)) {
echo'<option name="nom_artiste">'.$row["nom_artiste"].'</option>';
}
echo '</select>';
echo '</form>';
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$r='SELECT artiste_album, titre_album, image_album, typemusique_album, commentaires_musique FROM album where artiste_album="$_GET["nomartiste"]"';
$req=mysql_query($r,$connexion) or die ('Erreur lors de la requête SQL !!! ');
//nombre de lignes rapportées
$nblignes=mysql_num_rows($req);
$i=0;
echo"
Il y a $nblignes albums enregistrés dans la base
";
// debut du tableau
echo ''.\"\n\";
// première ligne on affiche les titres
echo '----
';
echo 'ARTISTE, ';
echo 'ALBUM, ';
echo 'CATEGORIE, ';
echo 'DESCRIPTION, ';
echo ''.\"\n\";
// lecture et affichage des résultats, 1 résultat par ligne.
while($row = mysql_fetch_array($req)) {
echo '----
';
echo ''.$row["artiste_album"].', ';
echo '
'.$row["titre_album"].', ';
echo ''.$row["typemusique_album"].', ';
echo ''.$row["commentaires_musique"].', ';
echo ''.\"\n\";
}
echo '
'."\n";
// fin du tableau.
// on libère le résultat
mysql_free_result($req);
mysql_free_result($rep);
?>
$r='SELECT artiste_album, titre_album, image_album, typemusique_album, commentaires_musique FROM album WHERE artiste_album="$_GET["nomartiste"]"';
Je ne sais pas si l'orthographe compte en SQL mais on ne sait jammais, essai le code ci-dessus, je ne suis pas sur que SQL n'est pas sensible a la casse !!!
$r='SELECT artiste_album, titre_album, image_album, typemusique_album, commentaires_musique FROM album where artiste_album=\''.$_GET['nomartiste'].'\'';
$r='SELECT artiste_album, titre_album, image_album, typemusique_album, commentaires_musique FROM album where artiste_album=\''.$_GET['nomartiste'].'\'';
Voila ce qui s'affiche lorsque je teste la page:
Selectionner un artiste :
(ma liste d'artiste)
Notice: Undefined index: nomartiste in C:\Program Files\EasyPHP 2.0b1\www\Site AP Musiceo(3)\artiste.php on line 31
Ton formulaire n'est pas soumis. Tu affiches un select, et tu fais une requête avec le résultat du select juste après : ça ne marche pas comme ça, un formulaire. Tes variables n'existent qu'après soumission du formulaire et donc retour vers le serveur.
Je te conseille de lire quelques tutos sur les formulaires html et leur traitement côté serveur.
<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$password = '';
$db = 'musiceo';
// connection à la DB
$connexion=mysql_connect($host,$user,$password) or die ('Erreur lors de la connexion au serveur !!! ');
mysql_select_db($db,$connexion) or die ('Erreur lors de la connexion à la base de données !!! ');
$sql='SELECT nom_artiste FROM artiste';
$rep=mysql_query($sql,$connexion) or die ('Erreur lors de la requête SQL !!! ');
echo 'Selectionner un artiste :
';
echo '<form method="GET">';
echo '<select name="nomartiste">';
while($row = mysql_fetch_array($rep)) {
echo'<option name="nom_artiste">'.$row["nom_artiste"].'</option>';
}
echo '</select>';
echo '';
echo '</form>';
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$r='SELECT nom_artiste, image_artiste, type_musique, nationalité_artiste, presentation_artiste FROM artiste, album where artiste_album=nom_artiste';// and nom_artiste=\''.$_GET['nomartiste'].'\'';
//$r='SELECT artiste_album, titre_album, image_album, typemusique_album, commentaires_musique FROM album where artiste_album="$_GET["nomartiste"]"';
$req=mysql_query($r,$connexion) or die ('Erreur lors de la requête SQL !!! ');
//nombre de lignes rapportées
$nblignes=mysql_num_rows($req);
$i=0;
echo"
Il y a $nblignes albums enregistrés dans la base
";
// debut du tableau
echo ''.\"\n\";
// première ligne on affiche les titres
echo '----
';
echo 'ARTISTE, ';
echo 'CATEGORIE, ';
echo 'DESCRIPTION, ';
echo ''.\"\n\";
// lecture et affichage des résultats, 1 résultat par ligne.
while($row = mysql_fetch_array($req)) {
echo '----
';
echo '
'.$row["nom_artiste"].', ';
echo ''.$row["type_musique"].', ';
echo ''.$row["presentation_artiste"].', ';
echo ''.\"\n\";
}
echo '
'."\n";
// fin du tableau.
// on libère le résultat
mysql_free_result($req);
//mysql_free_result($rep);
?>
pour valider, il faut cliquer sur le bouton hein...donc à ton avis, il se passe quoi la 1ère fois où tu arrives sur ta page ? Le formulaire s'affiche (sans être soumis), PUIS tu fais tes requêtes avec des variables qui n'existent pas (puisque le formulaire n'a pas été soumis). Donc forcément, elles ne fonctionnent pas. PHP n'est pas devin, il ne peut pas savoir ce que tu veux afficher AVANT que ton formulaire ne soit soumis. Ca nne me parait pas difficile à comprendre. Regarde cet exemple de la vraie vie :
Tu rencontres un gars (c'est ton formulaire).
Tu veux lui dire bonjour mais tu ne connais pas snom puisqu'il ne s'est pas encore présenté (c'est ta requête). Donc tu bugges, tu lui fais :
Bonjour heu....
Puis il se présente (ton formulaire est soumis) : je m'appelle toto.
Là tu lui dis à nouveau bonjour donc, mais tu ne bugges plus, puisque tu sais son nom :
Bonjour toto.