comment supprimer un Produit

Eléphant du PHP | 161 Messages

13 juil. 2016, 12:44

Salut a tous,
j'ai un probleme avec la suppression d'un produit dans ma page, comme vous pouvez le voire sous ce lien
http://www.bilder-upload.eu/show.php?fi ... 404093.png c'est a quoi ressemble ma page, de là je suis capable de upload les images sans probleme et les attribuer des categories ensuite je peus bien voire qu'elles sont visible sur ma page et aussi dans ma base de donnee.
maintenat j'aurai bien voulu qu'une liste de toutes les images que je upload s'affiche et que de la je puisse les supprimer un peu comme sur cette image http://www.bilder-upload.eu/show.php?fi ... 406247.png les noms des images (BILDNAME) et aussi a la categorie (CODE CAT) s'affiche.
j'ai essaye malheureusement ca ne marche pas et meme dans mon error_log aucune erreur est a signale peut etre quelqu'un pourrai m'aider s'il vous plait.

GestionProduit.php
<?php
session_start();

require_once("connection.php");


$req= $dbConnect->query("SELECT * from categories");

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

	<head>

		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

		<title>Management-Produit</title>

		<link rel="stylesheet" type="text/css" href="style1.css">
		<script language="javascript">
                    function confirmation(photo){
                         var rep=confirm("Sind sie sicher dieses produit zu löschen ?");
                         if(rep==true){
                            document.location="supprimerProduit.php?photo="+photo
                                       }
                    }
        </script>

	</head>

	<body>

		<?php 

		require_once("entete.php");

		?>

		<div id="formProduits" align="center">

		<form method="post" action="addProduit.php" enctype="multipart/form-data">

			<table>

				<tr>

					<td>Kategorie:</td>
					<td>

						<select name="idCat">

							<?php while($cat = $req->fetch(PDO::FETCH_ASSOC)) { ?>
							<option value="<?php echo $cat["code_cat"]; ?>">
							<?php echo $cat["nom_cat"]; ?>
							</option>
							<?php }?>

						</select>

					</td>

				</tr>

				<tr>

					<td>Bild:</td><td><input type="file" name="photo"></td>

				</tr>

				<tr>

					<td><input type="submit" value="Hinzufügen"></td>

				</tr>
				<div id="listeCategories" align="center">
                    <table border="1">
                            <tr>
                                 <th>CODE CAT</th><th>BILDNAME</th>
                            </tr>
<?php while($prod = $req->fetch(PDO::FETCH_ASSOC)){?>
                            <tr>
                                 <td><?php echo($prod['code_cat'])?></td>
                                 <td><?php echo($prod['photo'])?></td>
                                 <!--<td><?php //echo($cat['description'])?></td>-->
                                 <td>
								     
                                     <a href="javascript:confirmation(<?php echo($prod['photo'])?>)">Löschen</a>                             
                                </td>
                            </tr>
<?php } ?>
                    </table>
               </div>

			</table>

			</form>

		</div>

	</body>

</html>
produits.php
<?php
require_once 'connection.php';
$sql = 'select * from produits where 1=1';
if (isset($_POST['motCle'])) {
    $sql .= ' and designation LIKE '.$dbConnect->quote('%'.$_POST['motCle'].'%');
}
if (isset($_GET['idCat'])) {
    $sql .= ' and code_cat='.$dbConnect->quote($_GET['idCat']);
}
$req = $dbConnect->query($sql);
?>

<div id="produits">

<?php

while($prod=$req->fetch(PDO::FETCH_ASSOC)) {

?>

	<div id="produit" align="center">
	
		<form method="post" action="formular.php">
		<table>

				<td><a>Pos.Nr. / Kantt-Nr.</a></td>
				<td><input type="text" name="postnr_kanttnr" size="60" required="required"></td>

			</tr>

			<tr>

				<td><a>Bezeichnung:</a></td>
				<td><input type="text" name="bezeichnung" size="60" required="required"></td>

			</tr>

			<tr>

				<td><a>Farbe:</a></td>
				<td><input type="text" name="farbe" size="60" required="required"></td>

			</tr>

			<tr>
				<td><a>Anzahl x Länge:</a></td>
				<td><input type="text" name="anzahl_laenge" size="60" required="required"></td>

			</tr>

			<tr>
				<td><a>Bemerkung:</a></td>
				<td><input type="text" name="bemerkung" size="60" required="required"></td>

			</tr>

			
			<tr>
				<td></td>
				<td rowspan="1" align="center"><img src="images/<?php echo $prod['photo']?>"></td>

			</tr>


			<tr>	
				<td><a>a</a><input type="text" name="a" size="4"  required="required" ></td>				               
				<td><a>b</a><input type="text" name="b" size="4"  required="required"></td>
			</tr>
		
		    <tr>
				<td><a>c</a><input type="text" name="c" size="4"  required="required"></td>				
                <td><a>d</a><input type="text" name="d" size="4"  required="required"></td>
			</tr>

			<tr>
				<td><a>e</a><input type="text" name="e" size="4" required="required"></td>
				<td><a>f </a><input type="text" name="f" size="4" required="required"></td>
			</tr>
			
			<tr>	
				<td><a>g</a><input type="text" name="g" size="4" required="required"></td>				
				<td><a>α</a><input type="text" name="alpha" size="4" required="required"></td>
			</tr>
		
			<tr>
				<td colspan="4" align="right">
					<div id="formPanier">
						<form method="post" action="addCaddie.php" id="form2">
						     
							</tr>
						</form>
					</div>
					<input type="hidden" name="idCat" value="<?php echo $prod['code_cat']; ?>">
				</td>
			</tr>
			<tr>

				<td></td><td align="right"><br><input type="submit" name="produit_erstellen" value="Speichern"></td>

			</tr>
		</table>

		
		</form>
	</div>
<?php

}

?>

</div>
supprimerProduit.php
<?php require_once("connection.php")?>
<?php
$ph=$_GET["photo"];
$req="delete from produits where photo=$ph";
$dbConnect->query($req) or die(mysql_error());
header("location:GestionProduits.php");

?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 juil. 2016, 15:23

salut,

le champs "photo" il contient quoi ?

Dans supprimerProduit.php met en commentaire le header et affiche la page dans ton navigateur (avec le paramètre photo dans l'url : ?photo=xx).
que ce passe t'il ?

ajoute la fermeture de la connexion à la base de données.
($dbConnect->close() ?)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 161 Messages

13 juil. 2016, 16:22

photo contient le non die fichier photo du genre image.jpg, image.png ou image.gif.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 juil. 2016, 16:27

Bonjour,

Si photo contient une chaine de caractère et pas un identifiant ou un nombre, alors ta requête SQL est fausse et doit afficher une erreur à l'exécution. En effet, en SQL, toutes les chaines de caractères doivent être délimitées par des apostrophes :
$req="delete from produits where photo='" . $ph. "'";
L'objectif étant d'obtenir la requête sql suivante : delete from produits where photo='photo1.jpg'

Attention : cette solution permet de résoudre le problème que tu rencontres, mais il est indispensable de contrôler les informations envoyées par l'utilisateur avant de les utiliser. Si le nom du fichier contient une apostrophe et que celle-ci n'est pas protégée, la requête renverra une erreur. Pire, si un utilisateur malveillant remplace le nom du fichier par des instructions SQL directement dans l'url, celles-ci seraient exécutées sur ta base...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 161 Messages

14 juil. 2016, 07:47

Moogli Salut,
je ne comprend pas ce que tu veus dire par la avec :

Dans supprimerProduit.php met en commentaire le header et affiche la page dans ton navigateur (avec le paramètre photo dans l'url : ?photo=xx).
que ce passe t'il ?
en ce qui concerne la fermeture je l'ai fait et il resemble a ceci :
<?php require_once("connection.php")?>
<?php
$ph=$_GET["photo"];
$req="delete from produits where photo='" . $ph. "'";
$dbConnect->query($req) or die(mysql_error());
header("location:GestionProduits.php");
$dbConnect->close()?;
?>

Eléphant du PHP | 161 Messages

14 juil. 2016, 07:56

Salut Ryle,
j'ai modifie ma requete comme tu me l'a conseille.

pourquoi a ce niveau dans mon script GestionProduits.php il ne m'affiche pas la liste des fotos donc j'ai deja upload?
un peu comme sur cette image avec les categorie que je cree http://www.bilder-upload.eu/show.php?fi ... 476188.png
<?php while($prod = $req->fetch(PDO::FETCH_ASSOC)){?>
                            <tr>
                                 <td><?php echo($prod['code_cat'])?></td>
                                 <td><?php echo($prod['photo'])?></td>
                                 <!--<td><?php //echo($cat['description'])?></td>-->
                                 <td>
								     
                                     <a href="javascript:confirmation(<?php echo($prod['photo'])?>)">Löschen</a>                             
                                </td>
                            </tr>
<?php } ?>
meme en effectuant var_dump(), il ne m'affiche rien.

comment es ce que je peus securiser cela pour que les eventualites que tu as ennumere ne se produisent pas

Merci bien