Se connecter / S'enregistrer
Votre question

[RESOLU]Questions MySQL et PHP

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
27 Juillet 2006 09:11:44

bonjour tout le monde,
comme chaque jour vouss avez le droit a mon petit probleme du jour.
Aujourd'hui j'ai quelques questions:
- lorsque je fait une requete avec la commande
$sql = " SELECT etc etc"
j'ai remarqué que je ne pouvais pas faire une requete avec plusieurs table car dans ce cas j'ai un message d'erreur avec mysql_fetch_array qui apparaissait.
Donc est il possible de faire une requete avec plusieurs table? si oui comment?

-deuxieme question :
comment afficher les resultat d'une requete en tableau. Dans la commande je vais lister des date et des noms. Comment faire pour que les dates soient en colonnes ainsi que le noms?

merci d'avance pour vos réponses.

Autres pages sur : resolu questions mysql php

a c 145 L Programmation
27 Juillet 2006 09:20:50

pour ta requète sur plusieurs tables, il faut suivre une logique:
  1. SELECT table1.champ, table2.*, table3.autre_champ
  2. FROM table1, table2, table3
  3. WHERE table1.champ=table2.champ
  4. AND table3.autre_champ=table2.autre_champ
  5. AND table2.dernier IS NOT NULL

Ceci est un exemple de requète "simple" sur 3 tables, mais je te conseille d'aller faire un tour sur dev.mysql.com et de chercher les aides sur les jointures.

Pour ta deuxième question, c'est du php normal.
Partant du principe que ta requète te renvoit id, date et nom:
  1. <?
  2. $sql = "SELECT id, date, nom FROM table";
  3. $req = mysql_query($sql);
  4. if (@mysql_num_rows($req)>0) {
  5. echo "<table>\n<tr><th>id</th><th>date</th><th>nom</th></tr>\n";
  6. while (list($id,$date,$nom) = mysql_fetch_row($requete) {
  7. echo "<tr><td>$id</td><td>".date("d/m/Y", strtotime($date))."</td><td>$nom</td></tr>\n";
  8. }
  9. echo "</table>\n";
  10. }
  11. ?>
27 Juillet 2006 09:26:59

merci beaucoup.
si j'ai un probleme (ce qui risque d'arriver avec moi ;-) ) je upperai mon topic au lieu d'en créer un nouveau .
Contenus similaires
27 Juillet 2006 10:06:25

et voila comme je m'en doutais je up mon topic pour vous dire que j'ai un probleme:
j'ai modifier le code que crazy cat m'a donné pour afficher le resultat de ma requete en tableau afin qu'il colle à ma demande.
Le voici:
  1. function abonnements(){
  2. //votre requête
  3. $sql = "SELECT *
  4. FROM `abonnement`
  5. ORDER BY date_fin";
  6.  
  7. //envoie de la requête
  8. $req = mysql_query($sql) ;
  9.  
  10. if ($mysql_num_rows($req)>0) {
  11. echo "<table>\n<tr><th>Inscrit la</th><th>Expire le</th><th>Nom</th></tr>\n";
  12. while (list($date_debut,$date_fin,$noma) = mysql_fetch_row($requete) {
  13. echo "<tr><td>$date_debut</td><td>".date("d/m/Y", strtotime($date_fin))."</td><td>$noma</td></tr>\n";
  14. }
  15. echo "</table>\n";
  16. }
  17. }

L'erreur est un parse erreur à la ligne du while. J'ai cru que cela venait du $requete mais l'erreur est avant mais je ne vois pas où.

Pour info je veux afficher en tableau une colonne inscription, une autre expiration et une autre avec les noms.
27 Juillet 2006 10:10:26

Hello
Il te manque une parenthèse à la fin de ton While:
while (list($date_debut,$date_fin,$noma) = mysql_fetch_row($requete))

Et je crois que l'égalité s'écrit == et non = (mais c'est à vérifier)
27 Juillet 2006 10:18:33

effectivement il manquait une parenthèse.
J'ai essayé de mettre un == au lieu de un seul mais il en faut bien un seul.
Maintenant j'ai un autre probleme j'ai deux message d'erreur qui sont les suivants:
Undefined variable: mysql_num_rows

Fatal error: Call to undefined function: ()

ces deux erreurs sont à la ligne du "if" je suppose que si l'on dèfini la variable mysql_num_rows ca va regler l'erreur fatal mais
cette variable je ne sais pas comment la dèfinir (je ne l'ai jamais utilisé)
a c 145 L Programmation
27 Juillet 2006 10:56:19

remplace mysql_num_rows par mysql_numrows

en fonction de php et du module mysql, l'un ou l'autre est utilisé.
a c 145 L Programmation
27 Juillet 2006 10:58:08

Citation :
while (list($date_debut,$date_fin,$noma) = mysql_fetch_row($requete))
Et je crois que l'égalité s'écrit == et non = (mais c'est à vérifier)

Ce n'est pas une égalité mais bien une affectation, donc un seul =

Cette ligne peut se traduire par:
tant que tu arrives à transformer la ligne de données en une liste de variable...
27 Juillet 2006 11:05:06

non malheureusement changer mysql_num_rows en mysql_numrows n'a pas marché.
en cherchant j'ai vu que cette commande renvoie le nombre de ligne de ligne d'un resultat.
moi croyait que c'etait une commande du genre newarray en javascript je me suis dis qu'il aurait fallu simplement donné un nom a ce tableau mais je me trompait....
27 Juillet 2006 11:21:26

voila j'ai trouvé l'erreur il fallait rajouter cette ligne :
  1. $nbligne = mysql_num_rows($req);

juste avant le "if" et dans la condition remplacé le $mysql_num_rows($req) par $nbligne voili voilou ^^

maintenant j'ai l'erreur suivante juste deux ligne en dessous ^^"
mysql_fetch_row() supplied argument is not a valid MySQL result resource

EDIT: j'ai reussi a regler ce probleme (enfin je pense) mais maintenant j'ai un parse error a la fin de mon code que voici :
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. Vous voulez les personnes enregistrées:
  6. <?
  7. if(!isset($_POST['bdd']))
  8. {
  9. $bdd="";
  10. }
  11. //$bdd = $_POST['bdd'];
  12. $select2 = $_POST['select2'];
  13. if(!isset($_POST['select2']))
  14. {
  15. $select2="";
  16. }
  17.  
  18.  
  19. ?>
  20. <!-- Si tu veux reafficher le premier select avec la valeur selectionnée-->
  21. <form name="form1" method="post" action="page.php">
  22. <select name="bdd" id="bdd">
  23.  
  24. <option name="aux abonnements" <? if($bdd=="aux abonnements")echo "selected";?>>aux abonnements</option>
  25. <option name="à la prospection" <? if($bdd=="la prospection")echo "selected";?>>à la prospection</option>
  26. </select>
  27. <!-- 2eme select -->
  28. <input type="submit" name="validation" value="valider" >
  29. </form>
  30. Qui
  31. <form name="form2" method="post" action="new7.php">
  32. <select name="select2" id="select2">
  33.  
  34. <option name="renouveler">vont devoir renouveler</option>
  35. <option name="pas_renouveler">n'ont pas renouveler</option>
  36. </select>
  37. leurs abonnements.
  38. <input type="submit" name="valider2" value="valider" >
  39. </form>
  40.  
  41.  
  42. Vous souhaitez
  43. <form name="ajouter_modifier" method="post" action="new9.php">
  44. <select name="select_ajouter_modifier" id="select_ajouter_modifier">
  45. <option name="ajouter_personne">ajouter un abonné</option>
  46. <option name="modifier_personne">modifier un abonné</option>
  47. <option name="supprimer_personne">supprimer un abonné</option>
  48. </select>parmis les abonnés.
  49. <input type="submit" name="valider_ajouter_modifier" value="valider" >
  50. </form>
  51.  
  52. <?php
  53. function abonnements(){
  54. //votre requête
  55. $sql = "SELECT *
  56. FROM `abonnement`
  57. ORDER BY date_fin";
  58.  
  59. //envoie de la requête
  60. $req = mysql_query($sql) ;
  61.  
  62. //On fait une boucle
  63. // while($val = mysql_fetch_array($req)){
  64. // // on affiche les informations de l'enregistrements en cours
  65. // echo 'Inscrit le '.$val['date_debut'].' Abonnement expire le '.$val['date_fin'].' Nom: '.$val['noma'].' Adresse: '.$val['adresse'].' , ';
  66. // }
  67.  
  68. //$sql = "SELECT id, date, nom FROM table";
  69. //$req = mysql_query($sql);
  70. $nbligne = mysql_num_rows($req);
  71. if ($nbligne>0) {
  72.  
  73. while ($resultat=mysql_fetch_array($req,MYSQL_ASSOC)) {
  74. $adresse = $resultat['adresse'];
  75. $noma = $resultat['noma'];
  76.  
  77. }
  78. }
  79.  
  80. function renouvellement(){
  81. //connexion ࡬a base
  82. $db = mysql_connect('localhost','root','') or die ('erreur de connexion');
  83.  
  84. //sélection de la base
  85. mysql_select_db('a16',$db);
  86.  
  87. //votre requête
  88. $sql = "SELECT nomp FROM prospection WHERE nomp LIKE '%'";
  89.  
  90. //envoie de la requête
  91. $req = mysql_query($sql) ;
  92.  
  93. //On fait une boucle
  94. while($val = mysql_fetch_array($req)){
  95. // on affiche les informations de l'enregistrements en cours
  96. echo ' '.$val['nomp'].' ';
  97. }
  98. }
  99.  
  100. $choix = $_POST['select2'];
  101.  
  102. //connexion ࡬a base
  103. $db = mysql_connect('localhost','root','') or die ('erreur de connexion');
  104.  
  105. //sélection de la base
  106. mysql_select_db('a16',$db);
  107.  
  108. switch($choix){
  109. case 'vont devoir renouveler':
  110. echo abonnements();
  111. break;
  112.  
  113. case 'n\'ont pas renouveler':
  114. echo renouvellement();
  115. break;
  116.  
  117. default:
  118. echo 'Il n\'y a aucune personne qui corresponde à la requête.';
  119. }
  120.  
  121. //on ferme la connexion
  122. mysql_close();
  123.  
  124. ?>
  125. </body>
  126. </html>

il doit manquer quelque chose mais je n'arrive pas a trouver quoi....
NB: les "input" des mes boutons n'apparaissent pas donc pas la peine de me dire qu'il manque ca...
28 Juillet 2006 09:00:54

Tu as essayé de faire un echo sur ta requête SQL ? (Désolé, pas trop le temps de me plonger dans ton code là.)
28 Juillet 2006 09:08:29

non mais mon probleme a été reglé pour cette page...
maintenant j'en suis sur une autre avec un formulaire qui mettre les infos dans une DB.
Le probleme est que la fonction n'est jamais faite puisque j'ai un switch qui ne fait fait pas exécuter la funtion qui ajoute les infos...
enfin bref un beau bordel mon code :-P
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS