Résolu Probleme affichage livreor base de donnee

Solutions (11)
Tags :
  • Input
  • Php
  • Sauvegarde de données
  • Programmation
|
bonjour voila,
je fais les exercices de td et j'arrive pas a resoudre ce probleme!rien ne s'enregistre dans ma bdd et cela ne marche pas!!:-(

entrer.php(fichier qui permet de prendre les donnees d'un formulaire)

  1. <?php require_once("connect_db.php"); ?>
  2. <form action='sauver.php' method='post'>
  3. nom<input type = 'text' name='nom'><br/>
  4. texte<input type ='text' name='texte'> <br/>
  5. <input type='submit' value='envoie pilon'>
  6.  
  7. </form>


sauver.php(enregistre message dans table livreor)

  1. <?php require_once("connect_db.php"); ?>
  2. <?php
  3. $name =$_GET['nom'];
  4.  
  5.  
  6. $name1 =$_GET['texte'];
  7. echo $name , $name1;
  8.  
  9.  
  10. ?>
  11.  
  12. <?php
  13. // ex´ecuter une requ^ete MySQL
  14. $sql = "INSERT INTO livreor ( id , nom , texte, date )
  15. VALUES (’’, ’".$_GET[’nom’]."’, ’".$_GET[’texte’]."’, NOW()); ";
  16. echo $sql;
  17. $resultat = qdb($sql);
  18. ?>



connect_db(pour se connecter a la bdd)

  1. <?php
  2. $dbhost="localhost";
  3. $dbuser="root";
  4. $dbpassword="";
  5. $dbname="base_cswd";
  6. $dblink=mysql_connect($dbhost,$dbuser,$dbpassword);
  7. $db_cswd=mysql_select_db($dbname,$dblink);
  8. function qdb($sql)
  9. {
  10. $resultat = mysql_query($sql);
  11. if (mysql_errno())
  12. {
  13. echo "MySQL error ".mysql_errno()." : ".mysql_error()."\n<br>";
  14. echo "Requ^ete MySQL : ".$sql."\n<br>";
  15. die;
  16. }
  17. return $resultat;
  18. }
  19. ?>



livreor.php(pour afficher les resultats)

  1. <?php require_once("connect_db.php"); ?>
  2. <?php
  3. // ex´ecuter une requete MySQL
  4. $sql = "SELECT * FROM livreor;";
  5. $resultat = qdb($sql);
  6. // connaitre le nombre d’enregistrements
  7. $nombre_resultats = mysql_num_rows($resultat);
  8. // parcourir le tableau des enregistrements
  9. while ($enregistrements = mysql_fetch_array($resultat))
  10. {
  11. echo $enregistrements[’nom’];
  12. echo $enregistrements[’texte’];
  13. };
  14. ?>




Lerreur que je recois est:


Notice: Undefined index: nom in C:\Program Files\EasyPHP-5.3.2\www\sauver.php on line 3

Notice: Undefined index: texte in C:\Program Files\EasyPHP-5.3.2\www\sauver.php on line 6

Notice: Use of undefined constant ’nom’ - assumed '’nom’' in C:\Program Files\EasyPHP-5.3.2\www\sauver.php on line 15

Notice: Undefined index: ’nom’ in C:\Program Files\EasyPHP-5.3.2\www\sauver.php on line 15

Notice: Use of undefined constant ’texte’ - assumed '’texte’' in C:\Program Files\EasyPHP-5.3.2\www\sauver.php on line 15

Notice: Undefined index: ’texte’ in C:\Program Files\EasyPHP-5.3.2\www\sauver.php on line 15
INSERT INTO livreor ( id , nom , texte, date ) VALUES (’’, ’’, ’’, NOW()); MySQL error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '’’, ’’, ’’, NOW())' at line 2
Requ^ete MySQL : INSERT INTO livreor ( id , nom , texte, date ) VALUES (’’, ’’, ’’, NOW());



Quelqu'un pourrait til maider svp?merci!!
Contenus similaires
Meilleure solution
partage
|
As-tu compris la requête SQL ?
Essaye de comprendre parce que sinon, t'avanceras pas.

Donc, une petite explication s'impose :

INSERT INTO = mots clef pour une insertion dans une base de données
après viens le nom de la table, soit "livreor" ici
Puis, on liste les champs que l'on souhaite renseigner... Il est nécessaire de mettre les champs n'étant pas auto-incrémental et n'ayant pas de valeur par défaut (au minimum).
VALUES = mot clef permettant de définir les données que tu veux mettre dans les précédent champs.
Viens donc après les informations que tu souhaites insérer.

Donc, quand je reprends ton erreur de tout à l'heure :

Citation :
INSERT INTO livreor ( nom , texte, date ) VALUES ('', '', '', NOW()); MySQL error 1136 : Column count doesn't match value count at row 1


On traduit ça ainsi :
tu veux mettre '' dans nom, '' dans texte, '' dans date
Et NOW() , ben il n'a pas de place.


Le nombre de champs dans les premières parenthèses doit être le même que les secondes.



Et pour ton dernier message, je vois pas où est l'erreur en fait... Tu as demandé d'afficher ton message, 'nom' contient bien 'bordeaux', 'texte' contient bien ' est super'...

Donc ça à simplement affiché ce que tu as demandé... Vérifie dans ta base de données.


Comme tu es débutant, je te conseil de suivre ce cours : Tutoriel, un site dynamique avec php

Tu commences par le 1, et tu vas jusqu'au bout. Ne sautes aucune étapes.
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par agui26.
  • Commenter cette réponse |
Score
0
òh
òi
|
personne svp?
  • Commenter cette réponse |
Score
0
òh
òi
|
j'ai encore essayer de modifier mon code et je retombe dessus maintenant:

  1. <?php require_once("connect_db.php"); ?>
  2.  
  3.  
  4. <?php echo $_POST['nom']; ?>
  5.  
  6.  
  7. <?php echo $_POST['texte'];
  8.  
  9. ?>
  10.  
  11.  
  12.  
  13.  
  14. <?php
  15. // ex´ecuter une requ^ete MySQL
  16. $sql = "INSERT INTO livreor ( nom , texte, date )
  17. VALUES ('".$_POST['nom']."', '".$_POST['texte']."', NOW()); ";
  18. echo $sql;
  19. $resultat = qdb($sql);
  20. ?>
  21.  
  22. erreur qui s'affiche:
  23.  
  24. bordeaux est super INSERT INTO livreor ( nom , texte, date ) VALUES ('bordeaux', ' est super', NOW());
  • Commenter cette réponse |
Score
0
òh
òi
|
bon pour le post c'est bon j'ai plus l'erreur mais voila ce qu'il me dit maintenant:
  1. INSERT INTO livreor ( nom , texte, date ) VALUES ('', '', '', NOW()); MySQL error 1136 : Column count doesn't match value count at row 1
  2. Requ^ete MySQL : INSERT INTO livreor ( nom , texte, date ) VALUES ('', '', '', NOW());


  1. <?php require_once("connect_db.php"); ?>
  2. <form action='sauver.php' method='post'>
  3. nom<input type = 'text' name='nom' ><br/>
  4. texte<input type ='text' name='texte'> <br/>
  5. <input type='submit' value='envoie '>
  6.  
  7. </form>
  8.  
  9.  
  10. <?php require_once("connect_db.php"); ?>
  11.  
  12.  
  13. <?php echo $_POST['nom']; ?>
  14.  
  15.  
  16. <?php echo $_POST['texte'];
  17.  
  18. ?>
  19.  
  20.  
  21.  
  22.  
  23. <?php
  24. // ex´ecuter une requ^ete MySQL
  25. $sql = "INSERT INTO livreor ( nom , texte, date )
  26. VALUES ('', '".$_POST['nom']."', '".$_POST['texte']."', NOW()); ";
  27. echo $sql;
  28. $resultat = qdb($sql);
  29. ?>
  30.  
  31. <?php
  32. $dbhost="localhost";
  33. $dbuser="root";
  34. $dbpassword="";
  35. $dbname="base_cswd";
  36. $dblink=mysql_connect($dbhost,$dbuser,$dbpassword);
  37. $db_cswd=mysql_select_db($dbname,$dblink);
  38. function qdb($sql)
  39. {
  40. $resultat = mysql_query($sql);
  41. if (mysql_errno())
  42. {
  43. echo "MySQL error ".mysql_errno()." : ".mysql_error()."\n<br>";
  44. echo "Requ^ete MySQL : ".$sql."\n<br>";
  45. die;
  46. }
  47. return $resultat;
  48. }
  49. ?>
  50.  
  51.  
  52. <?php require_once("connect_db.php"); ?>
  53. <?php
  54. // ex´ecuter une requete MySQL
  55. $sql = "SELECT * FROM livreor;";
  56. $resultat = qdb($sql);
  57. // connaitre le nombre d'enregistrements
  58. $nombre_resultats = mysql_num_rows($resultat);
  59. // parcourir le tableau des enregistrements
  60. while ($enregistrements = mysql_fetch_array($resultat))
  61. {
  62. echo $enregistrements['nom'];
  63. echo $enregistrements['texte'];
  64. };
  65. ?>


et pour les accents j'ai fait ce qu'on m'a demander de faire,je te l'ai dit je debute!!

http://www.labri.fr/perso/preuter/cswd2010/td5.pdf
  • Commenter cette réponse |
Score
0
òh
òi
|
merci quand d'avoir pris la peine de rediger une si bonne explication mais je n'abandonnrai pas tant que je n'ai pas compris pourquoi il ne marche pas!!:-)
  • Commenter cette réponse |
Score
0
òh
òi
|
Bon, premièrement : c'est impossible que tu es ce message si tu avais pris mon précédent commentaire en conséquence ... Donc si tu veux pas prendre en compte les conseils, ça sert pas à grand chose ...

Donc je répète (et j'aime pas ça) : Pour une insertion, ne liste pas les champs auto-incrémenté, ici ton 'id' !

Ensuite, le 'Undefined index...' signifie que l'indice donnée à un tableau ne correspond pas à une valeur en mémoire. Donc tu as un problème avec ce dit tableau.
En l'occurrence il s'agit clairement d'un $_GET ou $_POST.

Et ensuite, histoire que tu comprennes vraiment :
  • un formulaire en POST ( method="POST" ) nécessite une récupération avec $_POST
  • un formulaire en GET ( method="GET" ) nécessite une récupération avec $_GET

    Donc, fait bien attention à ton formulaire et à la récupération. Avec le fichier 'entrer.php' que tu as données, et ma correction, il ne devrait pas y avoir ce genre d'erreur. Alors prend en compte les conseils, sinon on t'en donnera tout simplement pas !

    edit : Un petit ajout, si c'est bien un copier/coller de tes fichiers, je ne comprends pas ce que t'utilise comme "accent"... En informatique (et ceci, quelque soit le langage ou presque) on utilise principalement la simple quote ' et la double quote " , sur tes fichiers ce sont des accents ... Tu vois bien la différence ?
    Alors je sais pas ce que t'utilise, mais normalement la simple quote ' s'obtient avec la touche 4 d'un clavier azerty (au dessus du E et du R en général) et la double quote " avec la touche 3 (au dessus du Z et du E en général) !
    Si tu utilises bien ses touches, alors je te conseil de changer d'éditeur de code ... Un simple Notepad++ ou Notepad2 fait très bien l'affaire.
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    j'ai tout essayer ,enfin je suis encore debutant ,mais je narrive pas a trouver ce qu'il faut faire pour que ca marche!!aidez moi svp
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    j'ai toujours la meme erreur,avec post changer pour get

    et voila ce que je recois comme message maintenant...

    il ne retrouve pas les variables texte et nom?c'est ca que ca veut dire?

    1. bordeauxest super
    2. Notice: Use of undefined constant ’nom’ - assumed '’nom’' in C:\Program Files\EasyPHP-5.3.2i\www\sauver.php on line 16
    3.  
    4. Notice: Undefined index: ’nom’ in C:\Program Files\EasyPHP-5.3.2i\www\sauver.php on line 16
    5.  
    6. Notice: Use of undefined constant ’texte’ - assumed '’texte’' in C:\Program Files\EasyPHP-5.3.2i\www\sauver.php on line 16
    7.  
    8. Notice: Undefined index: ’texte’ in C:\Program Files\EasyPHP-5.3.2i\www\sauver.php on line 16
    9. INSERT INTO livreor ( id , nom , texte, date ) VALUES (’’, ’’, ’’, NOW()); MySQL error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '’’, ’’, ’’, NOW())' at line 2
    10. Requ^ete MySQL : INSERT INTO livreor ( id , nom , texte, date ) VALUES (’’, ’’, ’’, NOW());
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    non pour le formulaire il etait en methode post avant et j'avias les meme erreurs,donc j'ai changer pour get( meme si cela ne voudrait rien dire!!) mais quand sa marche pas on essaye tout ein :-p
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Pour une insertion t'es pas obligé de lister tous les champs de la table, surtout ceux en auto-incrémentation : faut les enlever.

    Ensuite, tu fais un formulaire en 'POST' et t'appels les paramètres en 'GET', c'est pas logique !

    Donc :
    1. $sql = "INSERT INTO livreor ( nom , texte, date ) VALUES ( '".$_POST['nom']."', '".$_POST['texte']."', NOW() );";


    PS: Pour tes codes, utilises les balises du forum : [cpp]TON CODE ICI[/cpp]
    • Commenter cette réponse |

    Ce n'est pas ce que vous cherchiez ?

    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