Supprimer des entrées BDD et les images sur mon ftp avec un choix multiple check

Signaler
Messages postés
24
Date d'inscription
lundi 13 septembre 2010
Statut
Membre
Dernière intervention
29 septembre 2011
-
Messages postés
24
Date d'inscription
lundi 13 septembre 2010
Statut
Membre
Dernière intervention
29 septembre 2011
-
Bonjour, j'aimerais supprimer a partir d'un choix multiple de checkbox, des entrées BDD avec par la même occasion les images sur mon ftp:

Dans ma table ou se trouve mes images je les stock de la façon suivante:

ma table vidéos comprend 3 champ d'image: image, imageMin, extraMin
a l’intérieur de ces champs, je stock les liens qui cible les images soit: "images/monImage.jpg" etc.....

J'ai donc une administration et je souhaite a partir de choix multiple de checkbox, supprimer les images de mon serveur FTP et l'entrée id de ma BDD.

Voici le code actuelement utilisé pour faire ce script, seule l'entrée id se supprimer de ma bdd les images reste toujours sur mon serveur, pouvez-vous m'aider slvp ? merci

Formulaire
<form class= "block-content form" id="table_form" method="post" action="suprCase.php">
    Liste des vidéos


   |
Titre |
Date |
Heure |

<?php $sql =\"SELECT * FROM videos ORDER BY id DESC\";
$req =  mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while($data=mysql_fetch_assoc($req)){
sscanf($data['date'], \"%4s-%2s-%2s %2s:%2s:%2s\", $annee, $mois, $jour, $heure, $minute, $seconde);
?>

----

<!-- CHEKBOCK -->
"></th>, <?php echo stripslashes($data['titre']);?> Retour à l\'administration');
unlink($resultat['imageMin']) or die('Aucun fichier à supprimer Retour à l\'administration');
unlink($resultat['extraMin']) or die('Aucun fichier à supprimer Retour à l\'administration');
       }
   //suppression de l'entrée dans la BDD
 
    $requete = 'DELETE FROM newsletter2 WHERE id IN ('.implode(",",($_GET['cocher'])).')';
    echo '
'.$requete; //donne nous ce qui est affiché
    if (mysql_query($requete))
       {
$_SESSION['sup'] = '
<li> La suppression à été correctement effectuée </li>
<li class ="close-bt"></li>
';
       }
 
       header('location:video.php');
 
       break; //fin du case
 }

10 réponses

Messages postés
15114
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 août 2021
98
Bonjour,

Plusieurs pistes:
- ton retour, suite à ta requête, est peut-être vide. L'as-tu vérifié?
- tes chemins ne sont peut-être pas corrects (cf. ta gestion en chemin relatif)

Je déplace ta question dans le forum PHP.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
bonjour

ex : essaie voir

unlink($resultat['image']) or die('chemin faux :'.$resultat['image']);

il faut pointer sur './images/?'


Bonne programmation !
Messages postés
24
Date d'inscription
lundi 13 septembre 2010
Statut
Membre
Dernière intervention
29 septembre 2011

Merci pour vos réponses, je viens de tester ce que tu m'as dit cod57 mais je supprime toujours uniquement la BDD mais pas les images grrrr, en faite je sauvegarde le lien en relatife et les chemin affiche bien l'image sur la page du rendu donc les liens enregister en BDD sont correct.

Petite préscision, j'arrive à éffacer les images et mon enregistrement en bdd uniquement sans les chekbox, donc je me dit que je suis pas loint de la vérité !!

Code utilisé pour supprimer une entrée BDD avec les images sur le serveur
<?php
session_start();
require "../config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
mysql_query('SET NAMES '.DB_ENC);

$sql =  mysql_query("SELECT image,imageMin,extraMin FROM `videos` WHERE id={$_GET["id"]}");
$req = mysql_fetch_array($sql);

if(file_exists($req['image']) 
&& file_exists($req['imageMin']) 
&& file_exists($req['extraMin']))
{
$_SESSION['sup'] = '
<li>Contenu vidéo  Supprimer avec succée .</li>
<li class ="close-bt"></li>
';
header('location:video.php');	
unlink($req['image']) or die('Aucun fichier à supprimer Retour à l\'administration');
unlink($req['imageMin']) or die('Aucun fichier à supprimer Retour à l\'administration');
unlink($req['extraMin']) or die('Aucun fichier à supprimer Retour à l\'administration');
}
else{
echo "Annonce supprimer mais aucun fichier image supprimer pour l'annonce Retour à l\'administration";
}

$sql = "DELETE FROM videos WHERE id={$_GET["id"]}";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());	
?>


Le code suivant fonctionne parfaitement pour une seule entrée sans les checkbox.
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
peux tu me donner les chemins
le header() c'est pas sa place ...
le script à essayer

<?php
/*chemin des images
faire un fichier test.php avec
echo $_SERVER['SCRIPT_FILENAME'];
et comparer le resultat
*/
/*chemin du script actuel*/
echo $_SERVER['SCRIPT_FILENAME'];


session_start();
require "../config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
mysql_query('SET NAMES '.DB_ENC);

$sql =  mysql_query("SELECT image,imageMin,extraMin FROM `videos` WHERE id={$_GET["id"]}");
$req = mysql_fetch_array($sql);

/*resultat*/
  echo '';
print_r($req);
echo '

';

if(file_exists($req['image']) 
&& file_exists($req['imageMin']) 
&& file_exists($req['extraMin']))
{
$_SESSION['sup'] = '
                      <li>Contenu vidÚo  Supprimer avec succÚe .</li>
        <li class ="close-bt"></li>
         ';


unlink($req['image']) or die('Aucun fichier à supprimer Retour à l\'administration');
unlink($req['imageMin']) or die('Aucun fichier à supprimer Retour à l\'administration');
unlink($req['extraMin']) or die('Aucun fichier à supprimer Retour à l\'administration');

  //header('location:video.php');	
}
else{
echo "Annonce supprimer mais aucun fichier image supprimer pour l'annonce Retour à l\'administration";
}

$sql = "DELETE FROM videos WHERE id={$_GET["id"]}";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());	
?>


Bonne programmation !
Messages postés
24
Date d'inscription
lundi 13 septembre 2010
Statut
Membre
Dernière intervention
29 septembre 2011

Merci pour ton aide encore Cod, voilà je viens de faire un fichier test avec le nouveau code que tu ma donner et quand je supprime j'ai ce résultat là:

/homez.361/mon-site/www/administration/videos/sup.php

Array
(
[0] = > ../../images/b140mkh7.jpg
[image] => ../../images/b140mkh7.jpg
[1] => ../../images/min/b140mkh7.jpg
[imageMin] => ../../images/min/b140mkh7.jpg
[2] => ../../images/min/extramin/b140mkh7.jpg
[extraMin] => ../../images/min/extramin/b140mkh7.jpg
)

et là je vien de l'adapter a celui qui contient mes checkbox les multiple selection fonctionne parfaitement je te remercie !!

Parcontre j'aimerais deux autres choses, j'ai une liste associé a mon bouton supprimer qui à pour option Action...> Supprimer => OK

je te montre le morceau de code :



 
[......... Sélectionner tout] 
[......... Désélectionner tout]

<select name="table-action" id="table-action" class="small">
<option value="">Action...</option>
<option value="Supprimer">Supprimer</option>
</select>
 Ok 




Je souhaite dans un premier temps faire fonctionner le select option, si je suis sur Action... j'appuie sur le bouton rien ne se passe, si je choisi supprimer je supprime mes checkbox, dans un deuxième temps je souhaite faire fonctionner mes deux bouton, "Sélectionner tout" et "Désélectionner tout" je connais le script pour faire ceci, mais avec les checkbox dans un tableau il ne fonctionne pas, pourri-ez vous me dire comment faire ? merci.

Pour info le code qui fonctionne sans les checkbox dans un tableau:

<html><head>
<title>checkbox maître</title>
<script>
//checkbox ou une liste de checkbox.
function selectall(cas,choix){
  //test si on a plusieur ligne
  if(choix.length>0){
    if (cas.checked){
      for (var i =0; i<choix.length;i++){
        choix[i].checked=true
      }
    }
    else{
      for (var i=0; i<choix.length;i++){
        choix[i].checked=false
      }
    }
  }
  else{
    if (cas.checked){
      choix.checked=true
    }
    else{
      choix.checked=false
    }
  }
}</script>
</head>


<form name="monform">

puis un liste de checkbox


</form>
</html>


Je vous remercie d'avance !!
Messages postés
17
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
7 novembre 2011

Bonsoir,

Le soucis vient du path dans ta fonction unlink().

Essaye ça :
unlink($_SERVER['DOCUMENT_ROOT'].substr($req["image"],4);

Et tu fais la même chose pour les 2 autres en modifiant $req...

Bonne chance
Messages postés
24
Date d'inscription
lundi 13 septembre 2010
Statut
Membre
Dernière intervention
29 septembre 2011

Merci salttaste, mais mon souci de choix multiple checkbox avec suppréssion de l'entrée BDD et image et régler, maintenant je souhaite comme je dit dans mon dernier message, j'ai 2 boutons pour tous sélectionner ou dé sélectionner mes checkbox avec une liste qui prend l'effet Action = > Supprimer => OK

Je connais le script qui fait fonctionner la séléction multiple mais il ne marche pas si on mais les checkbox dans un tableau.

Voilà ma question, comment faire fonctionner mes deux boutons "tous sélectionner" et "dé sélectionner" avec un liste qui dit choisir l'action donc : "Action..." => "Supprimer" => bouton (OK)

Voilà le morceau de code de mes boutons:


 
[......... Sélectionner tout] 
[......... Désélectionner tout]

<select name ="table-action" id="table-action" class="small">
<option value="">Action...</option>
<option value="Supprimer">Supprimer</option>
</select>
Ok




Merci d'avance !!!
Messages postés
24
Date d'inscription
lundi 13 septembre 2010
Statut
Membre
Dernière intervention
29 septembre 2011

Re, je viens de m’apercevoir que j'ai un souci dans ma sélection multiple, en faite lorsque je clic sur sélectionner tous, sa me sélectionne tous parfaitement, mais si par ailleurs je veux décocher une case ou deux et supprimer par la suite, au moment de l'envoie sa me re-sélectionne tous et sa me supprime tous !! comment faire ?
Messages postés
17
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
7 novembre 2011

Bjr,

Tu peux donner le code javascript qui s’exécute lorsque que tu envois ton formulaire.

Thx
Messages postés
24
Date d'inscription
lundi 13 septembre 2010
Statut
Membre
Dernière intervention
29 septembre 2011

Alors quand je fait la suppression mon form cible sur ce script là:

<?php
 session_start();
/* ------------------ Connexion a la BDD  ------------------ */
require "../config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
mysql_query('SET NAMES '.DB_ENC);
/* ------------------ CASE A COCHER ------------------ */
//echo $_SERVER['SCRIPT_FILENAME'];
 $nom_table =  ("videos");
if (isset($_POST['champ'])) {
    //echo '
Vous avez supprimer : 
 ';
 
for ($i=0;$i<sizeof($_POST['champ']);$i++) {
 
$champ[$i] = $_POST['champ'][$i];
$numero_article = $_POST['champ'][$i];
 
$query2 = mysql_query("SELECT id,image,imageMin,extraMin FROM `$nom_table` WHERE Id='$numero_article'");
$req=mysql_fetch_array($query2);

/*resultat*/
 // echo '';
//print_r($req);
//echo '

';

if(file_exists($req['image']) 
&& file_exists($req['imageMin']) 
&& file_exists($req['extraMin']))
{	
$_SESSION['sup'] = '
<li> La suppression à été correctement effectuée </li>
<li class ="close-bt"></li>
';
header('location:video.php');
unlink($req['image']) or die('Aucun fichier à supprimer Retour à l\'administration');
unlink($req['imageMin']) or die('Aucun fichier à supprimer Retour à l\'administration');
unlink($req['extraMin']) or die('Aucun fichier à supprimer Retour à l\'administration');
}
else{
$_SESSION['error'] =  '
<li> Suppression des ID de la base de donnée mais   aucune image à était supprimer</li>
<li class ="close-bt"></li>
';
header('location:video.php');
}
$query 'DELETE FROM videos WHERE id '. $champ[$i];
$result = mysql_query($query)  or die('Erreur SQL ! '.$query.'
'.mysql_error());
  }
} 
else{
$_SESSION['error'] = '
<li> La suppression à échouée.  veuillez cocher au moins une case</li>
<li class ="close-bt"></li>
';
header('location:video.php');
}
?>


et le code javascript c'est :
<script type= "text/javascript">

var indice;
var ch=document.getElementById("f").elements;

for(i=0;i!=ch.length;i++){
if(ch[i].name!="champ"){
ch[i].ind=i+1;
ch[i].onclick=function(){
indice=this.ind;
while(ch[indice].name!=this.name && ch[indice].name!="main"){
ch[indice].checked=this.checked;
indice++;
}
}
}
}

</script>


et le code de mon formulaire pour faire mes séléctions:

<form class="block-content form" id="f" method="post" action="suprCase.php">
Liste des vidéos


   |
Titre |
Image |
Taille |
Date |
Heure |

Actions |

----

"/>,
"/>, "/>,
"/>,
"/>,
"/>,
Titre ">,

<li>Image</li>
<li class ="orange-keyword">Miniature</li>
,
12,
jours,
heure,

" title="Editer" class="with-tip">
" title="Supprimer" class="with-tip">,

 Sélectionner tout



 

Ok


</form>