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

Bibliothèques et frameworks PHP Discussion :

[XML] [PHP4] Supprimer un item XML


Sujet :

Bibliothèques et frameworks PHP

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 10
    Points
    10
    Par défaut [XML] [PHP4] Supprimer un item XML
    Bonjour,

    J'ai créer un widget dans lequel j'affiche le nom de différentes vidéos, lors de l'upload de celles-ci, via un fichier XML qui est créer en PHP.
    Je propose également de supprimer les vidéos, chose que j'arrive à faire, mais je n'arrive pas à supprimer leurs nom dans le fichier XML.

    Voici mon fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <items>
      <item>
        <nomvideo>affinex.flv</nomvideo>
      </item>
      <item>
        <nomvideo>doriance.flv</nomvideo>
      </item>
      <item>
        <nomvideo>elusanes.flv</nomvideo>
      </item>
    </items>
    Et voici comment je procède actuellement, mais ça ne marche pas :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    $nbrVideos = count(glob('../Videos/Pharmaceutique/*.mpeg'));
    for($i = 1; $i <= $nbrVideos; $i++){
      $video[$i] = $_POST["v" . $i];
      if(isset($video[$i])) {
        unlink("../Videos/Pharmaceutique/" . $i . ".mpeg");
     
        $fichier = '../XML/videosPharmaNom.xml';
        $contenu_array = file($fichier);
        $contenu_string = implode('', file($fichier));
        $items = array("<items>", "</items>", "<item>", "</item>", "<nomvideo>", "</nomvideo>");
        $contenu_string = str_replace($items, "", $contenu_string);
        $contenu_string = str_replace(".flv", ";", $contenu_string);
        $contenu_array = split(";", $contenu_string);
        $contenu_string = str_replace($contenu_array[$i], "", $contenu_string);
        $contenu_string = str_replace(";;", ";", $contenu_string);
        $contenu_array = split(";", $contenu_string);
        $fichier = fopen("../XML/videosPharmaNom.xml","w+");
        $variable = '<items>';
        for($j = 0; $j < count($contenu_array)-1; $j++) {
          $variable .= '<item><nomvideo>' . $contenu_array[$j] . '.flv</nomvideo></item>';
        }
        $variable .= '</items>';
     
        fputs($fichier, $variable);
        fclose($fichier);
      }
    }

    Merci d'avance pour votre aide,




    *Math_thefire*

  2. #2
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Bonjour,

    Si tu decides d'utiiser simplexmlelement (http://fr3.php.net/manual/fr/ref.simplexml.php), un simple unset devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Par exmeple
    unset($objetXML.element[i]);
    Bon courage
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


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

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    J'aimerai bien, malheureusement le serveur sur lequel tourne le script est en PHP4, or SimpleXML n'est utilisable qu'à partir de PHP5, si je ne me trompe.


    *Math_thefire*

  4. #4
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Et si tu regardes du cote des objets DOM ?

    http://fr2.php.net/domxml

    Il existe : DomElement->remove_attribute par exemple.
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    J'ai trouvé une classe qui permet d'utiliser SimpleXML en PHP4 disponible ici.

    Voici comment je fais maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    require_once 'simplexml.class.php';
    $file = '../XML/videosPharmaNom.xml';
    $sxml = new simplexml;
    $data = $sxml->xml_load_file($file);
    unset($data->item[$i-1]->nomvideo);
    Mais ça ne marche toujours pas, je ne comprend pas.

    Lorsque je fais un print_r($data), voici ce qui s'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    simplexmlobject Object ( [item] => Array ( [0] => simplexmlobject Object ( [nomvideo] => affinex.flv ) [1] => simplexmlobject Object ( [nomvideo] => doriance.flv ) [2] => simplexmlobject Object ( [nomvideo] => elusanes.flv ) ) )
    Pourriez-vous m'aider, merci d'avance,


    *Math_thefire*

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    J'ai essayé également avec DOMXML, j'ai fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $domxml = new DomDocument();    // ligne 168
    $domxml->load('../XML/videosPharmaNom.xml');    // ligne 169
    $item = $domxml->getElementsByTagName('item');
    $firstChild = $item->item($i-1);
    $firstChild->parentNode->removeChild($firstChild);
    Or ça ne marche pas non plus, voici les erreurs retournées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Warning: domdocument() expects at least 1 parameter, 0 given in .../delete_image.php on line 168
     
    Fatal error: Call to undefined function: load() in .../delete_image.php on line 169
    Je ne comprend pas, pouvez-vous m'aider ?

    Merci d'avance,




    *Math_thefire*

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Finalement j'ai repris comme j'avais fais au début en modifiant quelque truc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $fichier = '../XML/videosPharmaNom.xml';
    $contenu_array = file($fichier);
    $contenu_string = implode('', file($fichier));
    $items = array("<items>", "</items>", "<item>", "</item>", "<nomvideo>", "</nomvideo>");
    $contenu_string2 = str_replace($items, "", $contenu_string);
    $contenu_string2 = str_replace(".flv", ";", $contenu_string2);
    $contenu_array = split(";", $contenu_string2);
    $contenu_string = str_replace("<item><nomvideo>" . $contenu_array[$i-1] . ".flv</nomvideo></item>", "", $contenu_string);
     
    $fichier = fopen("../XML/videosPharmaNom.xml","w+");
    fputs($fichier, $contenu_string);
    fclose($fichier);
    Et ça marche !

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

Discussions similaires

  1. Supprimer des items dans une drop down liste
    Par msahmi dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/04/2008, 10h59
  2. [VC6] supprimer des items
    Par _yeye_ dans le forum Visual C++
    Réponses: 2
    Dernier message: 07/12/2006, 10h48
  3. supprimer un item d'un jcombobox dans une jtable
    Par bellout dans le forum Composants
    Réponses: 6
    Dernier message: 22/06/2006, 16h06
  4. [JS] supprimer un item d'une liste déroulante
    Par Commodore dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/06/2006, 14h55
  5. [C#]Supprimer un item d'un listView
    Par fafa139 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/05/2006, 19h05

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