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 :

Supprimer un enregistrement via une boucle


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2010
    Messages : 52
    Points : 44
    Points
    44
    Par défaut Supprimer un enregistrement via une boucle
    Bonjour,

    Je souhaite faire une boucle dans une table afin de détecter si la valeur de la clé étrangère est au moins 2. Si cela est le cas, alors on ne fera pas la suppression de cet enregistrement.
    Dans le cas contraire, on procédera à la suppression de l'enregistrement.

    Voila le code que j'ai réalisé, mais il ne donne pas satisfaction.
    Quelqu'un aurait-il une idée ? Merci d'avance !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach($verifications as $verification) {
    	if($verification->getEtrangerID() > 1) {
                   echo "Suppression impossible";
            } else {
               // DELETE...
            }
    }

  2. #2
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Points : 412
    Points
    412
    Par défaut
    Oui et alors.
    Plus de précisions.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 299
    Points : 39 635
    Points
    39 635
    Billets dans le blog
    9
    Par défaut
    Bonjour

    L'expression de besoin est assez étrange, pourquoi vouloir supprimer les FK d'une certaine valeur ?
    S'il s'agit de supprimer des orphelins, il est préférable de vérifier l'existence de la PK et de supprimer si on ne la trouve pas.

    Quoi qu'il en soit, dans une base de données relationnelle, il faut au maximum privilégier les requêtes ensemblistes.
    Donc, il ne faut pas lire ligne à ligne la table pour supprimer unitairement, mais faire une requête du genre

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE
    FROM MA_TABLE
    WHERE [critères éventuels de restriction] 
      AND MA_COLONNE_FK < 2

    Sur une table fortement chargée, la différence de temps de traitement peut être énorme.

    Bien évidemment, on commencera par une requête SELECT avant de faire le DELETE pour vérifier que la portée de la requête est bien celle prévue.

    S'il s'agit de supprimer des orphelins, il est préférable de procéder comme suit, là aussi de façon ensembliste (surtout pas de "for each") :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELETE
    FROM MA_TABLE  T1
    WHERE [restriction éventuelle]
      AND NOT EXISTS
         (select 1
          from LA_TABLE_PK T2
          WHERE T2.PK=T1.FK
         )

Discussions similaires

  1. [Débutant] Lire matrice et l'enregistrer dans un ascii via une boucle
    Par yonafunu dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/12/2016, 09h32
  2. supprimer des enregistrements d'une table via recordset
    Par isabelle b dans le forum VBA Access
    Réponses: 14
    Dernier message: 22/06/2008, 14h20
  3. Supprimer les enregistrements d'une table !
    Par obon dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/05/2006, 11h15
  4. Réponses: 4
    Dernier message: 26/08/2004, 08h01
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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