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 :

[SimpleXML] Suppression image


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut [SimpleXML] Suppression image
    Bonjour,
    Voila je suis débutant en php et xml et je voudrais à partir du résultat d'un formulaire html (checkbox) supprimer les nœuds images qui correspondent aux éléments cochés dans mon formulaire.

    Mon fichier xml se présente comme suit:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <simpleviewergallery 	maxImageWidth="480" 
    						maxImageHeight="480" 
    						textColor="0xFFFFFF" 
    						frameColor="0xFFFFFF" 
    						frameWidth="20" 
    						stagePadding="40" 
    						navPadding="40" 
    						thumbnailColumns="3" 
    						thumbnailRows="3" 
    						navPosition="left" 
    						vAlign="center" 
    						hAlign="center" 
    						title="Lingerie" 
    						enableRightClickOpen="true" 
    						backgroundImagePath="" 
    						imagePath="galeries/simpleviewer_lingerie/images/" 
    						thumbPath="galeries/simpleviewer_lingerie/thumbs/">
    <image>
    	<filename>lingerie1.jpg</filename>
    	<caption></caption>	
    </image>
    <image>
    	<filename>lingerie2.jpg</filename>
    	<caption></caption>	
    </image>
    ....
    </simpleviewergallery>
    Et mon code php qui traite mon formulaire est le suivant:
    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
    <?php
     
    	if(isset($_POST['del'])){
    		$del = $_POST["del"];
    		for ($i=0; $i<count($del); $i++) {
    	        echo $del[$i]."<br />";
    			//Supp De l'image et de la miniature
    			unlink('../galeries/simpleviewer_lingerie/thumbs/'.$del[$i]);
    			unlink('../galeries/simpleviewer_lingerie/images/'.$del[$i]);
    			echo 'image '.$del[$i].' supprimée <br>';
     
     
    			//Supp du noeud dans le fichier xml et la je sais pas trop comment faire pour supprimer mes noeuds image qui correspondent au nom de l'image (soit $del[$i]) dans mon fichier xml
    		}
    	}
    	else{
    	echo 'accune image selectioné';
    	}
     
    ?>
    Quelq'un peut-il m'aider?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    La suppression d'un nœud se réalise avec unset :
    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
    # Pour simuler les données POST
    $_POST = array(
        'del' => array(
            'lingerie2.jpg'
        ),
    );
     
    define('FICHIER_XML', 'monFichier.xml');
     
    $sxml = simplexml_load_file(FICHIER_XML);
    if (isset($_POST['del'])) {
        foreach ($_POST['del'] as $v) {
            unlink('../galeries/simpleviewer_lingerie/thumbs/' . $v);
            unlink('../galeries/simpleviewer_lingerie/images/' . $v);
            # On recherche le nœud image dont le fils filename a pour valeur $v
            foreach ($sxml->xpath("/simpleviewergallery/image[filename = '$v']") as $image) {
                unset($image[0]); # Suppression du nœud image trouvé
            }
            printf('image "%s" supprimée<br />', $v);
        }
        $sxml->asXML(FICHIER_XML); # On écrase le fichier avec ces mises à jour
    } else{
        echo 'aucune image sélectionnée';
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut merci
    Ok merci pour l'info mais entre temps j'ai trouvé par une autre méthode:
    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
    $simpleviewergallery = simplexml_load_file("../galeries/simpleviewer_lingerie/gallery.xml");
     
    				$j=0;
    				$a = -1;
     
    				foreach($simpleviewergallery->children() as $image){
    					if($simpleviewergallery->image[$j]->filename == $del[$i])
    						$a = $j;
    						$j++;
    				}
     
    				if($a >= -1){
    					unset($simpleviewergallery->image[$a]);
    				    $simpleviewergallery->asXML("../galeries/simpleviewer_lingerie/gallery.xml");
    					echo 'image '.$del[$i].' supprimée <br>';
    				}
    Ceci fait la même chose que le code que tu m'as envoyé. Et si oui quel est le plus optimal?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    A première vue, votre code est faux (et mal indenté) ou il en manque au moins une partie (itération sur $del/variable $i notamment).

    Quant à savoir si une implémentation est plus rapide qu'une autre : il faut en tester leur temps d'exécution respectif (benchmark).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut ok
    Ok merci pour les infos je vais tester ça!

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

Discussions similaires

  1. Dataset d'images incomplet, suppression images
    Par jonathanQC dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 30/07/2019, 16h00
  2. [XL-2013] Suppression image collée
    Par Novice72 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/05/2017, 12h59
  3. Problème suppression image
    Par Nico13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2008, 16h18
  4. [SimpleXML] Suppression d'un élément
    Par lamachine_fr dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/06/2007, 23h30
  5. [Tableaux] Pb suppression image
    Par Shandler dans le forum Langage
    Réponses: 9
    Dernier message: 18/04/2006, 18h05

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