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

lorenzo16000 Messages postés 24 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 29 septembre 2011 - 6 sept. 2011 à 13:04
lorenzo16000 Messages postés 24 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 29 septembre 2011 - 9 sept. 2011 à 00:13
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

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
6 sept. 2011 à 13:58
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...
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
6 sept. 2011 à 14:49
bonjour

ex : essaie voir

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

il faut pointer sur './images/?'


Bonne programmation !
0
lorenzo16000 Messages postés 24 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 29 septembre 2011
6 sept. 2011 à 17:16
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.
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
6 sept. 2011 à 18:52
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 !
0

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

Posez votre question
lorenzo16000 Messages postés 24 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 29 septembre 2011
6 sept. 2011 à 23:30
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 !!
0
salttaste Messages postés 17 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 7 novembre 2011
7 sept. 2011 à 00:10
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
0
lorenzo16000 Messages postés 24 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 29 septembre 2011
7 sept. 2011 à 11:06
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 !!!
0
lorenzo16000 Messages postés 24 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 29 septembre 2011
7 sept. 2011 à 19:21
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 ?
0
salttaste Messages postés 17 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 7 novembre 2011
8 sept. 2011 à 20:16
Bjr,

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

Thx
0
lorenzo16000 Messages postés 24 Date d'inscription lundi 13 septembre 2010 Statut Membre Dernière intervention 29 septembre 2011
9 sept. 2011 à 00:13
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>
0
Rejoignez-nous