IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Conception] Limiter l'insertion à une occurence


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Points : 262
    Points
    262
    Par défaut [Conception] Limiter l'insertion à une occurence
    Bonjour,
    J'ai une liste de nom de ville inséré dans une table, plusieurs fois la même, du genre :
    1 paris
    2 paris
    3 paris
    4 marseille
    4 marseille

    voici mon bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $j=1;
    				for($j=1;$j<2;$j++)
    				{
    					$req2="update qualification set name = '$joueur' where n_tournoi='$donnee'";
    					$res2=mysql_query($req2);
    				}
    Je veux que quand il rencontre la ville paris il modifie le troisième champ qui est le nom d'un joueur. Mais je veux qu'il le modifie que à une seule occurence, avec ce bout de code il me met le nom du joueur a chaque qu'il rencontre la ville moi je ne veux le fasse que pour la première trouvé, je pensais qu'avec une boucle for çà oré marché.
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Je persiste et je signe :

    D'où l'importance de passer par des Id en auto increment, ca permet ce cibler LA ligne qu'on veut modifier sans risque de collision entre les données...


    Allez, je suis de bonne humeur ce matin

    imaginons une table VILLE comme suit (pas belle d'un point de vue construction, il vaudrait mieux en faire deux différentes, mais c'est pour les besoins de l'exemple) :

    Id_ville Code_postal Nom_ville

    1 75 001 Paris
    2 75 003 Paris
    3 75 005 Paris
    4 75 008 Paris
    5 75 009 Paris
    (ici, Id_ville est en auto increment, on y touche jamais)

    et les requêtes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM VILLE WHERE Nom_ville='Paris'
    Ca, ca va t'effacer toute ta table, boucle for ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM VILLE WHERE Id_ville=3
    Ca, ca va t'effacer uniquement la troisième ligne

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 41
    Points : 31
    Points
    31
    Par défaut Re: Limité l'insertion a une occurence
    Citation Envoyé par leloup84
    1 paris
    2 paris
    3 paris
    4 marseille
    4 marseille
    A quoi correspondent ces 1, 2, 3, 4 et...4?

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Je pense que tu as un mauvais schéma de table pour 2 raisons :
    • Tu as des doublons sur la ligne entière
    • Tu dupliques l'information


    Avec un schema correct, tu pourrais faire ceci sans crainte d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE `table`
    SET `champ`='valeur'
    WHERE `champ_clef`='valeur_clef'
    Bien sûr, dans ton cas cela suppose d'avoir une table `ville` qui ne contiendra pas grand chose et de savoir utiliser les jointures en SQL.
    http://sql.developpez.com/sqlaz/jointures/

  5. #5
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Points : 262
    Points
    262
    Par défaut
    c l'identifiant pardon la table c pluto du genre :
    1 paris
    2 paris
    3 paris
    4 marseille
    5 marseille

    CREATE TABLE `qualification` (
    `num_qualif` int(3) NOT NULL auto_increment,
    `n_tournoi` varchar(50) NOT NULL,
    `name` varchar(25) NOT NULL default '',
    `tour` varchar(50) NOT NULL default '',
    PRIMARY KEY (`num_qualif`)
    )

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Leloup, tu commences à comprendre ce que j'entendais par "revoies tes tables sinon tu fonces droit vers la cata"

    Je te conseille vraiment de reposer à plat ton appli (avec une feuille et un crayon (et une gomme )) et de dessiner tes tables à la main en te disant "quelle table fait quoi? quelles infos dans quelles tables? comment lier 2 tables?" etc...

  7. #7
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    et bien alors pourquoi ne pas utiliser num_qualif dans ta requête ???

    Et effectivement, ta table serait plus propre avec une table à part contenant simplement un Id_ville et le nom de la ville, et dans cette table ci, utiliser simplement l'Id_ville en clé étrangère à la place du nom.... m'enfin, ce que j'en dit ...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Hmmmm

    Si tes tournois ont un id, pourquoi on retrouve leur nom et pas leur id dans cette table?

    PS : trop lent ^^

  9. #9
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Points : 262
    Points
    262
    Par défaut
    ok alors comment dire qu'on veut qu'il ne modifiue qu'une seule occurence

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Revoies tes tables on te dit.
    Si tu veux rester avec cette structure, bon courage...

  11. #11
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    tu te moques du monde ??? je t'ai donné un exemple !!!

    Le seul conseil que je peux encore te donner, c'est d'aller te pencher sur la conception de bases de données, pis d'aller lire un ou deux tutos...

    J'abandonne moi, @+

  12. #12
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Points : 262
    Points
    262
    Par défaut
    je suis d'accord avec l'id, mais comment dire qu'on ne que un seul soit modifié

  13. #13
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    leloup84 : Sincèrement, tu exagères.
    titoumimi t'a donné un exemple pour DELETE, je t'en ai donné un pour UPDATE et la doc MySQL te donne assurément tout ce dont tu as besoin.
    Développez.com regorge de ressources que tu peux mettre à profit, je ne peux que t'inviter à chercher par toi-même car c'est la meilleure manière d'apprendre.

    Cependant, il semble te manquer les concepts fondamentaux d'analyse et de conception de bases de données...

  14. #14
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Points : 262
    Points
    262
    Par défaut
    Comme ceci alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2="update qualification set name = '$joueur' where n_tournoi='$donnee' and num_qualif = (select min(num_qualif) from qualification)";
    Parce que çà ne fonctionne pas

  15. #15
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut


    bon, sur ce, je vais me pendre ....

  16. #16
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Points : 262
    Points
    262
    Par défaut
    je ne comprend pas ce qui ne va pas dans cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2="update qualification set name = '$joueur' where n_tournoi='$donnee' and num_qualif = (select min(num_qualif) from qualification)";
    Le num_quaif je suis bien obligé de mettre min puisque je ne sais pas sur quel ligne il va rencontré le nom de la ville correspondante

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Conception] Un switch bloque une instruction INSERT INTO
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 29/08/2006, 23h35
  2. [Conception] Problème avec INSERT dans une TABLE
    Par dunbar dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 20/07/2006, 12h56
  3. [Conception] Pb d insertion dans une BDD des données d un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 02/06/2006, 18h18
  4. Limité la modification a une occurence
    Par leloup84 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 16/03/2006, 13h18
  5. Insertion d'une occurence dans un arbre
    Par Gryzzly dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 19/12/2005, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo