Je suis débutant en php et je travaille sur un projet de e-commerce.
J'ai passé 3 mois jour pour jour, à chercher à uploader des images via 6 input séparément et à les prévisualiser avant l'envoie dans la base de données.
Mes recherches sur l'upload de plusieurs images via les input séparés n'ont pas donné gain de cause. Il n'existe que des scripts permettant d'uploader plusieurs images à la fois via un seul input. Ce qui ne répond pas à ma demande.
J'ai réussie finalement après 3 mois de galère à uploader des images via des inputs séparés, mais le souci est que l'annonceur est obligé de joindre les 6 images, sinon le script ne marche pas.
Ma demande est la suivante : Comment permettre à l'annonceur de joindre le nombre d'images qu'il veut avec mon script que voici ? Ou bien si vous avez un script similaire qui répond à ma demande, je vous prie de le partager avec moi.
Formulaire d'envoie:
produits.php:
Code : Tout sélectionner
<div class="box-body">
<form name="myForm" action="adminok.php?cat=annonce&action=creer&c=a" method="post" enctype="multipart/form-data">
<?php
include("identifiants.php");
$stmt = $pdo->prepare('SELECT membre_id, utilisateur, membre_email,cat_id, cat_nom
FROM annonce_membres
LEFT JOIN annonce_categorie ON annonce_categorie.cat_id = annonce_categorie.cat_id
WHERE membre_email=:val1 ORDER BY cat_id DESC');
$stmt->bindValue(':val1',$_SESSION['email'], PDO::PARAM_STR);
$stmt->execute();
$data = $stmt->fetch()
?>
<div class="form-group">
<input type="hidden" class="form-control" name="user" value="<?php echo htmlentities(trim($data['utilisateur'])); ?>" placeholder="" required/>
</div>
<div class="form-group">
<?php
include("includes/identifiants.php");
$balises = true;
$stmt = $pdo->query('SELECT cat_id, cat_nom FROM annonce_categorie ORDER BY cat_id DESC');
echo'<select type="radio" name="cat" class="form-control" required/>
<option value="#">Catégorie</option>';
while($data = $stmt->fetch())
{
echo'<option value="'.$data['cat_id'].'">'.$data['cat_nom'].'</option>';
}
echo'</select>';
$stmt->CloseCursor();
?>
</div>
<div class="form-group">
<input type="text" class="form-control" name="titre" value="" placeholder="Nom du Produit" required/>
</div>
<div class="form-group">
<label for="type">Choisir le type si nécéssaire:</label>
<select name="type" id="type" class="form-control">
<option value="#">.....</option>
<option value="Homme">Homme</option>
<option value="Femme">Femme</option>
<option value="Enfant">Enfant</option>
</select>
</div>
<div class="form-group">
<input type="number" class="form-control" name="price" value="" placeholder="Prix du Produit" required/>
</div>
<div class="form-group">
<select name="disponibilite" class="form-control" required="required" onChange=" change(this.value)">
<option value="#">Choisir disponibilité</option>
<option value="dispo">Disponible</option>
<option value="indispo">Non disponible</option>
<option value="Sur commande">Sur commande</option>
</select>
<img id ="affiche_image" src ="">
</div>
<div class="form-group">
<input type="hidden" class="form-control" name="devise" value="FCFA"/>
</div>
<p class="help-block">Max: 10MB</p>
<div class="form-group">
<div class="group">
<input type="file" name="avatar[0]" class="disposition" multiple accept=".png, .PNG,.jpg, .JPG, .jpeg, .JPEG" required/>
<div class="dispo" id="preview-avatar[0]"></div>
</div>
<div class="group">
<input type="file" name="avatar[1]" class="disposition" multiple accept=".png, .PNG,.jpg, .JPG, .jpeg, .JPEG" />
<div class="dispo" id="preview-avatar[1]"></div>
</div>
<div class="group">
<input type="file" name="avatar[2]" class="disposition" multiple accept=".png, .PNG,.jpg, .JPG, .jpeg, .JPEG" />
<div class="dispo" id="preview-avatar[2]"></div>
</div>
<div class="group">
<input type="file" name="avatar[3]" class="disposition" multiple accept=".png, .PNG,.jpg, .JPG, .jpeg, .JPEG" />
<div class="dispo" id="preview-avatar[3]"></div>
</div>
<div class="group">
<input type="file" name="avatar[4]" class="disposition" multiple accept=".png, .PNG,.jpg, .JPG, .jpeg, .JPEG" />
<div class="dispo" id="preview-avatar[4]"></div>
</div>
<div class="group">
<input type="file" name="avatar[5]" class="disposition" multiple accept=".png, .PNG,.jpg, .JPG, .jpeg, .JPEG" />
<div class="dispo" id="preview-avatar[5]"></div>
</div>
</div><br/><br/><br/><br/><br/>
<div class="form-group"> <br/>
<textarea name="detail" rows="2" cols="2" class="form-control" placeholder="Description"></textarea>
</div>
<div class="card-footer">
<div class="float-right">
<button type="submit" name="envoyer" class="btn btn-primary">
<i class="ion ion-person-add"></i> Publier</button>
</div>
<button type="reset" class="btn btn-default"><i class="fas fa-times"></i> Annuler</button>
</div>
</form>
<script src="jsuploader/upload2.js"> </script>
</div>adminok.php:
Code : Tout sélectionner
{
case "creer":
//On commence par les annonces
if ($_GET['c'] == "a") {
$i=0;
$utilisateur = filter_input(INPUT_POST, 'user');
$titre = filter_input(INPUT_POST, 'titre');
$type = filter_input(INPUT_POST, 'type');
$disponibilite = filter_input(INPUT_POST, 'disponibilite');
$detail = filter_input(INPUT_POST, 'detail');
$cat = filter_input(INPUT_POST, 'cat');
$prix = filter_input(INPUT_POST, 'price');
$devise = filter_input(INPUT_POST, 'devise');
$utilisateur = $_POST['user'];
$titre = $_POST['titre'];
$type = $_POST['type'];
$disponibilite = $_POST['disponibilite'];
$prix = $_POST['price'];
$devise = $_POST['devise'];
$detail = $_POST['detail'];
$cat = (int) $_POST['cat'];
$fichier0=(!empty($_FILES['avatar'][0]))?move_avatar($_FILES['avatar'][0]):'';
$fichier1=(!empty($_FILES['avatar'][1]))?move_avatar($_FILES['avatar'][1]):'';
$fichier2=(!empty($_FILES['avatar'][2]))?move_avatar($_FILES['avatar'][2]):'';
$fichier3=(!empty($_FILES['avatar'][3]))?move_avatar($_FILES['avatar'][3]):'';
$fichier4=(!empty($_FILES['avatar'][4]))?move_avatar($_FILES['avatar'][4]):'';
$fichier5=(!empty($_FILES['avatar'][5]))?move_avatar($_FILES['avatar'][5]):'';
if (isset($_POST['envoyer'])) {
$dossier = '../images/avatars/';
$taille_maxi = 18000000;
$extensions = array('.jpg', '.jpeg', '.png', '.JPEG', '.JPG', '.PNG');
$fichier_temp= $_FILES['avatar']['tmp_name'][$i];
$extension= strrchr($_FILES['avatar']['name'][$i], '.');
$nbfichiersEnvoyes = count($fichier_temp);
for ($i=0; $i<$nbfichiersEnvoyes; $i++) {
$fichier0= basename($_FILES['avatar']['name'][0]);
$fichier1= basename($_FILES['avatar']['name'][1]);
$fichier2= basename($_FILES['avatar']['name'][2]);
$fichier3= basename($_FILES['avatar']['name'][3]);
$fichier4= basename($_FILES['avatar']['name'][4]);
$fichier5= basename($_FILES['avatar']['name'][5]);
$fichier_temp0= $_FILES['avatar']['tmp_name'][0];
$fichier_temp1= $_FILES['avatar']['tmp_name'][1];
$fichier_temp2= $_FILES['avatar']['tmp_name'][2];
$fichier_temp3= $_FILES['avatar']['tmp_name'][3];
$fichier_temp4= $_FILES['avatar']['tmp_name'][4];
$fichier_temp5= $_FILES['avatar']['tmp_name'][5];
$taille0= filesize($_FILES['avatar']['tmp_name'][0]);
$taille1= filesize($_FILES['avatar']['tmp_name'][1]);
$taille2= filesize($_FILES['avatar']['tmp_name'][2]);
$taille3= filesize($_FILES['avatar']['tmp_name'][3]);
$taille4= filesize($_FILES['avatar']['tmp_name'][4]);
$taille5= filesize($_FILES['avatar']['tmp_name'][5]);
$extension0= strrchr($_FILES['avatar']['name'][0], '.');
$extension1= strrchr($_FILES['avatar']['name'][1], '.');
$extension2= strrchr($_FILES['avatar']['name'][2], '.');
$extension3= strrchr($_FILES['avatar']['name'][3], '.');
$extension4= strrchr($_FILES['avatar']['name'][4], '.');
$extension5= strrchr($_FILES['avatar']['name'][5], '.');
if ($taille0>$taille_maxi)
$erreur= 'Le fichier'.$fichier0.' est trop gros...';
if ($taille1>$taille_maxi)
$erreur= 'Le fichier'.$fichier1.' est trop gros...';
if ($taille2>$taille_maxi)
$erreur= 'Le fichier'.$fichier2.' est trop gros...';
if ($taille3>$taille_maxi)
$erreur= 'Le fichier'.$fichier3.' est trop gros...';
if ($taille4>$taille_maxi)
$erreur= 'Le fichier'.$fichier4.' est trop gros...';
if ($taille5>$taille_maxi)
$erreur= 'Le fichier'.$fichier5.' est trop gros...';
if (!isset($erreur)) {
$fichier0 = strtr($fichier0, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier1 = strtr($fichier1, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier2 = strtr($fichier2, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier3 = strtr($fichier3, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier4 = strtr($fichier4, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier5 = strtr($fichier5, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier0 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier0);
$fichier1 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier1);
$fichier2 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier2);
$fichier3 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier3);
$fichier4 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier4);
$fichier5 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier5);
} else
echo $erreur;
}
}
if (in_array($extension0, $extensions))
if(!in_array($extension1, $extensions))
if (in_array($extension2, $extensions))
if(in_array($extension3, $extensions))
if (in_array($extension4, $extensions))
if(in_array($extension5, $extensions))
{
if (move_uploaded_file($fichier_temp0, $dossier. $fichier0))
if (move_uploaded_file($fichier_temp1, $dossier. $fichier1))
if (move_uploaded_file($fichier_temp2, $dossier. $fichier2))
if (move_uploaded_file($fichier_temp3, $dossier. $fichier3))
if (move_uploaded_file($fichier_temp4, $dossier. $fichier4))
if (move_uploaded_file($fichier_temp5, $dossier. $fichier5))
{
$stmt = $pdo->prepare('INSERT INTO annonce_table (annonce_cat_id, utilisateur, type, titre, disponibilite, prix, devise, detail, annonce_avatar0, annonce_avatar1, annonce_avatar2, annonce_avatar3, annonce_avatar4, annonce_avatar5, date)
VALUES (:cat, :user, :type, :titre, :disponibilite, :prix, :devise, :detail, :annonce_avatar0, :annonce_avatar1, :annonce_avatar2, :annonce_avatar3, :annonce_avatar4, :annonce_avatar5, NOW())');
$stmt->bindValue(':cat',$cat,PDO::PARAM_INT);
$stmt->bindValue(':user',$utilisateur,PDO::PARAM_STR);
$stmt->bindValue(':type',$type,PDO::PARAM_STR);
$stmt->bindValue(':titre',$titre,PDO::PARAM_STR);
$stmt->bindValue(':disponibilite',$disponibilite,PDO::PARAM_STR);
$stmt->bindValue(':prix',$prix,PDO::PARAM_STR);
$stmt->bindValue(':devise',$devise,PDO::PARAM_STR);
$stmt->bindValue(':detail',$detail,PDO::PARAM_STR);
$stmt->bindValue(':annonce_avatar0',$fichier0,PDO::PARAM_STR);
$stmt->bindValue(':annonce_avatar1',$fichier1,PDO::PARAM_STR);
$stmt->bindValue(':annonce_avatar2',$fichier2,PDO::PARAM_STR);
$stmt->bindValue(':annonce_avatar3',$fichier3,PDO::PARAM_STR);
$stmt->bindValue(':annonce_avatar4',$fichier4,PDO::PARAM_STR);
$stmt->bindValue(':annonce_avatar5',$fichier5,PDO::PARAM_STR);
$stmt->execute();
echo'<button type="button" class="btn btn-success toastrDefaultSuccess">
Votre annonce est publiée avec succès
</button>';
$url = "../Espace_perso.php";
if (!headers_sent()) {
header('Location: '.$url);
exit;
} else {
echo '<script type="text/javascript">';
echo 'window.location.href="'.$url.'";';
echo '</script>';
exit;
}
$stmt->CloseCursor();
} else {
$erreur = 'L\'annonce pas été publiée. Veuillez joindre une image';
}
} else {
$message[] = 'Extension de fichiers non valide !';
}
}
}annonce_table:
Code : Tout sélectionner
CREATE TABLE `annonce_table` (
`annonce_id` int(11) NOT NULL,
`type` varchar(120) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`titre` varchar(100) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
`prix` varchar(120) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`devise` varchar(100) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`annonce_cat_id` mediumint(8) NOT NULL,
`detail` text CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`date` datetime NOT NULL,
`annonce_avatar0` varchar(100) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
`annonce_avatar1` varchar(100) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
`annonce_avatar2` varchar(100) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
`annonce_avatar3` varchar(100) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
`annonce_avatar4` varchar(100) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
`annonce_avatar5` varchar(100) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
`utilisateur` varchar(30) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
`disponibilite` varchar(30) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `annonce_table`
ADD PRIMARY KEY (`annonce_id`);
ALTER TABLE `annonce_table`
MODIFY `annonce_id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;Je vous remercie d'avance pour votre aide.