Page 1 sur 1

Données utilisées deux fois... et ca marche pas ($nom)

Posté : 13 déc. 2005, 14:42
par 3LpH4Ri0N
Bonjour, je souhaite utiliser des données d'un formulaire successivement, voici le code que j'ai établi :
//Insertion Team
mysql_query("INSERT INTO lao_teams (id,nom,tag,web,devise) VALUES ('','$nom','$tag','$web','$devise') ") or die ("Erreur Insertion team".mysql_error());

//Insertion nom team dans membre
$sql = "INSERT INTO lao_membre (team2) VALUES ('$nom') WHERE id = ".$_SESSION['id'];
echo $sql;
mysql_query($sql) or die ("Erreur Insertion nom team".mysql_error());
Ce n'est pas possible de réutiliser $nom ??? car lors de l'affichage de ma requête générée, il m'affiche :
INSERT INTO lao_membre (team2) VALUES ('') WHERE id = 1Erreur Insertion nom teamYou have an error in your SQL syntax near 'WHERE id = 1' at line 1
Merci d'avance

Posté : 13 déc. 2005, 15:10
par jobherzt
a priori, aucun probleme pour utiliser X fois une variable recuperee d'un formulaire, tu dois avoir une autre erreur dans ta requete, meme si je la vois pas la tout de suite :-(

Posté : 13 déc. 2005, 15:19
par 3LpH4Ri0N
Voici le code complet :
<?
session_start(); 
require ('config.php');

//Insertion Team
mysql_query("INSERT INTO lao_teams (id,nom,tag,web,devise) VALUES ('','$nom','$tag','$web','$devise') ") or die ("Erreur Insertion team".mysql_error());

//Insertion nom team dans membre
$sql = "INSERT INTO lao_membre (team2) VALUES ('$nom') WHERE id = ".$_SESSION['id'];
echo $sql;
mysql_query($sql) or die ("Erreur Insertion nom team".mysql_error());

//Insertion du manager
mysql_query("INSERT INTO lao_teams (manager) VALUES ('". $_SESSION['pseudo'] ."')") or die ("Erreur Insertion manager".mysql_error());

$sql = "UPDATE lao_membre SET team = 1
WHERE id = ".$_SESSION['id']; 

//Execution de la requête
mysql_query($sql) or die(mysql_error()); 

//on ferme la connexion
mysql_close();

//on redirige le visiteur sur la page d'accueil, là ou s'afficheront les messages
header('location: ../../index.php');

?>

Posté : 13 déc. 2005, 17:40
par Tiger
Heu... il est ou ton $_POST?

Posté : 13 déc. 2005, 17:47
par jobherzt
oops, je n'avais pas fais gaffe? a tu remarque que $nom est vide? tu dois avoir une option "NOT NULL" dans ta base, effectivement ca vient peut etre du fait que tu n'utilises pa $_post

Posté : 13 déc. 2005, 18:11
par 3LpH4Ri0N
a tu remarque que $nom est vide?
$nom n'est pas vide vu que dans la première reqûete il l'envoie bien dans ma table... d'où ma question si on pouvait l'utiliser deux fois :)
Sinon j'ai rien compris à ton post :)

Donc l'erreur est ailleur, mais je ne vois toujours pas ou :(

Posté : 13 déc. 2005, 18:23
par Tiger
Quand tu veux récupérer ce qu'il y a dans le champs d'un formulaire, tu dois aller récuper ce qu'il y dans ton champs. Tu t'y prend comme ceci :
$nom = $_POST['atribut_name_de_ton_champs']
Et à partir de celà, tu vas pouvoir utiliser ta variable $nom autant de fois que tu le veux.

Posté : 13 déc. 2005, 18:28
par 3LpH4Ri0N
Okay, d'habitude je ne n'utilise pas post (selon les formulaires) et cela fonctionne....
Cependant je prend note

Merci beaucoup, je vais tester :D

Posté : 13 déc. 2005, 18:31
par Tiger
Si jamais tu utilises la méthode get pour envoyer un formulaire, c'est le même principe, mais avec $_GET[]

Posté : 13 déc. 2005, 18:42
par DocType
Okay, d'habitude je ne n'utilise pas post (selon les formulaires) et cela fonctionne....
Cependant je prend note

Merci beaucoup, je vais tester :D
Donc il serait temps de commencer à coder proprement :wink:

Posté : 13 déc. 2005, 18:42
par jobherzt
au risque de paraitre lourd, j'insiste un peu : la premiere requete ne te renvoie pas d'erreur, certes, mais a tus verifie dans la base que le nom a été correctement entré ? ie que tu ne recuperes pas une chaine vide ? dans ce cas effectivement $_POST ou $_GET s'imposent.

ce que je disais, c'est que quand tu cree une table, tu peux specifier que tu ne souhaite pas qu'un certain champ soit null. donc la requete peut retourner une erreur si la variable que tu utilise ne contient rien.

Posté : 13 déc. 2005, 19:02
par 3LpH4Ri0N
la premiere requete ne te renvoie pas d'erreur, certes, mais a tus verifie dans la base que le nom a été correctement entré
oui oui la valeur y était bien...

Cependant,
j'ai toujours mon erreur :
Erreur Insertion nom teamYou have an error in your SQL syntax near 'WHERE id = 1' at line 2
voici donc mon code rectifié :
<?
session_start(); 
require ('config.php');

$nom = $_POST['nom'];
$tag = $_POST['tag'];
$web = $_POST['web'];
$devise = $_POST['devise'];

//-------------CREATION TEAM--------------
mysql_query("INSERT INTO lao_teams (id,nom,tag,web,devise) VALUES ('','$nom','$tag','$web','$devise') ") or die ("Erreur Insertion team".mysql_error());
//--------------MANAGER-------------------
mysql_query("INSERT INTO lao_teams (manager) VALUES ('". $_SESSION['pseudo'] ."')") or die ("Erreur Insertion manager".mysql_error());

//-----------MAJ MEMBRE------------------
$sql = "INSERT INTO lao_membre (team2) VALUES ('$nom')
WHERE id = ".$_SESSION['id'];
mysql_query($sql) or die ("Erreur Insertion nom team".mysql_error());
$sql2 = "UPDATE lao_membre SET team = 1
WHERE id = ".$_SESSION['id']; 
mysql_query($sql2) or die(mysql_error()); 

//------------FERMETURE-------------------
mysql_close();

//--------------REDIRECTION------------------
header('location: ../../index.php');

?>
Et je précise que toute cette partie la :
//-------------CREATION TEAM-------------- 
mysql_query("INSERT INTO lao_teams (id,nom,tag,web,devise) VALUES ('','$nom','$tag','$web','$devise') ") or die ("Erreur Insertion team".mysql_error()); 
//--------------MANAGER------------------- 
mysql_query("INSERT INTO lao_teams (manager) VALUES ('". $_SESSION['pseudo'] ."')") or die ("Erreur Insertion manager".mysql_error());
s'effecture correctement (et insère bien dans ma base :p)

Posté : 13 déc. 2005, 19:11
par jobherzt
aaaaaaaaarg !

des fois je me taperais bien sur la tete moi... dsl, l'erreur etait sous mes yeux et je n'ai rien vu. la syntaxe insert into ... where est incorrecte. where s'utilise pour reperer un champ qui existe deja, alors que par definition insert en cree un. si tu veux modifier un champ qui existe deja, il faut utiliser update.

Posté : 13 déc. 2005, 19:17
par 3LpH4Ri0N
Correct !!!!
Bon et bien voilà, j'aurais dû faire attention aussi, mais à force de l'avoir sous les yeux on ne voit plus grand chose :)

Merci beaucoup à vous de m'avoir aidé... :D