Erreur dû a l'appel de la fonction mysql_query

siatu Messages postés 10 Date d'inscription mardi 14 septembre 2010 Statut Membre Dernière intervention 17 septembre 2010 - 17 sept. 2010 à 11:02
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 17 sept. 2010 à 20:10
Bonjour tout le monde,

voila le bout de mon script qui ne va pas bien php :

<?php 

 

$hostname= "localhost";

$mysql_base = "dbemailcenter";

$user = "root";
$pass="";
$conn=mysql_connect($hostname,$user,$pass);

$db=mysql_select_db($mysql_base,$conn) or die ("impossible de se connecter à la base ") ;



//include("connection.php");
$nom=$_POST['name'];
$societe=$_POST['societe'];
    $position=$_POST['position'];
    $email=$_POST['email'];
    $tel=$_POST['tel'];
    $siteweb=$_POST['siteweb'];
     $objet=$_POST['objet'];
$detail=$_POST['text'];

 
 $date=date('Y-m-d');
 $sql=mysql_query("select * from `offreagence` where `email` ='$email' and `date_offre`= '$date'") or die("impossible de'executer la requette");
 $nombre=mysql_num_rows($sql);
 if($nombre==0)
 {
 
 $req=mysql_query("INSERT INTO `offreagence`  VALUES ('$nom','$societe','$position','$email','$tel','$siteweb','$objet','$detail','$date','')")or die("impossible d'inserer cette offre");
if ($req) {

  echo ' Merci pour votre contact, Nous vous répondons dans les plus briefs délais'; 

}
}
else


{echo 'Vous avez déjà envoyé une demande de contact';}

 
 ?>

ce code affiche le message suivante: impossible d'inserer cette offre et si j'enlève le or die le script n'affiche rien aidez moi dites moi qu'est ce qu'il ne marche pas dans le script et merci d'avance.

5 réponses

Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
17 sept. 2010 à 11:17
Bonjour,


"INSERT INTO 'offreagence' VALUES ('$nom','$societe','$position','$email','$tel','$siteweb','$objet','$detail','$date','')"

Une requête INSERT, si tu avais chercher, ne se compose pas comme cela.

mais

"INSERT INTO table (champ_1,champ_2,...,champ_n) VALUES (valeur_1,valeur_2..., valeur_n)"

tu n'as pas besoin des ' ' autour du nom de ta table.
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
17 sept. 2010 à 15:02
Salut,

Lyle, au lieu d'écrire des âneries, tu devrais lire correctement ce qui est écrit. En l'occurrence, il n'a pas mis le nom de la table entre guillemet simple, mais entre guillemet oblique : `
La différence est fondamentale : les guillemets obliques servent à protéger le nom de la table s'il contient des caractères spéciaux (par exemple un tiret).
Autre ânerie : la liste des champs est facultative si on fournit toutes les valeurs (de tous les champs).
Le mieux pour aider n'est pas de raconter n'importe quoi, mais de proposer une démarche pour trouver le problème.

@siatu : au lieu de mettre simplement :
or die('....');

Affiche l'erreur MySQL, sinon tu ne pourras jamais avancer dans ton deboguage. Par exemple :
or die(mysql_errno().' : '.mysql_error());


--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
17 sept. 2010 à 17:15
@neige :

Tu peut même en mettre que 2; même si tu as 10 champs...
Du moment que c'est le 2 premiers et que tout les autres ont une valeur par défaut... mais si tu Insert de cette façon il faut être sur que tu respecte l'ordre des champs. De plus cela à tendance à merdé avec les champ auto-incrémenter si tu met ''.

Ensuite les noms à la con pour les tables et bases auxquels ils faut ajouté les ` ` ; je suis désoler mais c'est à proscrire.
Un petit truc sur les régles de nommages
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
17 sept. 2010 à 18:09
Entre "c'est à proscrire" parce que certaines personnes ont décidé de conventions et "ça fonctionne" parce que les développeurs le permettent, il y a un gouffre. S'il est possible de mettre des noms à la con, on ne va empêcher personne de le faire. On peut l'en décourager, mais pas lui interdire.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
17 sept. 2010 à 20:10
Salut,

Au passage : pense à jeter un oeil sur la doc de mysql_real_escape_string() parce que tel que tu procèdes actuellement c'est les ennuis assurés, ... c'est d'ailleurs peut être la source de tes soucis.


Cordialement,


Kohntark -
0
Rejoignez-nous