Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
638 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1041163
belay
Posté le 09-04-2005 à 13:40:47  profilanswer
 

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
mood
Publicité
Posté le 09-04-2005 à 13:40:47  profilanswer
 

n°1041187
esox_ch
Posté le 09-04-2005 à 14:04:37  profilanswer
 

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
n°1041200
KangOl
Profil : pointeur
Posté le 09-04-2005 à 14:15:46  profilanswer
 

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...
n°1041418
belay
Posté le 09-04-2005 à 17:23:22  profilanswer
 

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 ?

n°1041467
esox_ch
Posté le 09-04-2005 à 18:47:12  profilanswer
 

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
n°1041551
belay
Posté le 09-04-2005 à 20:55:08  profilanswer
 

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 ... ?????

n°1041558
KangOl
Profil : pointeur
Posté le 09-04-2005 à 21:06:09  profilanswer
 

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...
n°1041566
belay
Posté le 09-04-2005 à 21:17:51  profilanswer
 

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
n°1041569
KangOl
Profil : pointeur
Posté le 09-04-2005 à 21:18:32  profilanswer
 

non mais je suis en mode furtif ou quoi ??


---------------
Nos estans firs di nosse pitite patreye...
n°1041576
belay
Posté le 09-04-2005 à 21:31:38  profilanswer
 

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
mood
Publicité
Posté le 09-04-2005 à 21:31:38  profilanswer
 

n°1041753
belay
Posté le 10-04-2005 à 11:22:16  profilanswer
 

up

n°1041809
KangOl
Profil : pointeur
Posté le 10-04-2005 à 12:17:22  profilanswer
 

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...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
[Résolu] Comment obtenir le résultat -opposé- d'un SELECT ?Peut-on additionner des heures/minutes en PHP ?
SQL Server & Access 2000 db monitoringSauver plusieurs éléments de ma requête SQL dans un vecteur [RESOLU]
Remplir automatiquement les tags ID3[MySQL] Comment éviter une requete de type : Select ... Where .. IN .?
[Php/MySQL] recupérer nom de colonneSQLDMO - SQL Serveur 2000
[PHP] file_exists chez free.fr[ORACLE][PL/SQL] un équivalent de printf?
Plus de sujets relatifs à : [PHP] - Gérer les entrées dupliquées My SQL & Remplir un <SELECT>??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR