Gestion des photos en base de données / Upload multi photos via formulaire
Posté : 12 mai 2016, 19:35
Bonjour je recherche une façon d'enregistrer plusieurs photos en base lors du remplissage de mon formulaire " création de produit" pour mon site e commerce.
par avance merci !!!
ci dessous mon code:
par avance merci !!!
ci dessous mon code:
<?php
require_once('../inc/init.inc.php');
if (!internauteEstConnecteEtEstAdmin()) {
header ('location:../connexion.php'); //redirection vers la page connexion
exit();
}
// SUPPRESSION D'UN PRODUIT:
if (isset($_GET['action']) && $_GET['action'] == 'suppression') {
/* Traitement de la photo */
$requete = $mysqli->query("SELECT * FROM produit WHERE id_produit = '$_GET[id_produit]'");
// pas de boucle car un seul produit par ID_PRODUIT
$produit_a_supprimer = $requete->fetch_assoc();
// Chemin de la photo à supprimer dans le dossier
$chemin_photo_a_supprimer = $_SERVER['DOCUMENT_ROOT'] . $produit_a_supprimer['photo'];
// unlink efface le fichier dont le chemin est spécifier
if(!empty($produit_a_supprimer['photo']) && file_exists($chemin_photo_a_supprimer)) { //file_exists test si le f
unlink($chemin_photo_a_supprimer);
}
/* Fin de traitement de la photo */
// ***************************************************
//Suppression en base
$mysqli->query("DELETE FROM produit WHERE id_produit = '$_GET[id_produit]'");
$_GET['action'] = 'affichage';
}
//Fin Suppression en base
// Enregistrement du produit en BDD
if ($_POST) {
//PHOTO:
$photo_bdd ='';
if (isset($_GET['action']) && $_GET['action'] == 'modification') {
$photo_bdd = $_POST['photo_actuelle'];
//Si je suis en modification, on remet en BDD l'url actuel de la photo qui est dans $_POST.
}
if(!empty($_FILES['photo']['name'])){
//debug($_FILES);
$nom_photo = $_POST['reference'] . $_FILES['photo']['name'];
/* Concatène le nom de la photo UPLOAD */
$photo_bdd = RACINE_SITE . 'photo/' . $nom_photo;
/* Chemin de la photo enregistrer dans la DB ( a la racine du site dans photo)*/
$photo_dossier = $_SERVER['DOCUMENT_ROOT']. RACINE_SITE . 'photo/' . $nom_photo;
/* Chemin de la photo pour l'enregistrement physique du fichier.*/
//debug($photo_dossier);
copy($_FILES['photo']['tmp_name'], $photo_dossier);
}
// FIN PHOTO ********************************************
/* Traitement du $_POST pour convertir les caractère spéciaux:*/
foreach ($_POST as $indice => $valeur){
$_POST[$indice] = htmlentities($valeur, ENT_QUOTES);
}
$mysqli->query("REPLACE INTO produit (id_produit, reference, categorie, titre, description, couleur, taille, public, photo, prix, stock) VALUES ('$_POST[id_produit]','$_POST[reference]','$_POST[categorie]','$_POST[titre]','$_POST[description]','$_POST[couleur]','$_POST[taille]','$_POST[public]','$photo_bdd','$_POST[prix]','$_POST[stock]')");
//replace into se comporte comme update s'il trouve l'id produit, sinon comme insert into.
$contenu .='<div class="Validation">Le produit a bien été ajouté dans les stocks</div>';
}
//5° ======================================================================
// AFFICHAGE DES PRODUIT DANS LE BACK-OFFICE:
if(isset($_GET['action']) && $_GET['action'] == 'affichage') {
$resultat = $mysqli->query("SELECT * FROM produit");
$contenu .= '<h2>Affichage des produits</h2><br><br>';
$contenu .= '<p>nombre de produit dans la boutique:' . $resultat->num_rows . '</p><br><br>';
// Affichage sous forme de tableau:
$contenu .='<table border=1><tr>';
// 5.1 - les entêtes: ******************************************
while($entete = $resultat->fetch_field()) {
$contenu .= '<th>' . $entete->name . '</th>';
}
$contenu .= '<th>modification</th>';
$contenu .= '<th>suppression</th>';
$contenu .= '</tr>';
// 5.2 Les lignes du tableau: ********************************************
while($ligne =$resultat->fetch_assoc()){
$contenu .= '<tr>';
foreach ($ligne as $indice => $information){
if ($indice == 'photo') {
$contenu .= '<td><img src="'. $information .'" width="100" height="auto" alt=""></td> ';
} else {
$contenu .= '<td>' . $information . '</td>';
}
} // fin du foreach
//5.3 affichage des liens (supprimer et modifier) ************************
$contenu .='<td><a href="?action=modification&id_produit='. $ligne['id_produit'].'"><input type="submit" name="modification" value="modification"></a></td>';
$contenu .='<td><a href="?action=suppression&id_produit='. $ligne['id_produit']. '" onclick="return(confirm(\'En êtes vous certain ?\'));"><input type="submit" name="suppression" value="suppression"></a></td>';
$contenu .= '</tr>';
} //fin du while
$contenu .='</table>';
} //fin du if(isset())
/*************************** HTML ***********************************/
require_once('../inc/haut.inc.php');
?>
<div id="menu_affichage">
<ul>
<li><a class="produit" href="?action=affichage"><input type="submit" name="affichage" value="Affichage des produits"></a></li>
<li><a class="produit" href="?action=ajout"><input type="submit" name="ajout_produit" value="Ajout d'un produit"></a></li>
</ul>
</div>
<?php
// AJOUT DE LIENS "AFFICHAGE" et "AJOUT":
/* Ci-dessous le lien vers affichage avec un $_GET['action'] = 'affichage' */
//$contenu .= '<p><a class="produit" href="?action=affichage">Affichage des produits</a></p><br>';
/* Ci-dessous le lien vers affichage avec un $_GET['action'] = 'affichage' */
//$contenu .= '<p><a class="produit" href="?action=ajout">Ajout d\'un produit</a></p><br>';
echo $contenu;
if(isset($_GET['action']) && ($_GET['action'] == 'ajout' || $_GET['action'] == 'modification')) :
// la syntaxe du if avec (:) et endif qui remplace les accolades dans le cas ou il y aurais des long passage de code entre les deux.
//7° $_GET['action']=='modifications' **********************************
if (isset($_GET['id_produit'])){ //Si on met en modification et qu'un produit a été sélectionner alors on fait une requête en BDD pour afficher les informations du produit sélectionné dans le formulaire de modification
$resultat = $mysqli->query("SELECT * FROM produit WHERE id_produit = '$_GET[id_produit]'");
$produit_selectionne = $resultat->fetch_assoc(); //Ici pas de boucle while car l'id_produit est unique
}
//3° Formulaire HTML avec value="" *************************************
?>
<h1>Formulaire produits</h1>
<form method="post" action="" enctype="multipart/form-data" id="tableau1">
<!-- multipart/form-data permet de uploader un fichier et de générer une superglobale $_FILES -->
<input type="hidden" id="id_produit" name="id_produit" value="<?php if (isset($produit_selectionne['id_produit']))echo $produit_selectionne['id_produit']; ?>"><br><br>
<label for="reference">Référence:</label>
<input type="text" id="reference" name="reference" value="<?php if (isset($produit_selectionne))echo $produit_selectionne['reference']; ?>"><br><br>
<label for="categorie">Catégorie:</label>
<input type="text" id="categorie" name="categorie" value="<?php if (isset($produit_selectionne))echo $produit_selectionne['categorie']; ?>"><br><br>
<label for="titre">Titre:</label>
<input type="text" id="titre" name="titre" value="<?php if (isset($produit_selectionne))echo $produit_selectionne['titre']; ?>"><br><br>
<label for="description">Description:</label>
<input type="text" id="description" name="description" value="<?php if (isset($produit_selectionne))echo $produit_selectionne['description']; ?>"><br><br>
<label for="couleur">Couleur:</label>
<input type="text" id="couleur" name="couleur" value="<?php if (isset($produit_selectionne['couleur']))echo $produit_selectionne['couleur']; ?>"><br><br>
<select name="taille">
<option value="XS"<?php if (isset($produit_selectionne['taille']) && $produit_selectionne['taille'] == 'XS') echo 'selected'; ?>>XS</option>
<option value="S"<?php if (isset($produit_selectionne['taille']) && $produit_selectionne['taille'] == 'S') echo 'selected'; ?>>S</option>
<option value="M"<?php if (isset($produit_selectionne['taille']) && $produit_selectionne['taille'] == 'M') echo 'selected'; ?>>M</option>
<option value="L"<?php if (isset($produit_selectionne['taille']) && $produit_selectionne['taille'] == 'L') echo 'selected'; ?>>L</option>
<option value="XL"<?php if (isset($produit_selectionne['taille']) && $produit_selectionne['taille'] == 'XL') echo 'selected'; ?>>XL</option>
<option value="XXL"<?php if (isset($produit_selectionne['taille']) && $produit_selectionne['taille'] == 'XXL') echo 'selected'; ?>>XXL</option>
</select><br><br>
<label for="public">Public:</label><br>
<input type="radio" id="public" name="public" value="m" checked><span>HOMME</span><br>
<input type="radio" id="public" name="public" value="f" <?php if (isset($produit_selectionne['public']) && $produit_selectionne['public'] == 'f') echo 'checked'; ?>><span>FEMME</span><br>
<input type="radio" id="public" name="public" value="e" <?php if (isset($produit_selectionne['public']) && $produit_selectionne['public'] == 'e') echo 'checked'; ?>><span>ENFANT</span><br><br>
<label for="photo">Photo</label>
<input type="file" id="photo" name="photo"><br><br>
<?php if (isset($produit_selectionne)) { echo 'vous pouvez télécharger une autre photo si vous le souhaitez.';
echo '<img src="" alt="" width="100" height="auto"><br>';
echo '<input type="hidden" name="photo_actuelle" value="' . $produit_selectionne['photo'] . '">'; //Pour renseigner le $_POST['photo_actuelle'] qui va en base lorsqu'on clique sur valider
}
?>
<label for="prix">Prix:</label>
<input type="text" id="prix" name="prix" value="<?php if (isset($produit_a_supprimer['prix']))echo $produit_selectionne['prix']; ?>"><br><br>
<label for="stock">Stock:</label>
<input type="text" id="stock" name="stock" value="<?php if (isset($produit_a_supprimer['stock']))echo $produit_selectionne['stock']; ?>"><br><br>
<input type="submit" id="valider" value="Valider">
</form>
<?php
endif;
require_once('../inc/bas.inc.php');
?>