Correction petite erreur MySQL/php svp.
Résolu
alphonse
-
Dr Zoidberg Messages postés 529 Date d'inscription Statut Membre Dernière intervention -
Dr Zoidberg Messages postés 529 Date d'inscription Statut Membre Dernière intervention -
Bonjour, voila pour le boulot j'ai un petit soucis :
<?php
$dp = mysql_connect ("localhost", "root", "" );
mysql_select_db ("fixie");
$sql = "SELECT SUM titre FROM inscription WHERE titre="mme" AND titre="mle"";
$result = mysql_query($sql);
$champs = mysql_num_fields ($result);
$enregistrement = mysql_num_rows($result);
$sql = "SELECT SUM titre FROM inscription WHERE titre="mr"";
$result = mysql_query($sql);
$champs = mysql_num_fields ($result);
$enregistrement2 = mysql_num_rows($result);
echo "Bonjour, Nous sommes actuellement $enregistrement" filles et $enregistrement2 garçons présents sur le site.";
mysql_close($dp);
?>
Alors déjà j'ai une erreur dans la requête SQL... Wamp me l'a signalé. Mais une parenthèse ? Un Truc mal placé ? Je n'ai pas trouvé.
Ensuite peut-on mettre plusieurs demandes $enregistrement et $enregistrement2 dans la meme fonction PHP... Ou les requêtes vont s'emmêler ?
Merci de m'éclaircir.
<?php
$dp = mysql_connect ("localhost", "root", "" );
mysql_select_db ("fixie");
$sql = "SELECT SUM titre FROM inscription WHERE titre="mme" AND titre="mle"";
$result = mysql_query($sql);
$champs = mysql_num_fields ($result);
$enregistrement = mysql_num_rows($result);
$sql = "SELECT SUM titre FROM inscription WHERE titre="mr"";
$result = mysql_query($sql);
$champs = mysql_num_fields ($result);
$enregistrement2 = mysql_num_rows($result);
echo "Bonjour, Nous sommes actuellement $enregistrement" filles et $enregistrement2 garçons présents sur le site.";
mysql_close($dp);
?>
Alors déjà j'ai une erreur dans la requête SQL... Wamp me l'a signalé. Mais une parenthèse ? Un Truc mal placé ? Je n'ai pas trouvé.
Ensuite peut-on mettre plusieurs demandes $enregistrement et $enregistrement2 dans la meme fonction PHP... Ou les requêtes vont s'emmêler ?
Merci de m'éclaircir.
A voir également:
- Correction petite erreur MySQL/php svp.
- Petite amie virtuelle en français gratuit - Accueil - Intelligence artificielle
- Activer correction automatique android - Guide
- Mysql community server - Télécharger - Bases de données
- Le correcteur automatique de votre smartphone vous rend fou ? Voici comment le désactiver - Accueil - Mobile
- Erreur 0x80070643 - Accueil - Windows
8 réponses
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 ?
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.
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.
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]; ?
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].