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 :

mysql delete retour de l'id effacé ?


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Par défaut mysql delete retour de l'id effacé ?
    Bonjour,

    Après maintes recherches, je ne trouve pas ce que je cherche.
    J'aimerai savoir si dans le cas d'un delete, il est possible d'avoir un retour sur les id effacés lorsque non connu.

    exemple de ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $del3=" DELETE FROM ".$tblpref2."machin WHERE col2='$ref' AND col3='$truc' AND (col4 < '".$machin."')"; 
    $delresult3 = mysql_query($del3) or die ("Mise à jour impossible L30 fichier.php pour machin");
    Dans ce code j'efface toutes les lignes dont col4 est > $machin. Je souhaiterai avoir en retour de cette requête la valeur de chaque id(auto-incrément) qui a été effacé.

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Inscrit en
    Décembre 2009
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 80
    Par défaut
    Je doute que ça soit possible.
    Connaître le nombre de lignes affectées, et donc supprimées, est donné par mysql_affected_rows(), si déjà ça peut t'aider.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Par défaut
    Non, il me faut le ou les Ids effacés par cette requête car ils sont utilisés dans une autre table. Je dois donc mettre à jour cette autre table en supprimant les lignes qui font références à ces Ids détruits.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    bonjour,
    pourquoi ne pas faire un select avec les mêmes paramètres?
    pour chaque enregistrement trouvé alors tu récupère l'Id que tu stocke en chaine ou direct en tableau et tu fais un delete de ton enregistrement

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Par défaut
    Citation Envoyé par notar Voir le message
    bonjour,
    pourquoi ne pas faire un select avec les mêmes paramètres?
    pour chaque enregistrement trouvé alors tu récupère l'Id que tu stocke en chaine ou direct en tableau et tu fais un delete de ton enregistrement
    Bonjour,

    Parce que la variable est AND (col4 < '".$machin."')" donc j'efface tous les enregistrement dont col4 est < $machin.
    Comment récupérer les ids de tous ces enregistrments ?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $req="select * FROM ".$tblpref2."machin WHERE col2='$ref' AND col3='$truc' AND (col4 < '".$machin."')";
    $res=mysql_query($req) or die (mysql_error());
    while($result=mysql_fetch_array($res)){
    $IdAGarder.=$result[Id]."--";
    $Del="delete FROM ".$tblpref2."machin WHERE Id=$result[Id]";
    $resDel=mysql_query($Del) or die (mysql_error());
    }
    // apres, traitement de $IdAGarder
    ?>

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Imaginer toutefois qu'il peut y avoir une difference entre les ids et les ids supprimés : si deux personnes font le select en meme temps, un seul des deux le supprimera vraiment mais les deux ferront le post traitement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Par défaut
    Citation Envoyé par notar Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $req="select * FROM ".$tblpref2."machin WHERE col2='$ref' AND col3='$truc' AND (col4 < '".$machin."')";
    $res=mysql_query($req) or die (mysql_error());
    while($result=mysql_fetch_array($res)){
    $IdAGarder.=$result[Id]."--";
    $Del="delete FROM ".$tblpref2."machin WHERE Id=$result[Id]";
    $resDel=mysql_query($Del) or die (mysql_error());
    }
    // apres, traitement de $IdAGarder
    ?>
    Bonsoir,
    $IdAgarder est un array contenant tous les Ids effacés ?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    $IdAgarder est un array contenant tous les Ids effacés ?
    non, pas dans le cas présent;là je construis une chaine; pour construire un tableau ce n'est pas tout à fait la meme syntaxe( se référer à la doc pour les array.mais à partir de cette chaine on peut très bien en faire un tableau avec explode.
    sabotage, j'ose espérer que l'administrateur est seul à se loguer quand il fait ce genre de manip.

  10. #10
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Par défaut
    Bonjour,

    Désolé pour la lecture tardive ...

    Merci notar, je m'exprime mal car je ne baigne pas en permanence dans la programmation php mysql mais effectivement l'explode me permettrai de reconstruire le array ... c'est un détail à ce niveau là
    Mon projet est cependant un peu ardu pour un chti gars comme moi ...

    Sabotage :

    Je ne vois pas trop où vous voulez en venir avec cette histoire d'accès simultanée au select et les conséquences que cela engendre.
    L'accès se fait par un opérateur de saisie pas forcément par un administrateur. ceci dit les opérateurs ont accès à l'écriture, la lecture, l'effacement, la mise à jour des données de ces tables ...
    En m'inspirant d'un restant de connaissance access, j'ai cherché du côté des relations entre table mysql pour contourner la difficulté mais la syntaxe pour établir les liens (foreign key machin chose) est un peu effrayante. l'essai que j'ai fait est pourtant concluant. la destruction d'un Id table 1 supprime les enregistrement se rapportant à cet Id dans la table 2.

    1- Je ne vois pas trop comment visualiser dans phpmyadmin les liens entre des tables une fois créés.
    2- Comment détruire les liens si erreur
    3- Normalement dans la table "père" il ne peut exister dans mon développement d'Id 0
    4- dans la table fille, on peut créer un élément sans le rattacher tout de suite à un élément de la table père. Par défaut la valeur de ce champs est à 0.
    Je suis donc obliger de créer un élément fictif Id0 dans la table père mais qui ne correspond à rien. ça me parait pas très propre ... comment éviter ceci ..

    Je suis allé sur les sites mysql pour ces histoires de liens père fille mais les exemples ne sont pas dans mon niveau de compréhension. Voilà pourquoi je vous sollicite ...
    Merci de vos réactions ...

Discussions similaires

  1. [MySQL] Delete doublons ERREUR
    Par mikathieut dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/09/2008, 16h30
  2. [MySQL] DELETE * FROM
    Par Sharkalone dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/09/2008, 02h48
  3. Réponses: 1
    Dernier message: 02/01/2008, 13h28
  4. [MySQL] DELETE en cascade..ma requete ne marche pas
    Par debie1108 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/10/2006, 16h54

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