Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » Le coin des codeurs » » Mysql : insérer un élément si il n'existe pas
AuteurMysql : insérer un élément si il n'existe pas
simonkara
14   

simonkara
  Posté : 14-12-2003 18:17

Bonjour,

kelkun connaîtrait une requete mysql qui insère un élément si il n'existe pas déjà dans la base ???

Merciiiiiiiii



Simonkara

  Profil  
snipe
2450       
 

snipe
  Posté : 14-12-2003 20:14

tu fait une requette avant qui verifie son existance, et si le nombre de ligne retourné est egale a 0 allors tu insert :)

  Profil  E-mail  
simonkara
14   

simonkara
  Posté : 14-12-2003 21:17

Mais en fait, il me faudrait ca uniquement avec du Mysql pas du PHP....


En fait c'est pour mettre à jour ma base de donnée... seulement... j'ai beau mettre le champs en mode UNIQUE .... si j'essais d'ajouter à la base un élément qui existe déjà, je programme arrête l'insertion ... enfin c ce qui se passe sous console admin ...


quelqu'un a une solution ???

  Profil  
Tribal-Dolphin
4374       
 

Tribal-Dolphin
  Posté : 15-12-2003 09:10

ben c du mysql ça !!
tu te connecte à ton serveur mysql(terminal) et tu fait tes requêtes.

  Profil  
capcaverne
395      

capcaverne
  Posté : 15-12-2003 09:49

euh ...
normalement dans une table MySQL, tu as 1 (au pire 2 ) champs uniques (ce sont la/les clé(s)).
De 2 chose l'une :
- soit tu veux mettre à jour un element déjà existant : UPDATE
- soit tu veux ajouter un nouvel enregistrement (INSERT INTO) et quoiqu'il advienne i lfaut impérativement que les champs UNIQUE le soient !

Il y a une autre solution : te ne met pas de champs en UNIQUE et tu ajoute un champs à ta table (per exemple CLE) que tu définit en PRIMARY KEY UNIQUE AUTOINCREMENT .

Exemple : 1 table 3 champs : CLE,ID,NOM (CLE = PRIMARY KEY, UNIQUE, AUTOINCREMENT)
et quand tu fait ton insert tu laisse le 1er champs vide comme suit:
INSERT INTO ma_table (CLE,ID,NOM) VALUES ('',mon_id,mon_nom);
si je me souviens bien ca doit pouvoir marcher

  Profil  E-mail  www  
simonkara
14   

simonkara
  Posté : 15-12-2003 10:28

alors je m'explique d'avantage lol

j'ai une base de donnée. Avec des éléments déjà présents.... Je vais avoir une liste d'éléments à y insérer. Mais il se peut que les éléments soient déjà présents... Donc je ne dois surtout pas les rajouter si ils sont déjà dans ma base...

J'ai déjà un champs Id en mode auto incrément dans ma base. Maintenant, j'ai un champs Nom pour désigner l'élément. Ce nom ne dois pas pouvoir Réapparraître.

Ce que je fais, c'est que je vais déclancher un programme en C pour traiter des fichiers, et ensuite, je construit un fichier ".sql" que je chargerais dans ma base ensuite.

Donc, c'est une commande Mysql que j'ai essais de construire...

Pour l'instant le mode UNIQUE ca marche pas trop ... Si j'essais d'insérer un élément déjà existant dans la base, Mysql ce fout bien que ma requête soit fini ou pas... Il stop tout dès qu'il a trouvé une similarité entre ce que je veux insérer et ce qui existe... Mais moi ca me plairait bien de pouvoir insérer quand même les autres éléments inexistants dans la base....

Voilà, j'espère que c'est un peu plus clair,

Merci pour vos réponses

  Profil  
simonkara
14   

simonkara
  Posté : 15-12-2003 10:31

ah heu .... Tribal Dolphin, ta solution m'intéresse mais vois-tu visiblement je sais pas faire ce genre de chose en Mysql ... sinon j'aurais pas cru que tu parlais d'une solution php ... lool

Tu peux me donner un exemple de requête Mysql de ta solution ??


Merciiiiii


Simonkara

  Profil  
Tribal-Dolphin
4374       
 

Tribal-Dolphin
  Posté : 15-12-2003 12:01

Pour les commandes mysql, vas sur www.nexen.net (en français) ou www.mysql.com (en anglais) pour toutes les infos.

Les commande c du genre :
mysql -u root password
mysql> select * from user
etc etc ........

Pour ton soucis, met un Index UNIQUE sur le nom des rubriques, y'as pas de raisons que ça marche pas.

  Profil  
capcaverne
395      

capcaverne
  Posté : 15-12-2003 13:29

euh...
SQL n'est pas un langage conditionnel à ma connaissance (un peu vieille il est vrai) donc ca veux dire que tu ne peux pas faire en SQL pur des truc du genre :
si (l'enregistrement existe) alors je ne fait rien (ou UPDATE)
sinon j'insère.
Le langaege SQL a pour seul but de rentrer des données dans une base ou d'interroger cette base mais pas de faire des traitements conditionnels. Ces traitement doivent êtres fait avec un autre langage (PHP,C, COBOL ou autre) qui lui ,va se charger de toute la partie structure (si...alors...sinon...)
Pour plus d'infos je te conseille vivement de faire un tour dans la doc SQL (ou MySQL).

a moins que tu puisse utiliser des requetes de ce type :
INSERT INTO matable (champ_1,champs_nom,...,champs_n) VALUES (val_1,val_nom,...,val_n)
WHERE NOT EXIST (SELECT nom FROM matable WHERE matable.nom='val_nom')
ou encore :
INSERT INTO matable (champ_1,champs_nom,...,champs_n) VALUES (val_1,val_nom,...,val_n)
WHERE val_nom NOT IN (SELECT nom from matable)

Ce type de boucle marche pour des SELECT en SQL pur mais je ne sais pas si ca marche avec des INSERT ni avec MySQL.
Par contre si ca marche cela risque d'être tres long ... (à cause du 2 eme SELECT imbriqué)

[ Message édité par : capcaverne : 15-12-2003 13:35 ]

  Profil  E-mail  www  
hexagone
188     

hexagone
  Posté : 18-12-2003 12:41

dans la doc nexen:

les sub-select: ici

les insert-select: ici




  Profil  www  
simonkara
14   

simonkara
  Posté : 18-12-2003 20:58

merciiiii

simonkara

  Profil  
Sauter à :

Temps : 0.0247 seconde(s)