Tom's Guide > Forum > Programmation > [RESOLU]Questions MySQL et PHP

[RESOLU]Questions MySQL et PHP

Forum Programmation : [RESOLU]Questions MySQL et PHP

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

pour ta requète sur plusieurs tables, il faut suivre une logique:

Code :
  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:

Code :
  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. ?>

Répondre à crazycat@idn

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 .

Répondre à mikstaff

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:

Code :
  1. function abonnements(){
  2.     //votre requête
  3.     $sql = "SELECT *
  4. FROM `abonnement`
  5. ORDER BY date_fin";
  6.     //envoie de la requête
  7.     $req = mysql_query($sql) ;
  8. if ($mysql_num_rows($req)>0) {
  9.   echo "<table>\n<tr><th>Inscrit la</th><th>Expire le</th><th>Nom</th></tr>\n";
  10.   while (list($date_debut,$date_fin,$noma) =    mysql_fetch_row($requete) {
  11.       echo "<tr><td>$date_debut</td><td>".date("d/m/Y", strtotime($date_fin))."</td><td>$noma</td></tr>\n";
  12.   }
  13.   echo "</table>\n";
  14. }
  15. }


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.

Répondre à mikstaff

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

Et je crois que l'égalité s'écrit == et non = (mais c'est à vérifier)

Répondre à Piment64

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é)

Répondre à mikstaff

remplace mysql_num_rows par mysql_numrows

en fonction de php et du module mysql, l'un ou l'autre est utilisé.

Répondre à crazycat@idn

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...

Répondre à crazycat@idn

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....

Répondre à mikstaff

voila j'ai trouvé l'erreur il fallait rajouter cette ligne :

Code :
  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 :

Code :
  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. <!-- Si tu veux reafficher le premier select avec la valeur selectionnée-->
  19. <form name="form1" method="post" action="page.php">
  20. <select name="bdd" id="bdd">
  21. <option name="aux abonnements" <? if($bdd=="aux abonnements" )echo "selected";?>>aux abonnements</option>
  22. <option name="à la prospection" <? if($bdd=="la prospection" )echo "selected";?>>à la prospection</option>
  23. </select>
  24. <!-- 2eme select -->
  25. <input type="submit" name="validation" value="valider" >
  26. </form>
  27. Qui
  28. <form name="form2" method="post" action="new7.php">
  29. <select name="select2" id="select2">
  30. <option name="renouveler">vont devoir renouveler</option>
  31. <option name="pas_renouveler">n'ont pas renouveler</option>
  32. </select>
  33. leurs abonnements.
  34. <input type="submit" name="valider2" value="valider" >
  35. </form>
  36. Vous souhaitez
  37. <form name="ajouter_modifier" method="post" action="new9.php">
  38. <select name="select_ajouter_modifier" id="select_ajouter_modifier">
  39. <option name="ajouter_personne">ajouter un abonné</option>
  40. <option name="modifier_personne">modifier un abonné</option>
  41. <option name="supprimer_personne">supprimer un abonné</option>
  42. </select>parmis les abonnés.
  43. <input type="submit" name="valider_ajouter_modifier" value="valider" >
  44. </form>
  45. <?php
  46. function abonnements(){
  47.     //votre requête
  48.     $sql = "SELECT *
  49. FROM `abonnement`
  50. ORDER BY date_fin";
  51.     //envoie de la requête
  52.     $req = mysql_query($sql) ;
  53.     //On fait une boucle
  54. //  while($val = mysql_fetch_array($req)){
  55. //      // on affiche les informations de l'enregistrements en cours
  56. //      echo 'Inscrit le '.$val['date_debut'].' Abonnement expire le '.$val['date_fin'].' Nom: '.$val['noma'].' Adresse: '.$val['adresse'].' , ';
  57. //    }
  58. //$sql = "SELECT id, date, nom FROM table";
  59. //$req = mysql_query($sql);
  60. $nbligne = mysql_num_rows($req);
  61. if ($nbligne>0) {
  62.   while ($resultat=mysql_fetch_array($req,MYSQL_ASSOC)) {
  63.   $adresse = $resultat['adresse'];
  64.   $noma = $resultat['noma'];
  65.    
  66. }
  67. }
  68. function renouvellement(){
  69.     //connexion ࡬a base
  70.     $db = mysql_connect('localhost','root','') or die ('erreur de connexion');
  71.     //sélection de la base
  72.     mysql_select_db('a16',$db);
  73.     //votre requête
  74.     $sql = "SELECT nomp FROM prospection WHERE nomp LIKE '%'";
  75.     //envoie de la requête
  76.     $req = mysql_query($sql) ;
  77.     //On fait une boucle
  78.     while($val = mysql_fetch_array($req)){
  79.         // on affiche les informations de l'enregistrements en cours
  80.         echo ' '.$val['nomp'].' ';
  81.     }
  82. }
  83. $choix = $_POST['select2'];
  84. //connexion ࡬a base
  85. $db = mysql_connect('localhost','root','') or die ('erreur de connexion');
  86. //sélection de la base
  87. mysql_select_db('a16',$db);
  88. switch($choix){
  89.     case 'vont devoir renouveler':
  90.         echo abonnements();
  91.         break;
  92.        
  93.     case 'n\'ont pas renouveler':
  94.         echo renouvellement();
  95.         break;
  96.    
  97.     default:
  98.         echo 'Il n\'y a aucune personne qui corresponde à la requête.';
  99. }
  100. //on ferme la connexion
  101. mysql_close();
  102. ?>
  103. </body>
  104. </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...

Répondre à mikstaff

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à.)

Répondre à Sethpolma

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

Répondre à mikstaff
Tom's Guide > Forum > Programmation > [RESOLU]Questions MySQL et PHP
Aller à :

Il y a 867 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens