Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
744 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Erreur mysql... Mais qu'est ce qui cloche ?????

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Erreur mysql... Mais qu'est ce qui cloche ?????

n°1103561
Rastafarie
Posté le 31-05-2005 à 23:41:23  profilanswer
 

Salut all,
 
Je suis en train de coder une newsletter, mais des erreurs mysql sont renvoyés, je vous laisse juger :
 

Code :
  1. <?
  2. mysql_connect("***", "***", "****" );
  3. mysql_select_db("****" );
  4. $selection = mysql_query("SELECT count(`mail`) FROM `newsletter` WHERE `mail`='$mail'" );
  5. $result = mysql_fetch_row($selection);
  6. /*récupération de l'email*/
  7. $email=$_POST["email"];
  8. /*Pour un inscription*/
  9. if(isset($_POST["option_news"]) and $_POST["option_news"]=="inscription" )
  10. {
  11.  mysql_query("INSERT INTO `newsletter` ( `id` , `email` ) VALUES ('', '$email');" );
  12.      Header("Location: newsletter/resultatnews.php?erreur=2" );
  13.      exit;
  14. }
  15. /*Pour une désinscription*/
  16. if(isset($_POST["option_news"]) and $_POST["option_news"]=="desinscription" )
  17. {
  18.  if ($result['mail'] == 0)
  19.  {
  20.      mysql_query("DELETE FROM newsletter WHERE email='$email';" );
  21.          Header("Location: newsletter/resultatnews.php?erreur=4" );
  22.          exit;
  23.  }
  24.  else
  25.  {
  26.      Header("Location: newsletter/resultatnews.php?erreur=3" );
  27.  }
  28. }
  29. ?>


 
Et voici les erreurs renvoyés :
 

Code :
  1. Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/6/f/**monsite**/newsletter/newsletter.php on line 6
  2. Warning: Cannot modify header information - headers already sent by (output started at /var/www/free.fr/6/f/--monsite--/newsletter/newsletter.php:6) in /var/www/free.fr/6/f/--monsite--/newsletter/newsletter.php on line 15


Message édité par Rastafarie le 31-05-2005 à 23:43:23
mood
Publicité
Posté le 31-05-2005 à 23:41:23  profilanswer
 

n°1103570
afbilou
pouet your life
Posté le 31-05-2005 à 23:55:58  profilanswer
 

Citation :

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource


 
Ta requete SQL n'est pas valide du coup $resultat n'est pas une variable valide pour mysql_fetch_row
 
'SELECT count(mail) FROM newsletter WHERE mail="'.$mail.'"' devrait meiux se comporter
 

Citation :

Warning: Cannot modify header information - headers already sent


 
Tu utilises la fonction header et l'en tete du document a deja ete envoyé soit explicitement par un autre header soit implicitement par un echo ou un print.

n°1104017
Rastafarie
Posté le 01-06-2005 à 12:46:22  profilanswer
 

Alors j'ai fait ce que tu m'a dit, c'est à dire :

Code :
  1. $selection = mysql_query("'SELECT count(mail) FROM newsletter WHERE mail="'.$mail.'"'" );


Mais une erreur est renvoyé :

Code :
  1. Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/free.fr/6/f/xxxx/newsletter/newsletter.php on line 5


Je ne comprens pas l'interet de tant d'apostrophes et du point devant $mail.
Alors je l'ai un peu changé pour essayer d'enlever l'erreur :

Code :
  1. $selection = mysql_query("SELECT count(mail) FROM newsletter WHERE mail='.$mail.'" );


Mais cette fois on en revient au même problème avec la même erreur du départ :

Code :
  1. Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/6/f/xxxx/newsletter/newsletter.php on line 6


 
Pour ce qui est de la seconde erreur, j'ai vu sur un site que on pouvait la virer en mettant un @devant. Ca marche mais je pense que ca "masque" l'erreur mais ca ne la resou pas... je me trompe ?
 
Rastafarie


Message édité par Rastafarie le 02-06-2005 à 15:34:08
n°1104035
GaSPaRD77
Posté le 01-06-2005 à 13:03:36  profilanswer
 

Code :
  1. $selection = mysql_query("'SELECT count(mail) FROM newsletter WHERE mail="'.$mail.'"'" );


 
Tu as mis des quotes en trop et d'autres mal placées...
 

Code :
  1. $selection = mysql_query("SELECT count(mail) FROM newsletter WHERE mail='".$mail."'" );


 
Pour ce qui est du @ ça ne resoud pas ton problème en effet ...
 
Le . sert à concatener des chaines


Message édité par GaSPaRD77 le 01-06-2005 à 13:04:02
n°1104533
Rastafarie
Posté le 01-06-2005 à 19:00:20  profilanswer
 

J'ai mis exactement ce que tu m'a dit de mettre, c'est à dire :

Code :
  1. $selection = mysql_query("SELECT count(mail) FROM newsletter WHERE mail='".$mail."'" );


 
Mais toujours le même message d'erreur :

Code :
  1. Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/6/f/xxxxx/newsletter/newsletter.php on line 6


 
J'avou de pas du tout savoir quoi faire alors de l'aide serait le bienvenue. J'ai fait des recherches sur cette erreur mais j'ai lu qu'elle pouvait dire beaucoup de choses... ?!
 
Rastafarie


Message édité par Rastafarie le 02-06-2005 à 15:33:37
n°1104555
benji_100
Posté le 01-06-2005 à 19:39:31  profilanswer
 

hmm dans ta variable $mail, t as despecialisé tout les caracteres tendancieux ?
 
Conseil : met ta requete dans une variable $query, et affiche la. Tu peux avoir des surprises, crois moi.
 
Sinon le warning d'apres c'est normal, car la premiere erreur envoie un message d'erreur ... et ca ecrit dans ta page du coup.
 
Ben;)

n°1104880
Rastafarie
Posté le 02-06-2005 à 09:47:57  profilanswer
 

Je suis pas trop sur d'avoir compris ce que t'a dis. Du coup j'ai tout viré dans la page et j'ai mis ça :

Code :
  1. $query = mysql_query("SELECT count(mail) FROM newsletter WHERE mail='".$mail."'" );
  2. echo "$query";


Bon point : Plus de message d'erreur  :bounce:  
Mauvais point : Rien d'autre ne s'affiche... c'est tout blanc  :heink:  
 
Je rappele que c'est une newsletter que je fais. Et l'objectif c'est de regarder dans la BDD si le mail entré dans le formulaire est déja présent ou pas...
Donc si d'autres solutions existent je suis partant... Mais j'aimerais bien savoir qu'est ce qui cloche dans ce script quand même  :cry:  
 
Rastafarie

n°1104908
cesarr89
Posté le 02-06-2005 à 10:00:01  profilanswer
 

C'est pas echo"$query" qu'il faut faire, c'est:
 
$query = "SELECT count(mail) FROM newsletter WHERE mail='".$mail."'";
puis  
echo $query;
puis
mysql_query($query);

n°1104947
Rastafarie
Posté le 02-06-2005 à 10:13:58  profilanswer
 

Ce qui donne en tout :

Code :
  1. mysql_connect("localhost", "xxxx", "xxxx" );
  2. mysql_select_db("xxxx" );
  3. $query = mysql_query("SELECT count(mail) FROM newsletter WHERE mail='".$mail."'" );
  4. echo "$query";
  5. mysql_query($query);
  6. mysql_close();


 
He bien figure toi que ca affiche toujours rien... Ca sert à quoi au juste mysql_query ?
Et puis dans mon script tout en haut, celui du départ, vous voyez rien qui cloche ?
 
Et si je devrais ajouter ce que je viens décrire dans le script final (du haut)... ou devrais-je le mettre ?
 
Rastafarie


Message édité par Rastafarie le 02-06-2005 à 10:16:00
n°1104953
cesarr89
Posté le 02-06-2005 à 10:16:21  profilanswer
 

mysql_query c'est pour executer la requete.
 
Remplace echo "$query" par echo $query;

mood
Publicité
Posté le 02-06-2005 à 10:16:21  profilanswer
 

n°1105431
Rastafarie
Posté le 02-06-2005 à 14:53:30  profilanswer
 

Ca change rien... toujours rien ne s'affiche. J'espere ne pas devoir finir par devoir prendre un script tout pret tout beau... mais fait par un autre  :pfff:  
 
Rastafarie

n°1105433
cesarr89
Posté le 02-06-2005 à 14:54:47  profilanswer
 

Bah je comprends plus rien alors

n°1105467
Rastafarie
Posté le 02-06-2005 à 15:08:21  profilanswer
 

Et dans le script du départ tu vois rien qui merde ?
 
Rastafarie

n°1105476
cesarr89
Posté le 02-06-2005 à 15:10:45  profilanswer
 

Bah non,
bon alors mets un echo "test";
au tout début pour voir si il s'affiche ou pas

n°1105481
Rastafarie
Posté le 02-06-2005 à 15:13:02  profilanswer
 

Ouai il s'affiche :)
 
rastafarie

n°1105491
Destampy
Posté le 02-06-2005 à 15:14:40  profilanswer
 

Code :
  1. $query = "SELECT count(mail) FROM newsletter WHERE mail='".$mail."'";
  2. echo $query;
  3. mysql_query($query);

Ecrit ça et si ça marche pas ou que tu as une erreur ben ça veut dire que c'est ta requête qui est mauvaise


Message édité par Destampy le 02-06-2005 à 15:15:38
n°1105495
Rastafarie
Posté le 02-06-2005 à 15:15:51  profilanswer
 

Bon alors jje me suis dit que ca pourrait m'aider à m'aider (hehe la phrase).
 
Parralelement a la newslette, je fais un systeme de sondage (en fait je commence:))
Ca donne ca :

Code :
  1. <div class="menu-item">
  2.              <?
  3.    $ip = $_SERVER['REMOTE_ADDR'];
  4.    mysql_connect("localhost", "xxx", "xxxxx" );
  5.              mysql_select_db("xxxxx" );
  6.    $query = mysql_query("SELECT * FROM sondage_ip WHERE ip='$ip'" );
  7.    $result = mysql_query($query);
  8.    $num = mysql_num_rows($result);
  9.    if($num)
  10.    {
  11.    echo "Il n'est possible de voter qu'une seule fois.";
  12.    exit;
  13.    }
  14.    mysql_close();
  15.    ?>
  16.      </div><p>


 
Et l'erreur mysql renvoyé est toujours la meme :

Code :
  1. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/6/f/xxxxxx/menus.php on line 167


Message édité par Rastafarie le 02-06-2005 à 15:33:11
n°1105496
cesarr89
Posté le 02-06-2005 à 15:15:59  profilanswer
 

Destampy a écrit :

Code :
  1. $query = "SELECT count(mail) FROM newsletter WHERE mail='".$mail."'";
  2. echo $query;
  3. mysql_query($query);

Ecrit ça et si ça marche pas ou que tu as une erreur ben ça veut dire que c'est ta requête qui est mauvaise


 
justement il a dis que ca marchait pas

n°1105506
Rastafarie
Posté le 02-06-2005 à 15:19:00  profilanswer
 

Destampy, je viens d'eesayer ce que tu m'a dit et ca m'écrit :

Code :
  1. SELECT count(mail) FROM newsletter WHERE mail=''


 
Normal que mail='' ne soit pas rempli puisque j'ai appelé la page directement et j'ai pas rempli le formulaire... enfin je pense


Message édité par Rastafarie le 02-06-2005 à 15:19:54
n°1105518
Destampy
Posté le 02-06-2005 à 15:20:48  profilanswer
 

[:alana21]


Message édité par Destampy le 03-06-2005 à 10:14:54
n°1105519
cesarr89
Posté le 02-06-2005 à 15:21:03  profilanswer
 

Rastafarie a écrit :

Destampy, je viens d'eesayer ce que tu m'a dit et ca m'écrit :

Code :
  1. SELECT count(mail) FROM newsletter WHERE mail=''


 
Normal que mail='' ne soit pas rempli puisque j'ai appelé la page directement et j'ai pas rempli le formulaire... enfin je pense


 
Bah oui mais essaye avec le formulaire

n°1105522
Destampy
Posté le 02-06-2005 à 15:21:32  profilanswer
 

:jap:


Message édité par Destampy le 02-06-2005 à 15:39:35
n°1105558
Rastafarie
Posté le 02-06-2005 à 15:31:59  profilanswer
 

alors mon formulaire renvoi vers newsletter.php :

Code :
  1. <form method="post" action="newsletter/newsletter.php">


 
Et dans newsletter.php... j'ai maintenant tout ça :

Code :
  1. mysql_connect("localhost", "xxx", "xxxxx" );
  2. mysql_select_db("xxxx" );
  3. $query = "SELECT count(mail) FROM newsletter WHERE mail='".$mail."'";
  4. echo $query;
  5. mysql_query($query);
  6. //récupération de l'email
  7. $email=$_POST["email"];


 
et ca me renvoi :

Code :
  1. SELECT count(mail) FROM newsletter WHERE mail=''


Message édité par Rastafarie le 02-06-2005 à 15:32:24
n°1105564
cesarr89
Posté le 02-06-2005 à 15:33:07  profilanswer
 

Rastafarie a écrit :

alors mon formulaire renvoi vers newsletter.php :

Code :
  1. <form method="post" action="newsletter/newsletter.php">


 
Et dans newsletter.php... j'ai maintenant tout ça :

Code :
  1. mysql_connect("localhost", "xxx", "xxxxx" );
  2. mysql_select_db("xxxx" );
  3. $query = "SELECT count(mail) FROM newsletter WHERE mail='".$mail."'";
  4. echo $query;
  5. mysql_query($query);
  6. //récupération de l'email
  7. $email=$_POST["email"];



 
Oui bah c'est pas bon....
 

Code :
  1. //récupération de l'email
  2. $email=$_POST["email"];
  3. mysql_connect("localhost", "xxx", "xxxxx" );
  4. mysql_select_db("xxxx" );
  5. $query = "SELECT count(mail) FROM newsletter WHERE mail='".$email."'";
  6. echo $query;
  7. mysql_query($query);


 
ca c'est bon

n°1105577
Destampy
Posté le 02-06-2005 à 15:37:06  profilanswer
 

T'es assis sur ta t^te ou pas?? ;) .Pour pouvoir effectuer ta requête tu es obligé de récupérer le mail avant de la faire sinon c'est sûr que ça marche po :pfff:  

n°1105579
Rastafarie
Posté le 02-06-2005 à 15:37:15  profilanswer
 

Code :
  1. SELECT count(mail) FROM newsletter WHERE mail='test'


 
Ouaiiiiiiiiiiss  
 
Je vais tester maintenant le script entier et je vous tiens au courant... merci ;)
 
Rastafarie

n°1105586
Rastafarie
Posté le 02-06-2005 à 15:39:04  profilanswer
 

Par contre un truc que j'ai toujours pas compris :

Code :
  1. $query = "SELECT count(mail) FROM newsletter WHERE mail='".$email."'";


 
Pourquoi tant d'apostrophes ? Et un point AVANT et APRES mail ?
 
Rastafarie


Message édité par Rastafarie le 02-06-2005 à 15:39:55
n°1105592
cesarr89
Posté le 02-06-2005 à 15:39:36  profilanswer
 

Rastafarie a écrit :

Par contre un truc que j'ai toujours pas compris :

Code :
  1. $query = "SELECT count(mail) FROM newsletter WHERE mail='".$email."'";


 
Pourquoi tant d'apostrophes ?
 
Rastafarie


 
Parce que tu concaténe avec le contenu de la variable

n°1105597
Rastafarie
Posté le 02-06-2005 à 15:41:19  profilanswer
 

Ok encore merci pour tout. (destampy ta un pv ;))
 

n°1107382
Rastafarie
Posté le 03-06-2005 à 17:24:07  profilanswer
 

Arf... de problèmes en problèmes !
 
J'ai continué un peu le script ne la newsletter, cette fois il n'y a pas de message d'erreur :

Code :
  1. <?
  2. $email=$_POST["email"];
  3. mysql_connect("localhost", "xxxx", "xxxx" );
  4. mysql_select_db("xxxx" );
  5. $query = "SELECT count(mail) FROM newsletter WHERE mail='".$email."'"; 
  6. $resultat = mysql_query($query);
  7. //Pour un inscription
  8. if ($resultat == "0" )
  9. {
  10.      if(isset($_POST["option_news"]) and $_POST["option_news"]=="inscription" )
  11.      {
  12.      mysql_query("INSERT INTO newsletter (id, email) VALUES ('', '$email');" );
  13.          Header("Location: resultatnews.php?erreur=2" );
  14.          exit;
  15.      }
  16.  else
  17.  {
  18.      Header("Location: resultatnews.php?erreur=5" );
  19.   exit;
  20.      }
  21. }
  22. else
  23. {
  24.      Header("Location: resultatnews.php?erreur=1" );
  25.  exit;
  26. }
  27. ?>


 
Mais par contre quand je rentre un email qui est déja dans la bdd, ca me le rerentre quand meme !
 
Rastafarie

n°1107402
cesarr89
Posté le 03-06-2005 à 17:33:56  profilanswer
 

Faudrait peut être parcourir le résultat de la requête, non?

n°1107409
Rastafarie
Posté le 03-06-2005 à 17:35:36  profilanswer
 

Comment ça ?

n°1107410
cesarr89
Posté le 03-06-2005 à 17:36:28  profilanswer
 

Bah tu fais un select count(mail)....
après il faut regarder la valeur du count peut être, non tu es pas d'accord?

n°1107416
Rastafarie
Posté le 03-06-2005 à 17:38:28  profilanswer
 

Ben si tu le dis je vais essayer d'être d'accors avec toi  :D  
Et  commment je fais pr regarder cette valeur ? (dsl je débute hein :()
 
Rastafarie

n°1107421
cesarr89
Posté le 03-06-2005 à 17:40:00  profilanswer
 
n°1107442
Rastafarie
Posté le 03-06-2005 à 17:48:31  profilanswer
 

Bon alors je sais pas si c'est ok ce que je viens de faire...

Code :
  1. ...
  2. $query = "SELECT count(mail) FROM newsletter WHERE mail='".$email."'"; 
  3. $resultat = mysql_query($query);
  4. $num_rows = mysql_num_rows($resultat);
  5. //Pour un inscription
  6. if ($resultat == "0" )
  7. ...etc...


 
en tout cas ca ramène cet erreur :

Code :
  1. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/6/f/xxxxxxx/newsletter/newsletter.php on line 7


 
Ca vient donc de la ligne que j'ai ajouté...


Message édité par Rastafarie le 03-06-2005 à 17:59:36
n°1107453
cesarr89
Posté le 03-06-2005 à 17:52:33  profilanswer
 

Bah c'est que ta requête s'execute pas bien.

n°1107459
Rastafarie
Posté le 03-06-2005 à 17:54:33  profilanswer
 

Pourtant tout le code que j'ai est là ! Ya rien d'autre... en quoi et pourquoi ne pourrait t'elle pas s'executer ?
 
Rastafarie

n°1107461
jeff@be
Posté le 03-06-2005 à 17:55:18  profilanswer
 

Une fonction extrêmement utile, à mettre entre toutes les mains: "mysql_error()"
 
mets une ligne  
 

Code :
  1. echo mysql_error();


 
juste après ta requête sur ta base de données, tout deviendra plus clair.  ;)

n°1107470
Rastafarie
Posté le 03-06-2005 à 18:00:28  profilanswer
 

Ben ca m'écrit une ligne en plus quand je met ça :

Code :
  1. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/6/f/xxxxx/newsletter/newsletter.php on line 7
  2. Unknown column 'mail' in 'field list'


 
Rastafarie

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Erreur mysql... Mais qu'est ce qui cloche ?????

 

Sujets relatifs
configuration apache mysql[mysql] nouveau cryptage du mot de passe
erreur JavaScript dans firefoxPartager une base MySQL entre 2 PC
Creation de vue avec MySQL[Mysql] Base de données trop grosse... [Résolu]
Erreur sous postgres "TABLE not found"Insérer une date en php dans une BD mysql
possible or impossible : c# , Mysql[MySQL] Sélection
Plus de sujets relatifs à : Erreur mysql... Mais qu'est ce qui cloche ?????


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR