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

JavaScript Discussion :

Effacement de news


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Effacement de news
    Bonjour,

    j'ai adapté un script de news sur un site. Celui-ci les crée en .txt (date + numéro au hasard) et les affiche mais ne pouvait pas les effacer.

    J'essaye de créer un script permettant de les sélectionner puis de les effacer.
    J'utilise du javascript pour ce faire. Je voudrais créer une variable tableau se remplissant au fur et à mesure que les cases sont cochées puis lorsqu'on appuie sur effacer, lire le tableau et effacer les .txt correspondant aux news sélectionnées.

    Une petite idée? Merci. Ci-dessous le code de la page concernée...

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <?php
    /*************************************************
     * Micro News
     *
     * Version: 1.0
     * Date: 2007-07-12
     *
     * Usage:
     *
     ****************************************************/
     
    // This function reads all available news
    function getNewsList(){
            
       $fileList = array();
       
            // Open the actual directory
            if ($handle = opendir("news")) {
                    // Read all file from the actual directory
                    while ($file = readdir($handle))  {
                        if (!is_dir($file)) {
                           $fileList[] = $file;
            }
                    }
            }       
            
            rsort($fileList);
            
            return $fileList;
    }
     
     
     
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title>Suppression news</title>
     
    <link rel="icon" type="image/png" href="favicon.png" />
    <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
     
    </head>
    <body class="oneColFixCtrHdr" id="container">
     
    <?php echo "<script>
    
    
    var array = [];
    
    function effnews() {
    
    
    
    array.push.getElementbyId('effacer');
    alert(array);
    }
    
    
    
    function clear() {
    var conf = confirm('Voulez-vous vraiment effacer les news sélectionnées ?');
    if (conf) {alert('EFFACEES!');
    for (i=0;count(array);i++) {fso.DeleteFile(\"news/\"+array[i]);} 
    }
    </script>
    "; ?>
     
    <div id="container">
     
        <br />
    <div class="actus"> 
    <!--<div id="main">-->
        <!--<div id="caption">Actualités</div>-->
    <form method="post">
        <table width="100%">
        <?php
     
          $list = getNewsList();
          foreach ($list as $value) {
          	$newsData = file("news/".$value);
          	$newsTitle  = $newsData[0];
             $submitDate = $newsData[1];	
             unset ($newsData['0']);
             unset ($newsData['1']);
     
             $newsContent = "";
             foreach ($newsData as $value) {
        	       $newsContent .= $value;
             }
     
          	echo "<tr class='fontactu'><th align='left'><INPUT type='checkbox' onclick='effnews();' name='effacer'></th><th align='left'>$newsTitle</th><th align='right'>$submitDate</th></tr>"; //echo $file;
          	echo "<tr class='fontactu2'><td></td><td colspan='2'>".$newsContent."<hr size='1'/></td></tr>";
          }
        ?>
        </table>
    <input id="effacer" type="button" onsubmit="clear();" value="Effacer"> 
     
    </form>  
    <br />
    </div>
      </div>
     
    </body>
    </html>

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    Salut , je te propose le code suivant, je ne sais pas si c'est exactement ce dont tu as besoin, mais c'est ce que j'ai compris que tu voulais faire.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <?php
    /*************************************************
    * Micro News
    *
    * Version: 1.0
    * Date: 2007-07-12
    *
    * Usage:
    *
    ****************************************************/
     
    // This function reads all available news
    function getNewsList(){
        
        $fileList = array();
        
        // Open the actual directory
        if ($handle = opendir("news")) 
        {
            // Read all file from the actual directory
            while ($file = readdir($handle)) 
            {
                if (!is_dir($file) && substr($file,-3) == 'new') 
                {
                    $fileList[] = $file;
                }
            }
        }
     
        rsort($fileList);
     
        return $fileList;
    }
     
     
     
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title>Suppression news</title>
     
     
    </head>
    <body>
    <pre>
    <?php 
        
        print_r(getNewsList());
    ?>
    </pre>
     
    <table>
    <tr><td>Fichier</td><td>Description</td><td>Supprimer</td></tr>
    <?php 
        foreach (getNewsList() as $news)
        {
            echo '<tr><td>'.$news.'</td><td>'. substr(file_get_contents('news/'.$news),0,50).'...</td><td><form action="delete.php"><input type="hidden"name="delete" value="'.$news.'" /><input type="submit" value="X" onclick="return confirm(\'supprimer '.$news.' ?\')"></form></td></tr>';
        }    
     
    ?>
    </table>
    </body>
    </html>
    //je fais des lignes dans le tableau et je lis un appercu du contenu du fichier.Si on clique sur la croix, on demande a executer delete.php avec en variable $_POST['delete'] le nom du fichier à supprimer du repertoire news et retourner sur l'index. a toi de jouer

    Note que je charge seulement les fichiers qui ont une extension .new pour plus de sécurité

    Si tu veux faire une suppression sans recharger la page, tu peux faire une requête AJAX en GET ou en POST. Je te conseille alors de te tourner vers JQuery qui permet de faire une requête très soimplement
    ex :
    $.get('delete.php?file=monfichier.new',callback);
    cela va executer une requete vers le serveur, et le callback est une fonction annonyme qui sera exécutée lorsque la réponse du serveur est reçue. tu peux alors supprimer la ligne du tableau dans cette fonction.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Pas bête... Sinon, super! ca marche!

    ... bien que j'eus préféré un appel de fonctions JS pour pouvoir effacer d'un coup celles qui sont sélectionnées car j'apprends le javascript en ce moment. Si qqun a une idée de fonction...

    Je vais essayer d'intégrer une fonction jquery comme tu me l'as décrite...

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    RE ,

    je ne sais pas trop ce que tu as tenté avec ta fonction, mais avec cette ligne ca marche mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<tr class='fontactu'><form action='delete.php'><input type='hidden' name='delete' value='".$value."' /><td align='left' style='width:10%;'><input type='submit' value='X' onclick=\"return confirm('$newsTitle')\"></td><th align='left'>$newsTitle</th><td align='right'>$submitDate</td></tr>"; //echo $file;

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Re,

    J'ai intégré un appel jquery de cette façon :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<tr><td>'.$news.'</td><td>'. substr(file_get_contents('news/'.$news),0,50).'...</td><td><form $.get("delete.php?file=monfichier.txt",callback);><input type="hidden"name="delete" value="'.$news.'" /><input type="submit" value="X" onclick="return confirm(\'supprimer '.$news.' ?\')"></form></td></tr>';
    Je ne sais pas si c'est correct.

    Je vais maintenant essayer de créer la page delete.php . A+ et merci!

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Bon je pense que ça ne pouvait pas fonctionner car je n'avais pas installé les librairies jquery (je débute en javascript...). Ceci étant fait, je me retrouve avec la page suivante :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <?php
     
     
    // This function reads all available news
    function getNewsList(){
     
        $fileList = array();
     
        // Open the actual directory
        if ($handle = opendir("news")) 
        {
            // Read all file from the actual directory
            while ($file = readdir($handle)) 
            {
                if (!is_dir($file) && substr($file,-3) == 'txt') 
                {
                    $fileList[] = $file;
                }
            }
        }
     
        rsort($fileList);
     
        return $fileList;
    }
     
     
     
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title>Suppression news</title>
     
      <script type="text/javascript" 
       src="jquery/jquery-1.7.1.min.js"></script>
     
     
    </head>
    <body>
    <pre>
    <?php 
     
        print_r(getNewsList());
    ?>
    </pre>
     
    <?php  echo '<script type="text/javascript" language="javascript">
      $(document).ready(function() {
          $("#delete").click(function(event){
              $.get( 
                 "delete.php?file='.$news.'",
               callback);
          });
       });
       </script>';
    ?>
    <table>
    <tr><td width="20%">Fichier</td><td width="70%">Description</td><td width="10%">Supprimer</td></tr>
    <?php 
        foreach (getNewsList() as $news)
        {
            echo '<tr><td>'.$news.'</td><td>'. substr(file_get_contents('news/'.$news),0,50).'...</td><td><form><input value="X" type="button" id="delete" onclick="return confirm(\'Voulez-vous vraiment supprimer '.$news.' ?\')"></form></td></tr>';
        }    
     
    ?>
    </table>
    </body>
    </html>
    et la page de suppression, delete.php :

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title></title>
     
      <script type="text/javascript" 
       src="jquery/jquery-1.7.1.min.js"></script>
     
     
    </head>
    <body>
     
     
    <?php
     
    echo "<script>function clear() {
    fso.DeleteFile(\"news/\"".$_REQUEST['file']."} 
    }
    
    </script>";
     
    clear(); ?>
    </body>
    </html>
    La description des news et la confirmation de suppression fonctionnent mais la suppression effective avec l'appel Jquery ne fonctionne pas. J'imagine que des erreurs sont sur les deux pages.......... Merci d'avance pour toute aide!

    Bonne journée

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    re bonjour,

    Pour commencer, sache que apprendre le JS c'est cool et ca permet plein de choses, mais savoir comment l'utiliser c'est mieux. Dans ton cas, tu veux manipuler des fichiers, or JS ne permet pas de le faire .Pour des raisons de sécurité, étant donné que ce code s'exécute sur la machine client, si JS pouvait manipuler les fichiers, on aurait de sérieux problèmes sur un paquet de sites...

    pour delete.php, c'est un traitement coté serveur que tu dois effectuer. il s'agit de supprimer le fichier .new que le formulaire décrit. On récupère donc le nom du fichier que l'on doit supprimer au travers de la variable globale $_POST qui est remplie avec une information étant donné que c'est un formulaire qui à généré la requête HTTP vers delete.php

    Donc, dans l'idée, tu récupères le nom du fichier dans POST tu vérifies que c'est bien un nom qui finit par .new et que c'est pas une adresse du type '../../../../../fichier' qui ferait que ca peut supprimer un fichier à la racine de ton serveur.
    ensuite, tu appelles la fonction unlink de php pour supprimer le fichier du serveur.

    Comme à ce stade tu n'as pas fait de output , tu peux modifier le header de ta réponse HTTP, c'est à dire ce que va retourner delete.php, pour faire une redirection avec une instruction du type
    header('location:index.php');
    qui aura pour effet après avoir supprimé ton fichier de te refiriger vers ta page d'origine. Ni vu ni connu, tu as supprimé un fichier, ton gestionnaire de news est rappellé avec un fichier en moins, il n'apparaîtra donc pas dans le tableau.Et la boucle est bouclée.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse.

    J'ai tenté de créer le fichier delete.php qui suit mais ça ne marche toujours pas. Et là, je ne vois vraiment pas d'où vient l'erreur. Sans doute de la fonction jquery dans actualites_eff.php posté plus haut...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
     $fichier = '../news/'.$_POST(['file']).'';
     
       if( file_exists ( $fichier)) {
         unlink( $fichier ) ;
     
     
    header('Location: ../actualites_eff.php');
    } else {alert("Probleme d\'effacement. Le fichier n\'existe pas.");}?>

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Resolu!
    Hello,

    Bon j'ai finalement réussi, sans appel JQuery ou ajax.

    Merci pour ton aide Utopman et à bientôt!

    Bonne journée.

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

Discussions similaires

  1. effacer une table que si elle existe ?
    Par soniaSQL dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/06/2003, 14h55
  2. [VBA-E] [Excel] Effacer une feuille
    Par Tray dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/01/2003, 10h04
  3. [VB6] Ecrire/Modifier/Effacer ds un fichier text-4 Chs/Lg
    Par Jonathan_Korvitch dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 24/12/2002, 18h54
  4. Comment effacer des Items d'un TListView ?
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/11/2002, 10h19
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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