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

Langage PHP Discussion :

[Tableaux] DELETE dans une boucle


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Points : 20
    Points
    20
    Par défaut [Tableaux] DELETE dans une boucle
    Bonjour,

    J'ai ce script qui me permet de lister un repertoire et d'ajouter les entrées à ma table.
    Tout fonctionne pour le mieux.

    Néanmoins, il reste simplement un petit bémol.
    Ce repertoire est mis à jour régulièrement. On y ajoute des fichiers et on en retire fréquemment.
    Comment, dans la boucle, pourrai-je supprimer les fichiers qui n'existe plus ?

    Voici mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    <? 
     
    if ($fichiers = glob('../../mon_repertoire/*.doc' , GLOB_NOSORT))
     
    {      
          $sql = mysql_connect('****', '*****', '******');      
         mysql_select_db('mabase', $sql);      
         foreach ($fichiers as $fichier) 
     
         {
    	 $fichier=substr($fichier, 27);          
         $query = "INSERT INTO matable(id, nom) VALUES('','".$fichier."')";          
         mysql_query($query , $sql); 
     
         }      
         mysql_close($sql);} 
    ?>
    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Tu récupères toutes les entrées de ta table et tu vérifies si le fichier existe toujours avec is_file(). Si il renvoit false, alors tu supprimes l'entrée en question.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Points : 20
    Points
    20
    Par défaut
    C'est ce que j'ai bien peur de ne pas savoir faire

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Points : 20
    Points
    20
    Par défaut
    J'ai fait çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    if ($fichiers = glob('../../monchemin/*.doc' , GLOB_NOSORT))
     
    {      
          $sql = mysql_connect('****', '*****', '*****');      
         mysql_select_db('download', $sql);      
         foreach ($fichiers as $fichier) 
     
         {
    	 $fichier=substr($fichier, 17);          
         $query = "INSERT INTO matable(id, titre) VALUES('','".$fichier."')";   
         	 if (file_exists($fichiers)) {
        print "Le fichier $fichier existe";
    } else {
         $query = "DELETE FROM music WHERE titre='$fichier'"; 
    }  
         mysql_query($query , $sql);
    Ca me fait totalement l'inverse !
    Ca ne m'affiche que les fichiers qui n'existe plus !
    De plus, ca devrait me marquer le fichier existe déjà fois le nombre d'entrées mais je n'ai rien !

    La condition est bien dans la boucle !
    Je ne comprends pas tres bien.

    Un petit coup de pouce ?




    }
    mysql_close($sql);}[/code]

  5. #5
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Déjà je ne comprends pas parce que tu fais un foreach avec les fichiers existants, et dans ta boucle tu vérifies s'ils existent et si non tu les supprimes Bizarre non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $connect = mysql_connect('****', '*****', '*****');      
    mysql_select_db('download', $connect);
    $sql = "SELECT titre,id FROM matable";
    $result = mysql_query($sql);
    while (list($fichier, $id) = mysql_fetch_array($result)) {
       if (!file_exists("chemin/".$fichier)) {
          $sql_update = "DELETE FROM matable WHERE id='".$id."'";
          mysql_query($sql_update);
       }
    }
    mysql_close($connect);
    Moi je ferai ça d'après ce que j'ai compris.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Points : 20
    Points
    20
    Par défaut
    Il y avait une autre solution mais je me rends compte en même temps que j'ai un autre probleme.
    En ajoutant un nouveau champs quelconque à ma table, j'aurai pu le supprimer en fonction.
    Le probleme est que je ne peux plus rien ajouter dans cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "INSERT INTO table(id, titre) VALUES('','".$fichier."')";
    Si je fais, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "INSERT INTO table(id,auteur, titre) VALUES('','moi','".$fichier."')";
    moi ne sera pas ajouter !!!

    Ca devient un peu complexe tout çà !

    Je crois alors que je vais adopter ta solution ! Merci beaucoup

Discussions similaires

  1. [PHP 5.3] Requete Delete dans une boucle
    Par Invité dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2013, 16h22
  2. Réponses: 1
    Dernier message: 21/07/2012, 10h51
  3. VAS fragmentée, new/delete dans une boucle
    Par kaiser92 dans le forum C++
    Réponses: 13
    Dernier message: 15/12/2009, 14h08
  4. [Tableaux] Boucle dans une boucle
    Par spawns dans le forum Langage
    Réponses: 2
    Dernier message: 12/02/2006, 13h11
  5. [Tableaux] Retour Chariot dans une boucle
    Par tchoukapi dans le forum Langage
    Réponses: 3
    Dernier message: 07/11/2005, 14h45

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