Besoin d'aide pour un script

Résolu
mymydu42 Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 18 juin 2008 - 12 juin 2008 à 09:16
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 13 juin 2008 à 19:22
Je vous explique, je dois faire une application pour faire un planning sans base de données, c'est simple il y'a un dossier pour chaque jour de la semaine et un dossier bibliotheque avec tous les fichiers que l'on veut diffuser a un certain moment de la semaine. Pour ajouter un fichier dans la bibliotheque il faut cliquer sur un bouton ajouter et une popup avec un formulaire s'ouvre et on rentre le nom, la duree, le type de fichier et les mots clés. Maintenant après avoir fait ça il faut qu'on puisse cliquer dans un des jours de la semaine ( qui sera présenté sous forme de tableau) et qu'un formulaire s'ouvre afin qu'on puisse soit modifier les données soit supprimer le fichier. Ci dessous une petite explication de ce script :

"Script supprimer
Une fois que l'utilisateur clique sur supprimer
Si le fichier est présent dans un des jours de la semaine
Alors Afficher «Etes vous sûr de vouloir supprimer ce fichier?
Attention ce fichier est présent dans votre planning !»
Sinon Afficher «Etes vous sûr de vouloir supprimer ce fichier?»
Fin si
Si oui
Alors supprimer le fichier de la bibliothèque
Rafraîchir la bibliothèque (en supprimant le fichier)
Fermer la pop up
Sinon revenir sur la pop up de saisie du fichier sans suppression
Fin si"

Si quelqu'un peut m'aider car je ne sais pas comment m'y prendre.
Merci

41 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
13 juin 2008 à 11:03
Hello,
En fait le problème vient du fait que le script tente de supprimer le fichier $path.$a.$fichier_suppr qui est en fait (pour mardi par exemple) :

C:/Program Files/EasyPHP 2.0b1/www/waitingroom/mardiarchive.ppt

, or ce n'est pas le fichier mardiarchive.ppt mais mardi/archive.ppt.

Voilà une petite modification du script avec gestion des erreurs/messages

<?php

$fichier_suppr = 'archive.ppt';
$path = 'C:/Program Files/EasyPHP 2.0b1/www/waitingroom/';
$separator = '/';
$rep = array('.', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');

foreach ($rep as $a)
{
    // on ajoute le séparateur
    $f = $path . $separator . $a . $separator. $fichier_suppr;
    if( file_exists($f) )
    {
        if( unlink($f) )
        {
            echo '<li>', $f, ' SUPPRIME</li>';
        }
        else
        {
            echo '<li>Erreur: impossible de supprimé le fichier ', $f, '</li>';
        }
    }
    else
    {
        echo '<li>Le fichier ', $f, ' n\'existe pas</li>';
    }
}

?>

<hr />Si ma reponse te convient, merci de l'accepter ! 
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 juin 2008 à 11:50
salut

tu rends les choses complexes... c'est il faut que ton php genere un javascript qui genere un formulaire qui pointe vers un php qui supprime tes fichiers...

ca serait plus simple de faire genre :

<?php

$fichier_suppr = 'archive.ppt';
$path = 'C:/Program Files/EasyPHP 2.0b1/www/waitingroom/';
$separator = '/';
$rep = array('.', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');

$realy=(isset($_POST['ok']));

foreach ($rep as $a)
{
// on ajoute le séparateur
$f = $path . $separator . $a . $separator. $fichier_suppr;
if( file_exists($f) )
{
if ($realy){
if( unlink($f) )
{
echo '<li>', $f, ' SUPPRIME</li>';
}
else
{
echo '<li>Erreur: impossible de supprimé le fichier ', $f, '</li>';
}
}else{
echo '<li>vous allez supprimer ', $f,'</li>';
}
}
else
{
echo '<li>Le fichier ', $f, ' n\'existe pas</li>';
}
}
?>
<form action="#" method="post">

</form>
3
mymydu42 Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 18 juin 2008
13 juin 2008 à 12:15
Si quand je lance le script

ça me met un truc du genre :
<li>C:/Program Files/EasyPHP 2.0b1/www/waitingroom//bibliotheque/nouveau.pps SUPPRIME</li><li>C:/Program Files/EasyPHP 2.0b1/www/waitingroom//lundi/nouveau.pps SUPPRIME</li><li>C:/Program Files/EasyPHP 2.0b1/www/waitingroom//mardi/nouveau.pps SUPPRIME</li><li>C:/Program Files/EasyPHP 2.0b1/www/waitingroom//mercredi/nouveau.pps SUPPRIME</li><li>C:/Program Files/EasyPHP 2.0b1/www/waitingroom//jeudi/nouveau.pps SUPPRIME</li><li>C:/Program Files/EasyPHP 2.0b1/www/waitingroom//vendredi/nouveau.pps SUPPRIME</li><li>C:/Program Files/EasyPHP 2.0b1/www/waitingroom//samedi/nouveau.pps SUPPRIME</li><li>C:/Program Files/EasyPHP 2.0b1/www/waitingroom//dimanche/nouveau.pps SUPPRIME</li>
et quand je clique sur supprimer ça me met :

<li>Le fichier C:/Program Files/EasyPHP 2.0b1/www/waitingroom//bibliotheque/nouveau.pps n'existe pas</li><li>Le fichier C:/Program Files/EasyPHP 2.0b1/www/waitingroom//lundi/nouveau.pps n'existe pas</li><li>Le fichier C:/Program Files/EasyPHP 2.0b1/www/waitingroom//mardi/nouveau.pps n'existe pas</li><li>Le fichier C:/Program Files/EasyPHP 2.0b1/www/waitingroom//mercredi/nouveau.pps n'existe pas</li><li>Le fichier C:/Program Files/EasyPHP 2.0b1/www/waitingroom//jeudi/nouveau.pps n'existe pas</li><li>Le fichier C:/Program Files/EasyPHP 2.0b1/www/waitingroom//vendredi/nouveau.pps n'existe pas</li><li>Le fichier C:/Program Files/EasyPHP 2.0b1/www/waitingroom//samedi/nouveau.pps n'existe pas</li><li>Le fichier C:/Program Files/EasyPHP 2.0b1/www/waitingroom//dimanche/nouveau.pps n'existe pas</li>
Je suppose que ça met ça car les fichiers viennent d'être effacer au lancement du script.
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 juin 2008 à 14:15
suffit de modifier les echo. (afficher $a et supprimer les li)

est-ce-que tu peux valider les reponses stp ?
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 juin 2008 à 14:53
tout en haut, met :
echo 'vous allez supprimer le fichier ..... du';
$i=0;
ensuite remplace :
echo '<li>vous allez supprimer ', $f,'</li>';
par
if (($i++)!=0) echo ', ';
echo $a;
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
13 juin 2008 à 17:41
Slut;

la syntaxe if(($i++) != 0) echo ','; dit que tant que $i est différent de 0, on affiche une virgule. Donc, pour les fichiers n°1, 2, 3, 4 ... (et pas le n°0). Le fait de faire $i++ c'est comme faire $i += 1 mais cela après le test
Par contre, si tu fais ++$i, c'est la même chose, sauf que $i est incrémenté avant le test.

Sinon, j'ai fais une version un peu plus compliqué :

<?php

$fichier_suppr = 'archive.ppt';
$path = 'C:/Program Files/EasyPHP 2.0b1/www/waitingroom/';
$separator = '/';
$rep = array('.', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');

$realy = ( isset($_GET['ok']) || isset($_POST['ok']) );
$msg array('is_del'> array(), 'del' => array(), 'error_del' => array(), 'not_exists' => array());

foreach ($rep as $a)
{
    // on ajoute le séparateur
    $f = $path . $separator . $a . $separator. $fichier_suppr;
    if( file_exists($f) )
    {
        if ($realy)
        {
            if( unlink($f) )
            {
                $msg['is_del'] = $a;
            }
            else
            {
                $msg['error_del'] = $a;
            }
        }
        else
        {
            $msg['del'] = $a;
        }
    }
    else
    {
        $msg['not_exists'] = $a;
    }
}

if( count($msg['del']) <> 0 )
{
    echo 'Vous allez supprimer le fichier ', $fichier_suppr, ' dans les repertoires suivants : ', implode(', ', $msg['del']);
    echo '
Confirmer ? [[?realy OUI]] [NON]';
}

if( count($msg['is_del']) <> 0 )
{
    echo 'Le fichier ', $fichier_suppr, ' à été supprimé dans les repertoires suivants : ', implode(', ', $msg['is_del']);
}

if( count($msg['error_del']) <> 0 )
{
    echo 'Erreur ! : Impossible de supprimer le fichier ', $fichier_suppr, ' dans les repertoires suivants : ', implode(', ', $msg['error_del']);
}

if( count($msg['not_exists']) <> 0 )
{
    echo 'Information ! : Le fichier ', $fichier_suppr, ' n\'existe pas dans les repertoires suivants : ', implode(', ', $msg['not_exists']);
}

?>
Ici, j'utilise un tableau pour stocker les informations, et le implode(', ' array()); l'affiche en mettant automatiquement une virgule.
<hr />Si ma reponse te convient, merci de l'accepter ! 
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 juin 2008 à 10:00
salut

tout d'abord, la premiere question que j'ai a te poser c'est :
- pourquoi refuses tu d'utiliser une base de donnee ?

ensuite, pour supprimer un fichier : unlink
ensuite, pour supprimer un dossier : rmdir
pour creer un dossier : mkdir
pour creer un fichier : touch

pour savoir si un fichier existe : file_exists, ou tout simplement is_file
pour savoir si un dossier existe : is_dir

sinon, je ne vois pas trop quoi t'expliquer, a part te dire que ce sont tes forms et liens qui doivent gerer les enchainements que tu mis entre "si", "fin si" et tes actions doivent-etre faits en php sur les pages cibles (action=...) de ces formulaires
mais j'imagine que ca tu le savais deja...

si t'avais une question un peu plus precise on pourrait vraiment t'aider... ou si t'avais un probleme dans un code... mais la...
0
mymydu42 Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 18 juin 2008
12 juin 2008 à 10:13
Je suis en stage et j'ai pour contrainte de ne pas utiliser de base de données voila pourquoi j'en utilise pas.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 juin 2008 à 10:23
c'est triste...

ca rend les choses beaucoup plus lentes, complexes, et instables...

je ne sais pas si c'est portable ou meme fiable, mais un conseil : lock tes fichiers quand tu fais une operation dessus.

le but : eviter que deux operations sur un meme fichier se fassent en meme temps... ca pourrait avoir des consequences desastreuses (j'ai deja eu ce genre de problemes...)
0
mymydu42 Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 18 juin 2008
12 juin 2008 à 10:53
Tu peux me montrer un exemple de code avec cette fonction unlink() car
je vois pas trop comment faire pour supprimer un fichier de la
bibiliothèque par exemple et en même temps supprimer ce fichier de tous
les jours de la semaine ou il se trouve.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 juin 2008 à 11:12
unlink('fichier') or die('erreur de suppression de fichier ligne '__LINE__);
unlink('lundi/fichier') or die('erreur de suppression de fichier ligne '__LINE__);
unlink('mardi/fichier') or die('erreur de suppression de fichier ligne '__LINE__);
unlink('mercredi/fichier') or die('erreur de suppression de fichier ligne '__LINE__);

...

tu peux faire un array pour simplifier la tache...

a la place du or die, si tu te sens d'attaque, tu peux utiliser les Exceptions...
0
mymydu42 Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 18 juin 2008
12 juin 2008 à 11:15
Je me sens d'attaque si tu m'aide un peu :) Tu peux m'expliquer le fonctionnement des exceptions.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 juin 2008 à 11:34
le principe : on essaie de faire une chose, et si on echoue, alors on peut recuperer une exception dans un bloc.


try{
... instructions qui peuvent echouer
}catch (Exception $e){
... utilisation de l'exception
}

pour echouer, on leve une exception : throw new Exception('message');
l'exception levee, elle quitte tout les appels de fonctions jusqu'a trouver un catch qui la couvre.

ensuite, Exception, c'est une classe, donc on peut faire des classes enfant :

class MonException extends Exception{
...
}

et ca permet de recuperer dans un catch plusieurs types d'Exceptions :
try{
... instructions qui peuvent echouer
}catch (MonException $e){
...
}catch (Exception $e){
...
}

histoire de les traiter differement

tu peux voir :
http://www.phpcs.com/codes/EXCEPTION-EXCEPTION-MYSQL-FILEEXCEPTION_43064.aspx
pour avoir un appercu de ce qu'on peut faire de beau avec des Exceptions
0
mymydu42 Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 18 juin 2008
12 juin 2008 à 11:37
ça a l'air compliqué je partirais + sur les arrays, tu peux me dire comment il faut procéder et j'essaierai.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 juin 2008 à 11:42
les Exceptions, c'est pour gerer des erreurs... les arrays, pour eviter un code redondant...

$a = array('./', 'lundi/', 'mardi/', ....);

foreach ($tableau as $a){
unlink($a.'fichier') or die('erreur de suppression de fichier ligne '__LINE__);
}

ca te permet de supprimer fichier, dans chaque repertoir.
0
mymydu42 Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 18 juin 2008
12 juin 2008 à 11:44
Si j'utilise un array il faut qu'uavantça je mette le code de la fonction unlink et apres ceci?
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 juin 2008 à 12:06
je ne comprends pas ta question...

mais tu devrais tenter de faire quelquechose, et vennir avec un code, un message d'erreur et une question precise...
0
mymydu42 Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 18 juin 2008
12 juin 2008 à 13:46
Voila un code es ce que ça va comme ça?
<?php
$fichier_suppr="classeur.txt"

    unlink($fichier_suppr);
        if (file_exists(C:/Program Files/EasyPHP 2.0b1/www/waitingroom/bibliotheque/$fichier_suppr))/*Le fichier existe dans le planning*/
    {
            unlink($fichier_suppr)                            
    }
        if (file_exists(C:/Program Files/EasyPHP 2.0b1/www/waitingroom/lundi/$fichier_suppr))/*Le fichier existe dans le planning*/
    {
            unlink($fichier_suppr)                            
    }
        if (file_exists(C:/Program Files/EasyPHP 2.0b1/www/waitingroom/mardi/$fichier_suppr))/*Le fichier existe dans le planning*/
    {
            unlink($fichier_suppr)                            
    }
        if (file_exists(C:/Program Files/EasyPHP 2.0b1/www/waitingroom/mercredi/$fichier_suppr))/*Le fichier existe dans le planning*/
    {
            unlink($fichier_suppr)                            
    }
        if (file_exists(C:/Program Files/EasyPHP 2.0b1/www/waitingroom/jeudi/$fichier_suppr))/*Le fichier existe dans le planning*/
    {
            unlink($fichier_suppr)                            
    }
        if (file_exists(C:/Program Files/EasyPHP 2.0b1/www/waitingroom/vendredi/$fichier_suppr))/*Le fichier existe dans le planning*/
    {
            unlink($fichier_suppr)                            
    }
        if (file_exists(C:/Program Files/EasyPHP 2.0b1/www/waitingroom/samedi/$fichier_suppr))/*Le fichier existe dans le planning*/
    {
            unlink($fichier_suppr)                            
    }
        if (file_exists(C:/Program Files/EasyPHP 2.0b1/www/waitingroom/dimanche/$fichier_suppr))/*Le fichier existe dans le planning*/
    {
            unlink($fichier_suppr)                            
    }
?>
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 juin 2008 à 14:16
non, tu as oublie des quotes, et on peut faire beaucoup plus court :
$path='C:/Program Files/EasyPHP 2.0b1/www/waitingroom/';
$ar=array('./', 'lundi', 'mardi', // met ici les autres jours de la semaine
);

foreach ($ar as $a){
$f=$path.$a.$fichier_suppr;
if (file_exists($f)) unlink($f);
}
0
mymydu42 Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 18 juin 2008
12 juin 2008 à 15:10
Es ce que tu pourrait juste me commenter ce code pour que je comprenne un peu mieux. Merci
0
Rejoignez-nous