Petit souci de table

Eléphant du PHP | 257 Messages

03 avr. 2006, 06:05

Bonjour à tous
Dans ma base agences j'ai 2 tables, l'une agences_tbl l'autre logo
et voici un extrait de mon code :
mysql_select_db('agences',$db)  or die('Erreur de selection '.mysql_error()); 
     
    // on écrit la requête sql 
    $sql = "INSERT INTO agences_tbl(ID,nom, titre, adresse, telephone, fax, mail, agent1, mail1, agent2, mail2, agent3, mail3, id_img) 
VALUES('','$nom','$titre','$adresse','$telephone','$fax','$mail','$agent1','$mail1','$agent2','$mail2','$agent3','$mail3','$img')"; 

   //construction de la query SQL
$sql = "INSERT INTO logo (ID) VALUES ('$ID') ";
Il y a un truc qui ne fonctionne pas, cad que seul la table logo est renseignée !!!
Maintenant si j'enlève ceci du code ci dessus :
//construction de la query SQL
$sql = "INSERT INTO logo (ID) VALUES ('$ID') ";
eh bien la table agences_tbl est alors bien renseignée.
(par renseigné j'entends que les infos sont bien entrés dans la table).

Qu'y a-t-il de pas bon ?
Merci à vous
:cry:
[/php]

Eléphant du PHP | 101 Messages

03 avr. 2006, 07:13

c normal les 2 requette son dans des variables de meme nom donc la 2em ecrase la 1er, oula je sais pas si je suis clair

essaye un truc comme ça et exécute les 2 requètes :
mysql_select_db('agences',$db)  or die('Erreur de selection '.mysql_error());
     
    // on écrit la requête sql
    $sql_agence = "INSERT INTO agences_tbl(ID,nom, titre, adresse, telephone, fax, mail, agent1, mail1, agent2, mail2, agent3, mail3, id_img)
VALUES('','$nom','$titre','$adresse','$telephone','$fax','$mail','$agent1','$mail1','$agent2','$mail2','$agent3','$mail3','$img')";

   //construction de la query SQL
$sql_logo = "INSERT INTO logo (ID) VALUES ('$ID') ";
Voir mes projets sur mon BLOG

Eléphant du PHP | 257 Messages

04 avr. 2006, 01:19

non fonctionne po voici le message d'erreur :

Erreur SQL !
Query was empty


:cry:

Mammouth du PHP | 19672 Messages

04 avr. 2006, 08:20

montre nous le code corrigé que tu utilises, et au passage, une concaténation propre entre chaine d caractère (SQL) et les variables PHP serait souhaitable.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 257 Messages

04 avr. 2006, 08:40

voila tout le code corrigé :
<?php 
// On commence par récupérer les champs 
if(isset($_POST['nom']))      $nom=$_POST['nom'];
else      $nom="";

if(isset($_POST['titre']))      $titre=$_POST['titre'];
else      $titre="";

if(isset($_POST['adresse']))      $adresse=$_POST['adresse'];
else      $adresse="";

if(isset($_POST['telephone']))      $telephone=$_POST['telephone'];
else      $telephone="";

if(isset($_POST['fax']))      $fax=$_POST['fax'];
else      $fax="";

if(isset($_POST['mail']))      $mail=$_POST['mail'];
else      $mail="";

if(isset($_POST['agent1']))      $agent1=$_POST['agent1'];
else      $agent1="";

if(isset($_POST['mail1']))      $mail1=$_POST['mail1'];
else      $mail1="";

if(isset($_POST['agent2']))      $agent2=$_POST['agent2'];
else      $agent2="";

if(isset($_POST['mail2']))      $mail2=$_POST['mail2'];
else      $mail2="";

if(isset($_POST['agent3']))      $agent3=$_POST['agent3'];
else      $agent3="";

if(isset($_POST['mail3']))      $mail3=$_POST['mail3'];
else      $mail3="";

if(isset($_POST['img']))      $img=$_POST['img'];
else      $img="";


     
    { 
       // connexion à la base
$db = mysql_connect('localhost', 'agence', 'xxxxx')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  

    mysql_select_db('agences',$db)  or die('Erreur de selection '.mysql_error()); 
     
    // on écrit la requête sql 
    $sql_agence = "INSERT INTO agences_tbl(ID,nom, titre, adresse, telephone,fax, mail, agent1, mail1, agent2, mail2, agent3, mail3) VALUES('','$nom','$titre','$adresse','$telephone','$fax','$mail','$agent1','$mail1','$agent2','$mail2','$agent3','$mail3')";  
     
     //construction de la query SQL 
$sql_logo = "INSERT INTO logo (ID) VALUES ('$ID') "; 
     
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 



    // on affiche le résultat pour le visiteur 
    echo '<a href="http://www.xxxxxx.com/agences/ad_agents.htm">Vos infos on été ajoutées.</a>';


    mysql_close();  // on ferme la connexion 
    }  
?> 

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 avr. 2006, 09:58

Regarde un peu la variable qui se trouve dans mysql_query() et celles de requetes :wink:

en passant je ne vois pas d'initialisation de la variable $ID

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 257 Messages

04 avr. 2006, 10:09

Regarde un peu la variable qui se trouve dans mysql_query() et celles de requetes :wink:

en passant je ne vois pas d'initialisation de la variable $ID
:oops: je ne vois pas ce que tu veux me dire :oops:

attention si j'enlève ça
//construction de la query SQL 
$sql_logo = "INSERT INTO logo (ID) VALUES ('$ID') "; 
le script fonctionne !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 avr. 2006, 10:11

Ni plus ni moins que ça:
Regarde la variable dans mysql_query() et celles des requetes
Les noms des variables.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
ViPHP
ViPHP | 3008 Messages

04 avr. 2006, 10:16

$sql_logo = "INSERT INTO logo (ID) VALUES ('$ID') ";
devient
$sql_logo = "INSERT INTO logo(ID) VALUES('$ID')";
Enlèves les espaces avant les "(".

Eléphant du PHP | 257 Messages

05 avr. 2006, 01:26

Très bien, mais si la table agences_tbl est bien renseignée et si il n'y a plus de message d'erreur, par contre la table logo n'est toujours pas renseignée, le champs ID reste vide !!

:cry: :cry:

Eléphant du PHP | 257 Messages

05 avr. 2006, 01:43

Regarde un peu la variable qui se trouve dans mysql_query() et celles de requetes :wink:

en passant je ne vois pas d'initialisation de la variable $ID
oui effectivement il y a ce probleme :
// on insère les informations du formulaire dans la table 
    mysql_query($sql_agence $sql_logo) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
par contre je ne sais pas si c'est bien écrit parce que je reçois ce message d'erreur :
Parse error: parse error in /var/www/xxxxxxx/agences/add.php on line 57

:oops:

Eléphant du PHP | 257 Messages

05 avr. 2006, 02:15

Bon ben ! maintenant ça fonctionne voici le script corrigé :
// on écrit la requête sql dans agences_tbl
    $sql = "INSERT INTO agences_tbl(ID,nom, titre, adresse, telephone,fax, mail, agent1, mail1, agent2, mail2, 

agent3, mail3) 

VALUES('','$nom','$titre','$adresse','$telephone','$fax','$mail','$agent1','$mail1','$agent2','$mail2','$agent3','$mail

3')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on écrit la requête sql dans logo

    $sql = "INSERT INTO logo(ID) VALUES('$ID')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

   // on récupère l'ID qui vient d'être généré 
    $ID = mysql_insert_ID();  
:wink:

Mammouth du PHP | 19672 Messages

05 avr. 2006, 09:02

Au passage : comment simplifier ue récupération de valeurs de formulaire en faisant moins de code ? :
<?php
// On commence par récupérer les champs
$nom       = (isset($_POST['nom']))       ? $_POST['nom']       : "";
$titre     = (isset($_POST['titre']))     ? $_POST['titre']     : "";
$adresse   = (isset($_POST['adresse']))   ? $_POST['adresse']   : "";
$telephone = (isset($_POST['telephone'])) ? $_POST['telephone'] : "";
$fax       = (isset($_POST['fax']))       ? $_POST['fax']       : "";
$mail      = (isset($_POST['mail']))      ? $_POST['mail']      : "";
$agent1    = (isset($_POST['agent1']))    ? $_POST['agent1']    : "";
$mail1     = (isset($_POST['mail1']))     ? $_POST['mail1']     : "";
$agent2    = (isset($_POST['agent2']))    ? $_POST['agent2']    : "";
$mail2     = (isset($_POST['mail2']))     ? $_POST['mail2']     : "";
$agent3    = (isset($_POST['agent3']))    ? $_POST['agent3']    : "";
$mail3     = (isset($_POST['mail3']))     ? $_POST['mail3']     : "";
$img       = (isset($_POST['img']))       ? $_POST['img']       : "";

//... suite du code
?>
Plus clair et qui fait exactement la même chose sur moins de lignes. ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 257 Messages

05 avr. 2006, 10:44

merci cyrano c'est vrai ainsi c'est plus clair et plus propre :wink: