[PHP] - Gérer les entrées dupliquées My SQL & Remplir un <SELECT>??

- Gérer les entrées dupliquées My SQL & Remplir un <SELECT>?? [PHP] - PHP - Programmation

Marsh Posté le 09-04-2005 à 13:40:47    

Bon voila j'ai fais un formulaire (qui marche ne plus ) qui alimente une table....
Lorsque l'utilisateur affiche se formulaire deux options se présente à lui :
    1. C'est la premiére, il le remplit pr la premiere fois
    2. Il le met à jour et donc il a deja remplit le formulaire  
Tout ça se fait avec la mm interface :
Evidemment si on est ds le cas N°2 , je me retrouve ac une error de type "Mysql ne peu pas ajouter les valeurs parce que l'entrée existe déjà " (c'est l'esprit de l'erreur  :lol: )....
Bon tout est logique jusque là... Je cherche juste un moyen pour :
    -> soit faire un check de ma clé primaire pour vérifier si elle existe ou pas (en gros parcourir une colonne à la recherche d'une valeur). ET dans ce cas y -a-til une fonction php ou MySQL existante.
    -> soit faire un truc du style: "SI MYSQLERREUR type=duplicate_clé_primaire THEN....". Sachant qu'utiliser Mysql_error() ets trop vaste....
Merci pour votre aide précieuuuuuuuuuuuuuuuuuuuuse  :bounce:


Message édité par belay le 09-04-2005 à 21:37:20
Reply

Marsh Posté le 09-04-2005 à 13:40:47   

Reply

Marsh Posté le 09-04-2005 à 14:04:37    

Pourquoi tu fais pas un SELECT sur ta clef pour voir si la valeur existe deja?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 09-04-2005 à 14:15:46    

je pense que dans ton cas, il vaux mieux que tu utilises replace...
 
http://dev.mysql.com/doc/mysql/en/replace.html


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 09-04-2005 à 17:23:22    

dsl j'ai fait une sieste :D
Je vais regarde ça ...
Je pourrai faire un select c sur ...mais vu que mysql me renvoi une jolie erreur toute formatée pourquoi ne pas utiliser ça ?

Reply

Marsh Posté le 09-04-2005 à 18:47:12    

Parceqie les erreurs sont la pour signaler un disfonctionnement :D Pas pour etre canalisées et utiliser pour autre choses :p


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 09-04-2005 à 20:55:08    

Euh c'est une bonne raison :D .... Alors j'ai trouvé un truc qui devrait me satisfaire :
INSERT INTO...VALUES ... ON DUPLICATE KEY UPDATE ...
Bon normalement ça devrait marché mais ça me retourne une erreur de syntaxe sur la ligne '6' :D ... Comment ça se debugge ça ...
La ligne '6' c'est dans mon code PHP, sur les tables My SQL ... ?????

Reply

Marsh Posté le 09-04-2005 à 21:06:09    

KangOl a écrit :

je pense que dans ton cas, il vaux mieux que tu utilises replace...
 
http://dev.mysql.com/doc/mysql/en/replace.html


 
 
:o


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 09-04-2005 à 21:17:51    

Nan nan nan .... J'ai trouvé mes problémes :D
Bon d'abord si dans ma syntaxe MySQL j'oublie le "UPDATE" de ON DUPLICATE KYE "UPDATE" c'est sur que je vais avoir une erreur de syntaxe  :D ...
Bon voila ma requete finale qui repond exactement à ce que je voulais faire à savoir :

Citation :


-> soit faire un truc du style: "SI MYSQLERREUR type=duplicate_clé_primaire THEN....".


Code :
  1. $sql = "INSERT INTO fiche_team
  2.     (id, prenom, age, sex, ville, job, site, forum, msn, steam, steamid, mail, pseudo, histo, pseudo1, pseudo2, cslong, type, maplove, maphate, weapon, matos, games, talk, classe, fonction)
  3.     VALUES
  4.     ('$userid', '$prenom', '$age', '$sex', '$ville', '$job', '$site', '$forum', '$msn', '$steam', '$steamid', '$mail', '$pseudo', '$histo', '$pseudo1', '$pseudo2', '$cslong', '$type', '$maplove', '$maphate', '$weapon', '$matos', '$games', '$talk', '$classe', '$fonction')
  5.     ON DUPLICATE KEY UPDATE
  6.     prenom=VALUES(prenom), age=VALUES(age), etc etc...."


J'ai 23champs et ça marche du fue de dieu...
MErci pour ton lien Kangol parce que c'est en lisant les commentaires dessous la description de la fonction que j'ai pu accéder à cette fonction qui me convient parfaitement ;) :bounce:  :hello:


Message édité par belay le 09-04-2005 à 21:19:13
Reply

Marsh Posté le 09-04-2005 à 21:18:32    

non mais je suis en mode furtif ou quoi ??


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 09-04-2005 à 21:31:38    

Pourquoi ça ? Qu'est ce que tu veux dire par là ?
J'en profite pour lacher le lien du manuel de reference MySQL :
http://dev.mysql.com/doc/mysql/en/insert.html
 
et j'en profite pour poser une nouvelle question :
J'alimente mon formulaire à partir de ma bdd jusque là pas de soucis .... Sauf pour les balises <Select> j'ai bien une valeur ds ma table qui correspond à une <option> mais comment faire pour que cette option soit "selected" en fonction de l'entrée présente ds ma bdd ????
En gros c'est un formulaire de modification donc je voudrai que l'utilisateur retrouve exactement ce qu'il a rentré la première fois ... :??:


Message édité par belay le 09-04-2005 à 21:35:52
Reply

Marsh Posté le 09-04-2005 à 21:31:38   

Reply

Marsh Posté le 10-04-2005 à 11:22:16    

up

Reply

Marsh Posté le 10-04-2005 à 12:17:22    

belay a écrit :

Pourquoi ça ? Qu'est ce que tu veux dire par là ?
J'en profite pour lacher le lien du manuel de reference MySQL :
http://dev.mysql.com/doc/mysql/en/insert.html


je reprend ce qu'il y a marqué dans l'aide de mysql...

REPLACE works exactly like INSERT, except that if an old record in the table has the same value as a new record for a PRIMARY KEY or a UNIQUE index, the old record is deleted before the new record is inserted.


 

belay a écrit :


et j'en profite pour poser une nouvelle question :
J'alimente mon formulaire à partir de ma bdd jusque là pas de soucis .... Sauf pour les balises <Select> j'ai bien une valeur ds ma table qui correspond à une <option> mais comment faire pour que cette option soit "selected" en fonction de l'entrée présente ds ma bdd ????
En gros c'est un formulaire de modification donc je voudrai que l'utilisateur retrouve exactement ce qu'il a rentré la première fois ... :??:


en gros tu fait une boucle pour afficher tous tes <option>
bin dans cette boucle tu fait un if(option en cours == option choisie) echo " selected";


---------------
Nos estans firs di nosse pitite patreye...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed