Rechercher : dans
Par :

Insertion php

Dernière réponse le 24 fév 2003 à 15:29:22 so, le 21 fév 2003 à 09:30:59 
 Signaler ce message aux modérateurs

Salut !

j'ai fait un script pour insérer des données dans ma bdmais ça ne veux pas le faire....
en fait, des la premiere requete, ça plente !!

<?php
//cnx à la bd
$bd = mysql_connect('localhost', 'login','mot de passe') or die ("erreur de connexion");
//séléction de la bd
mysql_select_db(courrier, $bd) or die("erreur de connexion à la base");

//verification des données
// if(empty($nomexp))
//{
// echo "Le nom de l'expéditeur n'est pas rempli ! ";
//}
//if (empty($objet) || empty($typecourrier))
//{
// echo "L'objet ou le type du courrier ne sont pas spécifiés ! ";
//}
//if(empty($datenvoi))
//{
// echo "La date d'envoi du courrier n'est pas spécifiée ! ";
//}
//if (empty($service))
//{
// echo " Le service n'est pas rempli ! ";
//}

// on récupere le no de l'expediteur
$query1 = "SELECT noexpediteur FROM expediteur WHERE nomexpediteur = '$nomexp', prenexpediteur = '$prenexp', steexpediteur = '$steexp', villeexpediteur = '$villexp'";
$result1 = mysql_query($query1) or die ("La requete a echoué ");
//on vérifie que l'expéditeur n'existe pas
if (mysql_num_rows($result1)==0) // si l'expediteur n'existe pas il faut l'insérer
{
$query2 = "INSERT INTO expediteur (noexpediteur, nomexpediteur, prenexpediteur, steexpediteur, activiteexp, villeexp) VALUES (NULL, '$nomexp', '$prenexp', '$steexp', '$activiteexp', '$villexp')";
$result2 = mysql_query($query2) or die ("L'insertion à échoué !");
$query3 = $query1;
$result3 = mysql_query($query3) or die ("La requete 3 a échoué");
$line = mysql_fetch_array($result3);
$numeroexp = $line[0];
}
else //sinon, on récupere son numéro
{
$line = mysql_fetch_array($result1);
$numeroexp = $line[0];
}


//on récupere le no du destinataire correspondant au nom (dans la table destinataire);
$query4= "SELECT * FROM destinataire WHERE nomdestinataire = '$nomdest'";
$result4 = mysql_query($query4) or die ("La requete 4 à échoué");
$linenodest = mysql_fetch_array($result4);
$nodest = $linenodest[0];

//on récupere le numéro du service (de la table service)
$query5 = "SELECT * FROM service WHERE libservice = '$service'";
$result5 = mysql_querry($query5) or die ("La requete 5 à échoué");
$linenoserv = mysql_fetch_array($result5);
$noserv = $linenoserv[0];

//on récupere le numéro du type de courrier (de la table type courrier)
$query6 = "SELECT * FROM typecourrier WHERE libtypecourrier = '$typecourrier'";
$result6 = mysql_query($query6) or die ("la requete 6 à échoué");
$linetypnocour = mysql_fetch_array($result6);
$notypcour = $linetypnocour[0];

//on insere les champs dans la table courrier
$query5 = "INSERT INTO courrier (nocourier, objetcourrier, chpsrqs, datenvoi, refnoexpediteur, refnotypcourrier, chpsrqs, datenvoi, confidentiel, ) VALUES (NULL, '".$objet."', '".$chpsrqs."', '".$detenvoi."', '".$numeroexp."', '".$numtypcour."')";
$result5 = mysql_query($query5) or die("La requete 5 à échouer");




mysql_close();
?>

1

kalamit, le 21 fév 2003 à 09:46:14

ça plente !!

Désolé, je connais pas cette erreur. Par contre, si l'interpreteur te donnait une erreur bien explicite autre que "ca plante", ca nous aiderait vraiment à touver.

Kalamit,
Et ben crôôôôa, alors ? :@)

Répondre à kalamit

2

so, le 21 fév 2003 à 10:02:30

Dsl pour les fautes d'orthographe !!!
en fait, j'ai ça
Champ 'activiteexp' inconnu dans field list
c'est en rapport avec cette requete :
$query2 = "INSERT INTO expediteur (noexpediteur, nomexpediteur, prenexpediteur, steexpediteur, activiteexp, villeexp) VALUES (NULL, '$nomexp', '$prenexp', '$steexp', '$activiteexp', '$villexp')";
$result2 = mysql_query($query2) or die ("L'insertion à échoué !");

Répondre à so

3

wiwimagique, le 21 fév 2003 à 12:59:34

Essaie ca:

$query1 = "SELECT noexpediteur FROM expediteur WHERE nomexpediteur = '$nomexp' and prenexpediteur = '$prenexp' and steexpediteur = '$steexp' and villeexpediteur = '$villexp'";
$result1 = mysql_query($query1) or die ("La requete a echoué ");
//on vérifie que l'expéditeur n'existe pas
if (mysql_num_rows($result1)==0) // si l'expediteur n'existe pas il faut l'insérer
{
$query2 = "INSERT INTO expediteur VALUES (NULL, '$nomexp', '$prenexp', '$steexp', '$activiteexp', '$villexp')";
$result2 = mysql_query($query2) or die ("L'insertion à échoué !");
$result1 = mysql_query($query3) or die ("La requete 3 a échoué");
}


//on récupere le no du destinataire correspondant au nom (dans la table destinataire);
$query4= "SELECT * FROM destinataire WHERE nomdestinataire = '$nomdest'";
$result4 = mysql_query($query4) or die ("La requete 4 à échoué");
$linenodest = mysql_fetch_array($result4);
$nodest = $linenodest[0];

//on récupere le numéro du service (de la table service)
$query5 = "SELECT * FROM service WHERE libservice = '$service'";
$result5 = mysql_querry($query5) or die ("La requete 5 à échoué");
$linenoserv = mysql_fetch_array($result5);
$noserv = $linenoserv[0];

//on récupere le numéro du type de courrier (de la table type courrier)
$query6 = "SELECT * FROM typecourrier WHERE libtypecourrier = '$typecourrier'";
$result6 = mysql_query($query6) or die ("la requete 6 à échoué");
$linetypnocour = mysql_fetch_array($result6);
$notypcour = $linetypnocour[0];

//on insere les champs dans la table courrier
$query5 = "INSERT INTO courrier VALUES (NULL, '".$objet."', '".$chpsrqs."', '".$detenvoi."', '".$numeroexp."', '".$numtypcour."')";
$result5 = mysql_query($query5) or die("La requete 5 à échouer");


le message d'erreur est tres explicite: le champ 'activiteexp' n'existe pas dans ta table.

ps:Tu fais bcp de requetes a mon gout....

Répondre à wiwimagique

4

kalamit, le 21 fév 2003 à 13:11:14

Re-,
Si cela ne fonctionne toujours pas :
Fais un echo de la requete incriminée et copie/colle la dans phpmyadmin.
Il peut s'agir d'un champ mal orthographié. (Il faut respecter la casse sous les systeme UNIX).

Voili, voilou !

Kalamit,
Amis motards, attention à la ligne blanche ! :@)

Répondre à kalamit

5

so, le 21 fév 2003 à 13:51:42

Et qu'est ce que tu préconise pour faire moins de requetes? il faut bien que je récupere les numéro vue qu'on ne peut pas les saisir dans le formulaire...

Répondre à so

6

kalamit, le 21 fév 2003 à 14:00:25

Certes, y'a beaucoup de requetes, mais si elles sont necessaires...

Kalamit,
Amis motards, attention à la ligne blanche ! :@)

Répondre à kalamit

7

so, le 21 fév 2003 à 14:16:30

ça ne risque pas de marcher ça : {
$query2 = "INSERT INTO expediteur VALUES (NULL, '$nomexp', '$prenexp', '$steexp', '$activiteexp', '$villexp')";
$result2 = mysql_query($query2) or die ("L'insertion à échoué !");
$result1 = mysql_query($query3) or die ("La requete 3 a échoué"); <<-- tu fais appel a une requete qui n'existe pas vue que tu l'a fait sauté !!
}

Répondre à so

8

kalamit, le 21 fév 2003 à 14:54:27

Juste une question, a quoi ca te sert ca : $query3 = $query1; ??

Kalamit,
Amis motards, attention à la ligne blanche ! :@)

Répondre à kalamit

20

wiwimagique, le 22 fév 2003 à 03:22:16

Desole, c moi qui ai saute la query 3 ( vue qu'elle ne servait pas apparemment) et j'ai oublie de corriger :p

Sinon, pour le nombre de requete, je m'affole quand il y en a plus de 3 dans un script. J'ai pas regarde la structure de ses tables ni la pertinence de ses requetes. c'etait juste une remarque comme ca, pour le fun :)

Répondre à wiwimagique

9

so, le 21 fév 2003 à 15:08:21

Et ben pour afecter la requete 1 à la requete 3 ce qui évite de la refaire

Répondre à so

10

kalamit, le 21 fév 2003 à 15:53:18

Et bien sers toi directement de $query1 ! C'est pas plus cher et ca te fait une ligne de code en moins.

Kalamit,
Amis motards, attention à la ligne blanche ! :@)

Répondre à kalamit

11

so, le 21 fév 2003 à 16:01:34

Si vous le dites chef !!! moije crayait bien faire !!! c'est à cause de ça que ça marché pas le reste ??

Répondre à so

12

so, le 21 fév 2003 à 16:16:24

Et ben j'ai toujours la meme erreur et je ne vois pas pourquoi :


Parse error: parse error in c:\program files\easyphp\www\suivi courrier\insertion.php on line 34


$query1 = "SELECT * FROM expediteur WHERE nomexpediteur = '$nomexp' AND prenexpediteur = '$prenexp' AND steexpediteur = '$steexp' AND villeexpediteur = '$villexp'";
$result1 = mysql_query($query1) or die (mysql_error());

Répondre à so

13

so, le 21 fév 2003 à 16:23:07

C'est bon, j'ai trouvé mon erreur mais j'en ai une autre !
Fatal error: Call to undefined function: mysql_querry() in c:\program files\easyphp\www\suivi courrier\insertion.php on line 54

c'est sur cette requete :
//on récupere le numéro du service (de la table service)
$query5 = "SELECT * FROM service WHERE libservice = '$service'";
$result5 = mysql_querry($query5) or die ("La requete 5 à échoué");
$linenoserv = mysql_fetch_array($result5);
$noserv = $linenoserv[0];

Répondre à so

14

so, le 21 fév 2003 à 16:33:40

Mea culpa !!! j'ai rien dit !!!

Répondre à so

15

so, le 21 fév 2003 à 16:36:52

J'ai encore un erreur : ma requete ne veux pas se faire :

//on récupere le numéro du type de courrier (de la table type courrier)
$query6 = "SELECT * FROM typecourrier WHERE typecourrier = '$typecourrier'";
$result6 = mysql_query($query6) or die ("la requete 6 à échoué");
$linetypnocour = mysql_fetch_array($result6);
$notypcour = $linetypnocour[0];

pourquoi ???

Répondre à so

16

so, le 21 fév 2003 à 16:57:36

Je suis arrivé à arrenger ma requete, mais elle ne fonctionne toujours pas, pourtant, je l'ai vérifier plusieurs fois !!!
qu'est-ce qui ne va pas la dedans ???


//on insere les champs dans la table courrier
$query6 = "INSERT INTO courrier (objetcourrier, refnoexpediteur, reftypcourrier, chpsrqs, datenvoi, confidentiel, refnodest, datereception) VALUES ('$objet', '$noexp', '$typecourrier', '$chpsrqs', '$detenvoi', '$confidentiel', '$nodest','$date')";
$result6 = mysql_query($query6) or die("La requete 6 a échoué ! ");

j'ai : la requete 6 a échoué !

Répondre à so

17

so, le 21 fév 2003 à 16:59:51

Est ce que ça peut etre à cause de la date parce que $date est au format 0000-00-00 ???

Répondre à so

18

kalamit, le 21 fév 2003 à 17:01:47

Ah ? Tu as essayé de faire un echo de ta requete et de la copie/collé dans phpmyadmin ?

Fais le ! Tu auras un message d'erreur plus clair.

Kalamit,
Amis motards, attention à la ligne blanche ! :@)

Répondre à kalamit

19

so, le 21 fév 2003 à 17:08:49

Et bien j'ai ça :
MySQL a répondu: Champ 'reftypcourrier' inconnu dans field list
et pourtant reftypcourrier existe bien dans ma bd !!!

Répondre à so

21

so, le 24 fév 2003 à 09:11:20

C'est bon, ça marche !!!!
par contre j'ai un pb de dates ... en fait, elles sont au format : AAAA-MM-JJ alors que je les rentre au format JJ-MM-AAAA comment faut faire pour le mettre au bon format ?

Répondre à so

22

kalamit, le 24 fév 2003 à 09:34:58

Salut !

http://www.phpfrance.com/tutorials/index.php?id=54

Kalamit,
Amis motards, attention à la ligne blanche ! :@)

Répondre à kalamit