le requette insert into

Nouveau WRInaute
salut

j ai un probleme avec la requette Insert into je veux inserer les donnee dans 2 tables à la

fois à partir d'un formulaire mais ça marche pas lorsque j insere les donnee

les donnee s'ajoute seulement dans la premiere table pour la 2 eme non

voila les requette que j'utilise :


$sql1="insert into geo VALUES ('',$n,'$o','$p','$q','$r',$s)";
mysql_query($sql1);
$sql2="insert into detailgeo VALUES ('',$t,'$u','$v','$w')";


merci d'avance
 
Nouveau WRInaute
xavi_386 a dit:
$sql1="insert into geo VALUES ('',$n,'$o','$p','$q','$r',$s)";
mysql_query($sql1);
$sql2="insert into detailgeo VALUES ('',$t,'$u','$v','$w')";

mysql_query($sql2);

Faut bien le placer aussi celui-la...
 
Nouveau WRInaute
guardatak

wi vous avez raison je l ai ajoute
mais tjrs le meme probleme la premiere requette qui s'execute la sexieme nn
 
Nouveau WRInaute
Bon bha ya plus qu'a copier/coller... mais faut comprendre pas le faire bêtement.

Code:
$sql="INSERT INTO geo VALUES ('', $n, $o, $p, $q, $r, $s)"; 
$result = mysql_query($sql);

$sql="INSERT INTO detailgeo VALUES ('', $t, $u, $v, $w)";
$result = mysql_query($sql);

Et si sa marche pas, faut se jeter par la fenêtre la plus proche.

Complément pour le post suivant :
Une requête c'est ça : $sql="INSERT INTO geo VALUES ('', $n, $o, $p, $q, $r, $s)";
 
WRInaute accro
Ou alors si ça ne marche toujours pas, l'autre solution peut être de vérifier ta requête dans PhpMyAdmin ou dans ton client Mysql, pour voir ce qui cloche.
 
WRInaute discret
Je ne crois pas que quelqu'un peut vraiment t'aider de cette manière! Il y a bcp de raisons pour qu'une requête insert échoue.

Tu peux certainement résoudre le problème toi même mais reste encore à savoir lequel. Pour ca je te conseille :
Code:
$sql="INSERT INTO detailgeo VALUES ('', $t, $u, $v, $w)"; 
$result = mysql_query($sql);
if (!$result) {
    die('Requête invalide : ' . mysql_error());
}
 
Nouveau WRInaute
J'ai toujours adoré les erreurs MySQL, qui sont pour ceux qui n'y connaissent pas grand chose, parfois incompréhensibles :lol:

Et là je sens qu'on va l'embrouiller de plus en plus... mais c'est vrai, tu as raison, c'est utile :wink:
 
WRInaute accro
Franchement vaut mieux faire des requêtes en mettant explicitement les noms des champs comme ceci. Les avantages ?
- Ca t'évite de mettre ('') pour l'id qui s'incrémente automatiquement, ce qui provoque des erreurs aléatoires sur certaines versions mysql.
- Ca te permet de voir tout de suite quelle valeur se rapporte à quel champ sans devoir aller regarder la structure de ta table dans la base de données
- Le plus gros avantage, c'est que tout ton programme ne plantera pas si tu rajoutes une colonne au milieu de ta table. Actuellement, ça sera la merde si tu le fais.

$sql="INSERT INTO detailgeo (champ1,champ2,champ3,numero1,numero2) VALUES ('".$a."','".$b."','".$c."',".$d.",".$e.")";

Entrer une chaine de caractères requiert des côtes, les numéros n'en ont pas besoin.
 
WRInaute accro
Les deux sont mal foutues, donc refait les toutes les 2 en comprenant ce que tu fais

Tu devrais aussi afficher $sql avant de l'exécuter sur les deux requêtes pour voir si tu obtiens bien ce que tu attends.
 
Nouveau WRInaute
voila mon code :

<?php
}
else
{

$n=$_POST["parent"];
$o=$_POST["devise"];
$p=$_POST['drapeau'];
$q=$_POST["langueGoe"];
$r=$_POST["abreviation"];
$s=$_POST["zipcode"];
$t=$_POST["idLangue"];
$u=$_POST["nom"];
$v=$_POST["type"];
$w=$_POST["caracteristiques"];
$db=mysql_connect('localhost','root','');
mysql_select_db('auriad',$db);
$sql="INSERT INTO geo VALUES ('', $n, $o, $p, $q, $r, $s)";
mysql_query($sql);
$sql="INSERT INTO detailgeo VALUES ('', $t, $u, $v, $w)";
mysql_query($sql);
echo "un nouveau geo a &eacute;t&eacute; ajout&eacute;";
}
?>
 
WRInaute passionné
ouhhh la jolie injection SQL... ne pas oublier mysql_real_escape_string() (ou au moins addslashes())...
 
WRInaute accro
Je crois que t'as tous les éléments en ta possession pour te débrouiller maintenant xavi_386.

Bonne chance. Si t'as un souci on peut t'aider, mais on va pas te le servir sur un plateau hein ;)
 
WRInaute impliqué
la solution est de mettre apres chaque table tous les noms des champs
et aussi pour les varcahar ajouter ''

exemple :

Code:
$sql ="INSERT INTO table$c(id,nom,titre,url,email,description) VALUES('','$a1','$a3','$a4','$a2','$a5')";
mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error()); 

$sql ="INSERT INTO tous(id,titre,url,description) VALUES('','$a3','$a4','$a5')";
mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());
 
WRInaute accro
non justement, il n'y a pas besoin de tous les mettre et encore moins l'id qui s'autoincrémente de lui même ...
 
WRInaute impliqué
perso j'aime reprendre le style d'insert que l'on utilise pour les update :

$sql ="INSERT tous set titre='$titre', description='$description' ";

au moins tu vois bien tes champs d'insert et tu te trompes pas :)


ps : dans l'exemple, on suppose que l'on a fait ce qu'il faut pour nettoyer les chaînes de caractères.
 
Discussions similaires
Haut