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

Eléphant du PHP | 86 Messages

13 déc. 2005, 14:42

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
Modifié en dernier par 3LpH4Ri0N le 13 déc. 2005, 18:12, modifié 1 fois.

Eléphant du PHP | 383 Messages

13 déc. 2005, 15:10

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 :-(

Eléphant du PHP | 86 Messages

13 déc. 2005, 15:19

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');

?>

Eléphant du PHP | 65 Messages

13 déc. 2005, 17:40

Heu... il est ou ton $_POST?
Mieux vaut avoir un humour douteux que de ne pas en avoir du tout!

Eléphant du PHP | 383 Messages

13 déc. 2005, 17:47

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

Eléphant du PHP | 86 Messages

13 déc. 2005, 18:11

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 :(

Eléphant du PHP | 65 Messages

13 déc. 2005, 18:23

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.
Mieux vaut avoir un humour douteux que de ne pas en avoir du tout!

Eléphant du PHP | 86 Messages

13 déc. 2005, 18:28

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

Eléphant du PHP | 65 Messages

13 déc. 2005, 18:31

Si jamais tu utilises la méthode get pour envoyer un formulaire, c'est le même principe, mais avec $_GET[]
Mieux vaut avoir un humour douteux que de ne pas en avoir du tout!

Mammouth du PHP | 1776 Messages

13 déc. 2005, 18:42

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:

Eléphant du PHP | 383 Messages

13 déc. 2005, 18:42

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.

Eléphant du PHP | 86 Messages

13 déc. 2005, 19:02

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)

Eléphant du PHP | 383 Messages

13 déc. 2005, 19:11

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.

Eléphant du PHP | 86 Messages

13 déc. 2005, 19:17

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