Page 1 sur 2

Supprimer plusieur fichier present dans ma base de donné

Posté : 07 juil. 2005, 14:37
par castelli
Bonjour ,
J'ai un petit probleme.
J'ais un tableau qui s'affiche montrant ce que contient ma table commande (mysql)

voila mon tableau
echo "<BR><FORM method=\"POST\" action='commande.php'><table border=1>";

echo "<th>Nom</th><th>Quantité</th><th>Nombre d'unité</th><th>Fournisseur</th><th>Prix à l'unité</th><th>Prix totale</th><th>Prix avec reduction</th><th>Numero de cas</th><th>Date</th><th>initiale</th><th>Supprimer</th>";

while ($voir = mysql_fetch_assoc($result)) {

$selec= "SELECT reduction from fournisseur where fournisseur2 like  '".$voir['fournisseur']."'";
$result2 = mysql_query($selec,$link) or die ('Erreur : '.mysql_error() );
$voir2 = mysql_fetch_assoc($result2);

$reduc = $voir2['reduction'];
$reduc2 = preg_replace("#,#", ".", $reduc);

if ($reduc2==0)
{
$reduction = $voir['prix_total'];
}
else
{
$reduction = $voir['prix_total']*$reduc2;
}

echo"<tr>
<td><font face='Verdana' size='2'>".$voir['nom']."</font></td>
<td><font face='Verdana' size='2'>".$voir['quantite']."</font></td>
<td><font face='Verdana' size='2'>" .$voir['nombre_quantite']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['fournisseur']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['prix']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['prix_total']. "</font></td>
<td><font face='Verdana' size='2'>$reduction</font></td>
<td><font face='Verdana' size='2'>" .$voir['numero_cass']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['date']. "</font></td>
<td><font face='Verdana' size='2'>" .$voir['initiale']. "</font></td>
<td><font face='Verdana' size='2'><div style=\"text-align:center;\"><input type=\"checkbox\" name=\"supp\" value=1></div></font></td></tr>";
}
echo "<tr><td colspan=11><div style=\"text-align:center;background-color:#ffffff;\"><input type=\"submit\" class=\"verif\" name=\"supprimer\" value=\"Supprimer\" />
<input type=\"submit\" value=\"Imprimer\" onclick=\"print();\">
<input type=\"submit\" value=\"fermer\" onClick=\"window.close()\";></div></TD></tr>";
echo "</table></form>"; 
Comme vous avez pus le voir mon tableau a un while pour afficher toute les lignes .

Le problemes qui se pose maintenant est que lorsque je clike sur mes checkbox jaimerai ke lorsque soit coché et que lorsque j'appuis sur mon bouton supprimer seul les produit sur la ligne des checkbox ki sont coché soit effacé..

hors j'ais beau essaillez les manieres de procédés je n'y arrive pas ..

est ce que quelqun pourrait maider a batir ma requete :? :? :? car la javoue que je suis perdu : //

merci encore

Posté : 07 juil. 2005, 14:52
par Darfox
De la mamière dont les checkboxs sont faite tu risques d'avoir un problème, puisqu'elles auront toute le meme nom et le meme value. Ce qu'il faudrait pour commencer c'est leur attribué le value de l'id qui correspond au produit comme ça elles seront unique.

Pour la suite (supprimer) faut que j'y réfléchisse. :D

Posté : 07 juil. 2005, 14:57
par castelli
Vi vi desolé ta raison (javais mis sa pour un test lol

comme sa c'est mieu :) lol

<td><font face='Verdana' size='2'><div style=\"text-align:center;\"><input type=\"checkbox\" name=\"supp\" value=\".$voir['nom'].\"></div></font></td>

apres par contre.........
je sait du tout comment batir la requete c'est ce qui me pose la plus de probleme : //

Posté : 07 juil. 2005, 15:28
par castelli
y'a t'il moyen de batir quelqures chose dans le genre

if (checkbox=checked )

{

$query="DELETE FROM produit2 WHERE nom LIKE '\".$voir['nom'].\"'";
$resultat=mysql_query($query);

}

Posté : 07 juil. 2005, 15:43
par Darfox
y'a t'il moyen de batir quelqures chose dans le genre
Ui y a moyen, déja ça ne serai pas =checked mais if($_POST['supp'] == TRUE).

Ensuite, il faudrait le intégré ça dans une boucle et j'ai beau chercher, je débute aussi, alors toute mes tentatives on échoué.

Posté : 07 juil. 2005, 16:08
par castelli
a d'accord : //

si quelqu'un d'autre a une idée...

je susi preneur :oops:

Posté : 07 juil. 2005, 16:11
par guilt92
Je pense avoir exactement ce qu il te faut

Ceci est un code que j ai écrit qui affiche une liste d utilisateurs enregistrés et propose a coté de chacun une case a cocher. A la fin quand on clique sur remove ca supprime tous les utilisateurs cochés.
<?php
//Page affichant les utilisateurs et proposant la suppression ou l ajout
//la suppression se fait par un appel a soi meme, l'ajout par un lien vers une autre page
// connexion à la base
include("connexion_admin.php");
?>
<html>

<head>
<title>Manage users</title>
<?php include ("style.php");?>
</head>
<body bgcolor="#000000">
<p class="style3">Manage users:</p>
<p class="style1"><a href=add_user.php>Add a new user</a></p>
<p class="style1">Or select user(s) you want to delete and click on the button at the end of the list.<BR>(admins are in red)</p>

<?php
//si c'est un deuxième appel avec postage, on supprime les utilisateurs postés précedemment
if(isset($_POST['list_users'])){
$list=$_POST['list_users'];
for($i=0;$i<count($list);$i++)
	{
	$rqSql= "DELETE FROM users WHERE Name='$list[$i]'";
	$result = mysql_query( $rqSql, $idConnect) or die( "Suppression impossible.");
	}
}
//récupération de la liste des utilisateurs
$rqSql= "SELECT * FROM users ORDER by Name";
$result = mysql_query( $rqSql, $idConnect) or die( "Exécution requête1 impossible.");
?>
<form name="users" method="post" action="admin_users.php">
<BR><input type="submit" value="Delete selected"><BR><BR>
<table width="500" border="0">
  <?php
while($ligne=mysql_fetch_array($result))
	{
	echo "<tr>";
	echo "<TD><span class=\"style$ligne[2]\"><input type=\"checkbox\" name=\"list_users[]\" value='$ligne[0]'>&nbsp$ligne[0]</TD>";
	echo "<TD><span class=\"style$ligne[2]\"><div align=\"left\">$ligne[1]</div></TD>";
	echo "</TR>";
	}
	?>
</table>
<BR>
<input type="submit" value="Delete selected">
</form>
</body>
</html>
L'idée c'est de rappeller la page elle meme en regardant si on a recu une liste et si oui on la traite.

Je pense que ca t aidera tiens moi au courant

Posté : 07 juil. 2005, 16:26
par Darfox
Heps j'étais pas loin du tout, j'avais pensé à ça mais chez moi j'ai eu un problème et j'ai pas trop le temps de chercher en se moment :
if($_POST){
$supp = array($_POST['supp']);
$i=0;
while($i <= count($supp){
 //Requette pour supprimer
$i++
}}

Posté : 07 juil. 2005, 16:31
par castelli
J'aurais une petite question...

A quoi correspond list_user et pourquoi dans les checkbox tu le met avec des [] apres ??

sinon moi au niveau de la requete jvai jamais reussir
jdois comparer avec le nom de la molecule en faite (celle qui apparait dans le tableau ...

$rqSql= "DELETE FROM commande WHERE nom='$nom'";
$result = mysql_query( $rqSql, $idConnect) or die( "Suppression impossible.");

c faisable d'inserer sa dans ma requete ?

Posté : 07 juil. 2005, 16:49
par Darfox
A quoi correspond list_user et pourquoi dans les checkbox tu le met avec des [] apres ??
list_user correspond tout simplement à toute les checkbox et s'il mets des [0] [1] .. c'est pour ressortir les infos de le bdd. Comme toi tu mets ['nom'] lui mets [1], il n'utilise pas la meme fonction que toi pour ressortir les résultat, lui utilise mysql_fetch_array() alors que toi tu dois utiliser mysq_fetch_assoc()

Corrige moi si je me trompe guilt92

Posté : 07 juil. 2005, 16:56
par castelli
Bon voila ou je suis rendu

mon echo rqSql; donne sa :DELETE FROM commande WHERE nom='..'

donc je dois avoir des mega faute dans la requete (ce dont je ne doute absolument pas lol )


voila mon code

if(isset($_POST['supp'])){
$list=$_POST['supp'];
for($i=0;$i<count($list);$i++) 
{
    $rqSql= "DELETE FROM commande WHERE nom='$list[$i]'";
    $result3 = mysql_query( $rqSql, $link) or die( "Suppression impossible.");
    }
} 
echo $rqSql;
$select = "SELECT * from commande ";

$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

$row = mysql_num_rowS($result);



if ($row >=1)

{
echo "<BR><FORM method=\"POST\" action='commande.php'><table border=1>";

echo "<th>Nom</th><th>Quantité</th><th>Nombre d'unité</th><th>Fournisseur</th><th>Prix à l'unité</th><th>Prix totale</th><th>Prix avec reduction</th><th>Numero de cas</th><th>Date</th><th>initiale</th><th>Supprimer</th>";

while ($voir = mysql_fetch_assoc($result)) {


$selec= "SELECT reduction from fournisseur where fournisseur2 like  '".$voir['fournisseur']."'";
$result2 = mysql_query($selec,$link) or die ('Erreur : '.mysql_error() );
$voir2 = mysql_fetch_assoc($result2);



$reduc = $voir2['reduction'];
$reduc2 = preg_replace("#,#", ".", $reduc);



if ($reduc2==0)
{
$reduction = $voir['prix_total'];
}
else
{

$reduction = $voir['prix_total']*$reduc2;

}


echo"<tr>
<td><font face='Verdana' size='2'>".$voir['nom']."</font></td>

<td><font face='Verdana' size='2'>".$voir['quantite']."</font></td>

<td><font face='Verdana' size='2'>" .$voir['nombre_quantite']. "</font></td>


<td><font face='Verdana' size='2'>" .$voir['fournisseur']. "</font></td>

<td><font face='Verdana' size='2'>" .$voir['prix']. "</font></td>

<td><font face='Verdana' size='2'>" .$voir['prix_total']. "</font></td>

<td><font face='Verdana' size='2'>$reduction</font></td>

<td><font face='Verdana' size='2'>" .$voir['numero_cass']. "</font></td>

<td><font face='Verdana' size='2'>" .$voir['date']. "</font></td>

<td><font face='Verdana' size='2'>" .$voir['initiale']. "</font></td>
<td><font face='Verdana' size='2'><div style=\"text-align:center;\"><input type=\"checkbox\" name=\"supp[]\" value=\".$voir['nom'].\"></div></font></td></tr>";

}
echo "<tr><td colspan=11><div style=\"text-align:center;background-color:#ffffff;\"><input type=\"submit\" value=\"supprimer\">
<input type=\"submit\" value=\"Imprimer\" onclick=\"print();\">
<input type=\"submit\" value=\"fermer\" onClick=\"window.close()\";></div></TD></tr>";
echo "</table></form>"; 

}
print("<p>Retour vers l'Index, cliquez <a href=\"index.html\" title=\"Retour a l'index\">ICI</a></p>");

?>
</body></html>
si vous voyez des trucs que j'ais mal traduit.. dite moi s'il vous plait

(en gros je suis pommé au nivo de :


if(isset($_POST['supp'])){
$list=$_POST['supp'];
for($i=0;$i<count($list);$i++)

je c'est pas trop comment faire ...

Posté : 07 juil. 2005, 17:02
par pjl
Pas la peine de faire une série de X requête pour traiter tes supressions.
Ca peut se faire avec une seule requete sous cette forme :

Code : Tout sélectionner

DELETE FROM ta_table WHERE identifiant IN (blabla)

Posté : 07 juil. 2005, 17:21
par guilt92
A quoi correspond list_user et pourquoi dans les checkbox tu le met avec des [] apres ??
list_user correspond tout simplement à toute les checkbox et s'il mets des [0] [1] .. c'est pour ressortir les infos de le bdd. Comme toi tu mets ['nom'] lui mets [1], il n'utilise pas la meme fonction que toi pour ressortir les résultat, lui utilise mysql_fetch_array() alors que toi tu dois utiliser mysq_fetch_assoc()

Corrige moi si je me trompe guilt92
Ce que tu dis est vrai pour ligne[]. Pour list user en fait c'est le fait de mettre [] génère un groupe de case à cocher et renvoi au final un tableau avec justement les valeurs a supprimer : Plus d explications

Si tu n as pas de solutions j essayerai de regarder ton code demain.

Bon courage

Posté : 07 juil. 2005, 17:26
par castelli
merci encore jvai essaillez de me debrouillez tout seul et pis si je suis desespéré je ferais appelle a aide phpinternationale ;)

merci encore de vous aide penché sur mon probleme et donc peut etre a demain lol

Posté : 07 juil. 2005, 17:57
par Darfox

Code : Tout sélectionner

DELETE FROM ta_table WHERE identifiant IN (blabla)
C'est ce que je cherchais sans le trouver merci
Mais je ne vois pas ce que tu mets après IN.

Bonne continuation Castelli ;)