Page 1 sur 1
Une seule insertion
Posté : 15 juin 2005, 22:28
par mikeosx
Bonjour, je recontre moults problèmes et le livre que j'ai acheté PHP 5 avancé explique pas dans le détails comment fonctionnent les requetes SQL...
quand je fais
<?php
$nom = $_REQUEST['nom'];
$prenom = $_REQUEST['prenom'];
$email = $_REQUEST['email'];
$telephone = $_REQUEST['telephone'];
$portable = $_REQUEST['portable'];
$adresse = $_REQUEST['adresse'];
$adressesuite = $_REQUEST['adressesuite'];
$codepostal = $_REQUEST['codepostal'];
$ville = $_REQUEST['ville'];
mysql_connect ("localhost", "root", "");
// on séléctionne la basse de données
mysql_select_db ("baserepertoire");
// on effectue la requete SQL
$sql = "INSERT INTO contact (nom, prenom) VALUES ('$nom','$prenom')";
mysql_query($sql);
?>
Je peux insérer des données dans ma base mais quand je reviens sur le formulaire pour insérer de nouveau et bien ca ne marche plus.
Si j'efface l'enregistrement qui a été créé ca refonctionne...
Quelqu'un peut-il m'aider ?
Un bon livre plus complet sur les requetes sql en php ?
merci !
Posté : 15 juin 2005, 22:38
par albat
Posté : 16 juin 2005, 14:55
par nada71
moi a ta place je ferai
<?php
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$portable = $_POST['portable'];
$adresse = $_POST['adresse'];
$adressesuite = $_POST['adressesuite'];
$codepostal = $_POST['codepostal'];
$ville = $_POST['ville'];
mysql_connect ("localhost", "root", "");
// on séléctionne la basse de données
mysql_select_db ("baserepertoire");
// on effectue la requete SQL
$sql = "INSERT INTO contact (nom, prenom) VALUES ('$nom','$prenom')";
mysql_query($sql)or die('Erreur SQL !'.$sql.''.mysql_error());;
?>
Posté : 16 juin 2005, 14:58
par sausee2005
mysql_query($sql)or die('Erreur SQL !'.$sql.''.mysql_error());
j'ai enlevé un point virgule
Posté : 16 juin 2005, 15:01
par nada71
oui exact lol.
Posté : 16 juin 2005, 16:55
par zeus
Je pense que dans ta table, tu doit avoir une clé primaire ou du moins un champ unique qui n'est pas auto_increment
Alors quand tu insère une ligne, ça marche mais quand tu cherche à en insérer une autre, il y a conflit sur cette colonne et l'enregistrement echoue
Essaye de te servir du code que Nada_71 t'as donné pour voir les erreur que MySQL peut génerer
Posté : 16 juin 2005, 17:12
par mikeosx
merci a tous
j'ai utilisé le code de Nada_71 ca marche nickel merci !
Mais je comprends pas trop la différence entre
mysql_query($sql)or die('Erreur SQL !'.$sql.''.mysql_error());
et
mysql_query($sql);
mysql_error($sql);
avec ca j'ai un retour
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in c:\program files\easyphp1-8\www\repertoire\script.php on line 30
pourtant c'est pas la meme chose ?
Posté : 16 juin 2005, 17:14
par zeus
mysql_error($sql); attend comme parametre un identifiant de connexion (ce qui est retourné quand tu fait un mysql_connect)
Toi, tu lui passe une requete
Posté : 16 juin 2005, 17:16
par Guakamol
Dans le premier cas si la fonction mysql_query echoue alors tu affiche l'erreur en stopant le script.
Dans ce que tu propose tu cherche a afficher une erreur dans tout les cas (meme si mysql_query a reussi).
Posté : 16 juin 2005, 17:18
par mikeosx
ouep ! j'ai corrigé par
$result = mysql_query($sql);
mysql_error($result);
Toujours :
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in c:\program files\easyphp1-8\www\repertoire\script.php on line 30
J'suis une tache vous pensez ?
Posté : 16 juin 2005, 17:21
par zeus
Pas une tâche mais quelqu'un qui ne lit pas les post en entier
Je te disais qu'un identifiant de connexion est ce qui est retourné par un
mysql_connect
Mais il ne faut pas faire
mysql_query(...);
mysql_error(...);
fait comme on te l'as conseillé
mysql_query(...) or die(mysql_error());
Posté : 16 juin 2005, 17:24
par mikeosx
Ok!!! en effet j'aurais du mieux lire....
En tous les cas merci à tous pour votre précieuse aide.