Se connecter avec
S'enregistrer | Connectez-vous

[RESOLU] BDD

Dernière réponse : dans Programmation

Bonjour,

Je suis entrain de faire une boîte à idée sur mon site, mais j'ai qq petits problèmes dont celui-ci: lors de l'affichage de ma page boite.php j'ai ceci comme réponse.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/bastinpaliseul.be/bastinpaliseul.be/httpd.www/Pages/Boite/Boite.php on line 21
  1. <?php
  2. include ('config.php');
  3. $reponse = mysql_query ("SELECT * FROM Boite ORDER BY id");
  4. while ($donnees = mysql_fetch_array($reponse))
  5. {
  6. ?>
  7. <div class="toutes_news">
  8. <div class="pseudo_toutes_news"><?php echo $donnees['pseudo'];?><?php echo $donnees['email'];?></div>
  9. <div class="titre_toutes_news"><a href="affichage_news.php?id=<?php echo $donnees['id'];?>&titre=<?php echo $donnees['titre'];?>">
  10. <?php echo $donnees['titre'];?></a></div>
  11. </div>
  12. <?php
  13. }
  14. mysql_close();
  15. ?>


De plus, lors je vais sur ma page ajout.php et que je rentre correctement mon formulaire, la page est censée appelée une autre page: ajout_idee.php qui elle insère les élément dans ma BDD. Je n'ai pas de message d'erreur, mais par contre je n'ai rien dans ma BDD.

Page ajout.php

  1. <body>
  2. <div class="titre_actu">Ecrire une idée pour le site</div>
  3. <form method="post" action="ajout_idee.php">
  4. <div class="idee">
  5. <div class="titre_zone_texte">Pseudo :</div>
  6. <div class="zone_texte"><input type="text" name="pseudo" size="50" maxlength="50"></div>
  7. <div class="titre_zone_texte">Email :</div>
  8. <div class="zone_texte"><input type="text" name="pseudo" size="50" maxlength="50"></div>
  9. <div class="titre_zone_texte">Titre de l'idée :</div>
  10. <div class="zone_texte"><input type="text" name="titre" size="100" maxlength="255"></div>
  11. <div class="titre_zone_texte">Idée :</div>
  12. <div class="zone_texte"><textarea name="news" rows="10" cols="60"></textarea></div>
  13. </div>
  14. <div class="bouton"><input type="submit" value="Valider"></div>
  15. </form>
  16. </body>

Page ajout_idee.php
  1. <?php
  2. include ('config.php');
  3.  
  4. if (isset($_POST['pseudo']) AND isset($_POST['email']) AND isset($_POST['titre']) AND isset($_POST['idee']))
  5. {
  6. $pseudo = htmlentities($_POST['pseudo']);
  7. $email = htmlentities($_POST['email']);
  8. $titre = htmlentities($_POST['titre']);
  9. $idee = mysql_real_escape_string(stripslashes($_POST['idee']));
  10. $idee = nl2br($news);
  11.  
  12. if (empty($pseudo))
  13. {
  14. echo ("Saisissez votre pseudo");
  15. exit();
  16. }
  17. if (empty($email))
  18. {
  19. echo ("Saisissez votre Email");
  20. exit();
  21. }
  22. if (empty($titre))
  23. {
  24. echo ("Le titre ne peut être vide");
  25. exit();
  26. }
  27. if (empty($idee))
  28. {
  29. echo ("Tapez une idée");
  30. exit();
  31. }
  32. mysql_query ("Insert INTO Boite VALUES ('', ' " .$pseudo. " ', ' " .$email. " ', ' " .$titre. " ', ' " .$idee. " ')");
  33. }
  34. mysql_close();
  35. echo 'Merci - Redirection automatique dans 5 secondes';
  36. echo "<META HTTP-EQUIV='Refresh' CONTENT='5; URL=<a href="http://bastinpaliseul.be/Pages/Boite/Boite.php" target="_blank">http://bastinpaliseul.be/Pages/Boite/Boite.php</a>'>";
  37. ?>

Et ma table se présente comme ceci:
  1. id INT Auto_increment clé primaire
  2. pseudo varchar 50
  3. email varchar 50
  4. titre varchar 50
  5. news longtext


Bon voilà si qqn à une ou plusieurs idées, c'est le bienvenu!
Merci les amis...

Autres pages sur : resolu bdd

Lassé par la pub ? Créez un compte
Expert Programmation

A la ligne 8 du bout de code que tu as mis de ta page ajout, il y a une erreur : name="pseudo" ne devrait-il pas être name="email" ?

Du coup, dans ta page ajout_idee.php, comme tu conditionnes l'ajout des infos dans MySQL à l'existence de la valeur $_POST['email'], c'est normal que rien ne soit inséré :D 

Par contre je ne vois pas pourquoi ça te causerait une erreur à l'affichage dans Boite.php... Avant ta boucle while, vérifie quelle est l'erreur envoyée par MySQL en ajoutant le code suivant :
  1. if(!$reponse)
  2. die('erreur MySQL : '.mysql_error());

Merci pour ta réponse.

Pour le point 1) j'ai déjà corrigé (suis un peu aveugle avec tous ces codes...).
Pour le point 2), il me dit: no database selected. Peut-être est-ce pcq j'ai mis une majuscule à "Boite" dans ma BDD?
Pourtant j'utilise cette BDD avec une autre table pour d'autre chose et çà marche très bien.

@+
Expert Programmation

Ou est-ce que tu fais un mysql_connect et mysql_select_db ? Dans config.php ?

Ce qui manque, ce n'est pas la table (Bote ici), mais la base de données (ou l'accès à cette base de données) dans laquelle tu as à ta table Boite.

Donc vérifie que tu te connecte bien à ta base de données.

A+

  1. <?php
  2. //include ('config.php');
  3. // On se connecte d'abord à MySQL :
  4. $db=mysql_connect("localhost", "BDD", "MDP",$db);
  5. mysql_select_db("boite",$db);
  6. $reponse = mysql_query ("SELECT * FROM boite ORDER BY id") or die(mysql_error());
  7. while ($donnees = mysql_fetch_array($reponse))
  8. {
  9. ?>
  10. <div class="toutes_news">
  11. <div class="pseudo_toutes_news"><?php echo $donnees['pseudo'];?><?php echo $donnees['email'];?></div>
  12. <div class="titre_toutes_news"><a href="affichage_news.php?id=<?php echo $donnees['id'];?>&titre=<?php echo $donnees['titre'];?>">
  13. <?php echo $donnees['titre'];?></a></div>
  14. </div>
  15. <?php
  16. }
  17. mysql_close();
  18. ?>


J'ai aussi essayé:
  1. mysql_connect("localhost", "BDD", "MDP");
  2. mysql_select_db("boite");


Je peux te donner les coordonnées de ma BDD si tu souhaites (pour vérifier).

@+
Expert Programmation

juste mettre : mysql_select_db("bastinpaliseul_") et non mysql_select_db("boite") !

Je crois que tu confonds base de données et table ;)  Pour faire simple une base de données peut contenir plusieurs tables et une table contient les données que tu veux conserver dans les champs que tu as défini.
Lassé par la pub ? Créez un compte