Correction petite erreur MySQL/php svp.
Résolu/Fermé
alphonse
-
14 mai 2009 à 22:29
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 - 17 mai 2009 à 20:31
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 - 17 mai 2009 à 20:31
A voir également:
- Correction petite erreur MySQL/php svp.
- Erreur 0x80070643 - Guide
- Petite croix snap ✓ - Forum Snapchat
- Mysql download - Télécharger - Bases de données
- Iptv erreur de lecture - Forum TV & Vidéo
- Correction orthographe - Guide
8 réponses
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
14 mai 2009 à 22:37
14 mai 2009 à 22:37
Salut,
Oula plein de problèmes dans tes requetes,
Perso j'aurai fait un truc comme
A adaptater biensur
Oula plein de problèmes dans tes requetes,
Perso j'aurai fait un truc comme
$sql = "SELECT titre, count(*) FROM inscription GROUP BY titre"; $result = mysql_query($sql); foreach( $row = mysql_fetch_row($result)){ $titres[$row[0]] = $row[1]; } $nb_filles = $titres['mlle']+$titres['mme']; $nb_homme = $titres['mr'];
A adaptater biensur
Ah... Alors c'est Count à la place de SUM pour le nombre d'enregistrement correspondants. J'avais bon ...
Et je ne connaissais pas le GROUP BY et le $titres[$row[0]] = $row[1]; ...
Je ne voulais pas non plus copier sur d'autre sites... Donc ma méthode, n'est vraiment pas recommandée ? Quels sont mes autres erreurs ?
Et je ne connaissais pas le GROUP BY et le $titres[$row[0]] = $row[1]; ...
Je ne voulais pas non plus copier sur d'autre sites... Donc ma méthode, n'est vraiment pas recommandée ? Quels sont mes autres erreurs ?
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
14 mai 2009 à 22:51
14 mai 2009 à 22:51
Pour tes erreurs :
Effectivement count et pas sum, sum c'est pour faire une somme de nombres et ton champs titre n'est pas un nombre.
Pour ta première requête ca serait un OR et non un AND car un enregistrement dans ta table ne peut pas avoir titre='mlle' ET titre='mme'
Et pour tes deux requêtes :
Avec des apostrophes simples sinon ta chaine PHP et fermée et réouverte, ton erreur PHP venait de là.
A part ca ta méthode marchera, mais elle effectue deux requêtes sur la base, la mienne seulement une, c'est un peu plus optimiser mais ce n'est pas bien grave.
Effectivement count et pas sum, sum c'est pour faire une somme de nombres et ton champs titre n'est pas un nombre.
Pour ta première requête ca serait un OR et non un AND car un enregistrement dans ta table ne peut pas avoir titre='mlle' ET titre='mme'
Et pour tes deux requêtes :
$sql = "SELECT SUM titre FROM inscription WHERE titre='mme' OR titre='mle'";
Avec des apostrophes simples sinon ta chaine PHP et fermée et réouverte, ton erreur PHP venait de là.
A part ca ta méthode marchera, mais elle effectue deux requêtes sur la base, la mienne seulement une, c'est un peu plus optimiser mais ce n'est pas bien grave.
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
14 mai 2009 à 22:54
14 mai 2009 à 22:54
J'ai oublié des erreurs :-)
Pour récupérer ta valeur après une requête :
Pareil pour la première
Pour récupérer ta valeur après une requête :
$sql = "SELECT count(*) FROM inscription WHERE titre='mr'"; $result = mysql_query($sql); $champs = mysql_fetch_row ($result); $enregistrement2 = $champs [0];
Pareil pour la première
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci beaucoup pour ton explication Dr Zoidberg ! Je vais donc continué comme cela et je testerais ta méthode au passage. Bonne soirée.
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
14 mai 2009 à 22:59
14 mai 2009 à 22:59
De rien, bon courage
ReBonjour.
Voila j'ai testé ma technique , sa marche ... Et j'aurais besoin de la tienne comme par la suite j'aurais une dizaine de champs à sélectionner... En voila 3.
$sql = "SELECT titre, count(*) FROM inscription GROUP BY hdispo";
$result = mysql_query($sql);
foreach( $row = mysql_fetch_row($result)){
$hdispo[$row[0]] = $row[1];
}
$matin = $hdispo['matin'];
$aprem = $hdispo['apres-midi'];
$soir = $hdispo['soir'];
Wamp me met une erreur à foreach( $row = mysql_fetch_row($result)){ .
Sa me parait pourtant bon . Mais a quoi sert $hdispo[$row[0]] = $row[1]; ?
Voila j'ai testé ma technique , sa marche ... Et j'aurais besoin de la tienne comme par la suite j'aurais une dizaine de champs à sélectionner... En voila 3.
$sql = "SELECT titre, count(*) FROM inscription GROUP BY hdispo";
$result = mysql_query($sql);
foreach( $row = mysql_fetch_row($result)){
$hdispo[$row[0]] = $row[1];
}
$matin = $hdispo['matin'];
$aprem = $hdispo['apres-midi'];
$soir = $hdispo['soir'];
Wamp me met une erreur à foreach( $row = mysql_fetch_row($result)){ .
Sa me parait pourtant bon . Mais a quoi sert $hdispo[$row[0]] = $row[1]; ?
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
17 mai 2009 à 20:31
17 mai 2009 à 20:31
A mon avis c'est ta requête qui n'est pas bonne.
Et tu n'as pas mis en place de vérification du retour de mysql_query pour la valider.
Rajoute apres la ligne $result = mysql_query($sql);
quelque chose comme
if(!$result)die(mysql_error());
C'est le group by qui est erroné dans ta requête, je mettrais
SELECT titre, count(*) FROM inscription GROUP BY titre
$hdispo[$row[0]] = $row[1]; Monte un tableau avec la première colonne du résultat comme clé associée à la deuxième colonne:
Par exemple au premier tour du while : $hdispo['matin'] = 10, au deuxiemme $hdispo['soir'] = 5 ...
Et tu retrouves bien tes valeurs en faisant un $hdispo[$cle].
Et tu n'as pas mis en place de vérification du retour de mysql_query pour la valider.
Rajoute apres la ligne $result = mysql_query($sql);
quelque chose comme
if(!$result)die(mysql_error());
C'est le group by qui est erroné dans ta requête, je mettrais
SELECT titre, count(*) FROM inscription GROUP BY titre
$hdispo[$row[0]] = $row[1]; Monte un tableau avec la première colonne du résultat comme clé associée à la deuxième colonne:
Par exemple au premier tour du while : $hdispo['matin'] = 10, au deuxiemme $hdispo['soir'] = 5 ...
Et tu retrouves bien tes valeurs en faisant un $hdispo[$cle].