Upload de plusieurs fichiers

Fermé
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 - 5 sept. 2018 à 22:46
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 6 sept. 2018 à 00:24
Bonjour,

Je dois dans la partie admin de mon nouveau site, permettre l'upload de plusieurs fichiers, hors lorsque je teste l'ajout, il me renvoi le message définit "erreur lors du transfert du visuel".

Voici le code en question :

<?php
session_start();
$title = "Comité Départemental Olympique et Sportif de Seine-Saint-Denis";
include ("include/inc.header.php");
?>
<div class="row admin">
<?php
include ("include/inc.nav.php");
?>
<div class="col-12 col-md-8 bandeau_menu p-0">
<h2>actus</h2>

<?php
if (isset($_GET["action"])) {
$action = $_GET["action"]; # code...
} else {

$action = "lister";
}

switch ($action) {
//// POUR AJOUTER UN FICHIER
case 'ajouter':
if (empty($_POST["validation"])) {


?>
<form method="post" action="actus.php?action=ajouter">
<input type="hidden" name="validation" value="ok">
<div class="form-group">
<div class="form-group form-inline">
<label for="visuel">Visuel</label>
<input type="file" class="form-control" id="visuel" name="visuel" required accept="image/jpeg, image/x-png">
</div>
<div class="form-group form-inline">
<label for="titre">Titre </label>
<input type="text" class="form-control" name="titre" id="titre" placeholder="nom du fichier" required>
</div>
<div class="form-group form-inline">
<label for="contenu">Contenu</label>
<textarea class="form-control" rows="3" id="contenu" name="contenu" required></textarea>
</div>
<div class="form-group form-inline">
<label for="document">Document</label>
<input type="file" class="form-control" id="document" name="document" required accept="application/pdf, image/jpeg, image/x-png">
</div>
<div class="form-group form-inline">
<label for="fichier">Fichier</label>
<input type="file" class="form-control" id="fichier" name="fichier" required accept="application/pdf, image/jpeg, image/x-png">
</div>
<div class="form-group form-inline">
<label for="lien">Lien</label>
<textarea class="form-control" rows="3" id="lien" name="lien" required></textarea>
</div>
<div class="form-group form-inline">
<label for="ladate">Date</label>
<input type="text" class="form-control" id="ladate" name="ladate" required readonly>
<script>
$("#ladate").datepicker();
$("#ladate").datepicker("option", "dateFormat", "yy-mm-dd");

</script>
</div>
<div class="form-check form-check-inline">
<label for="etat">Etat</label>
<select name="etat" id="etat">
<option value="0">Inactif</option>
<option value="1">Actif</option>
</select>
</div>
</div>
<input class="btn btn-primary" type="submit" value="Ajouter">
</form>

<?php
}
else {
/// TRAITEMENT DES FICHIERS
if (!isset($_FILES) OR !isset($_FILES['visuel']) OR ($_FILES['visuel']['name'] <> "" AND $_FILES['visuel']['error'] > 0 )) {
echo '<p class="alert alert-danger">Erreur lors du transfert du visuel</p>';
break;
}
if (!isset($_FILES) OR !isset($_FILES['document']) OR ($_FILES['document']['name'] <> "" AND $_FILES['document']['error'] > 0 )) {
echo '<p class="alert alert-danger">Erreur lors du transfert du document</p>';
break;
}
if (!isset($_FILES) OR !isset($_FILES['fichier']) OR ($_FILES['fichier']['name'] <> "" AND $_FILES['fichier']['error'] > 0 )) {
echo '<p class="alert alert-danger">Erreur lors du transfert du fichier</p>';
break;
}
/// GENERER UN NOM DE visuel UNIQUE
$NomvisuelFinal = uniqid(rand())."-".clean($_FILES['visuel']['name']);
move_uploaded_file($_FILES['visuel']['tmp_name'],'../actus/visuel/'.$NomvisuelFinal);
$NomdocumentFinal = uniqid(rand())."-".clean($_FILES['document']['name']);
move_uploaded_file($_FILES['document']['tmp_name'],'../actus/document/'.$NomdocumentFinal);
$NomfichierFinal = uniqid(rand())."-".clean($_FILES['fichier']['name']);
move_uploaded_file($_FILES['fichier']['tmp_name'],'../actus/fichier/'.$NomfichierFinal);
/// INDIQUE AU SERVEUR BDD QUE L'ON VA EFFECTUER UNE REQUETTE QUI VA MODIFIER LE NOMBRE D'ENREGISTREMENT
$bdd->beginTransaction();
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$requete = "INSERT INTO `actus` (`visuel`, `titre`, `contenu`, `document`, `fichier`, `lien`, `ladate`, `etat`) VALUES (?, ?, ?, ?, ?, ?, ?)";
$reponse = $bdd->prepare($requete);
$reponse->execute(array($NomvisuelFinal, $_POST['titre'], $_POST['contenu'], $NomdocumentFinal, $NomfichierFinal, $_POST['lien'], $_POST['ladate'], $_POST['etat']));
$bdd->commit();
echo '<p class="alert alert-success"><i class="fas fa-check-circle"></i> Tout c\'est bien passé votre nouvelle actu a bien été ajoutée, Féliciations !!!</p>';
echo '<p><a href="actus.php?action=ajouter" class="btn btn-success ajout"><i class="fas fa-plus"></i> ajouter une actu</a> <a href="actus.php" class="btn btn-light"><i class="fas fa-list-ol"></i> retour liste</a></p>';
}
break;
//// POUR MODIFIER UN FICHIER
case 'modifier':
if (empty($_POST["validation"])) {
$requete = "SELECT *
FROM `actus`
WHERE id=".$_GET['id'];
$reponse = $bdd->prepare($requete);
$reponse->execute();
while ($ligne=$reponse->fetch(PDO::FETCH_OBJ)) {
?>
<form method="post" action="actus.php?action=modifier&id=<?php echo $_GET['id']; ?>">
<input type="hidden" name="validation" value="ok">
<div class="form-group">
<div class="form-group form-inline">
<label for="document">Visuel</label>
<input type="file" class="form-control" id="visuel" name="visuel" value="<?php echo htmlspecialchars($ligne->visuel); ?>" required accept="image/jpeg, image/x-png">
</div>
<div class="form-group form-inline">
<label for="titre">Titre </label>
<input type="text" class="form-control" name="titre" id="titre" placeholder="nom du fichier" value="<?php echo htmlspecialchars($ligne->titre); ?>" required>
</div>
<div class="form-group form-inline">
<label for="contenu">Contenu</label>
<textarea class="form-control" rows="3" id="contenu" name="contenu" required><?php echo htmlspecialchars($ligne->contenu); ?></textarea>
</div>
<div class="form-group form-inline">
<label for="document">Document</label>
<input type="file" class="form-control" id="document" name="document" value="<?php echo htmlspecialchars($ligne->document); ?>" required accept="image/jpeg, image/x-png, application/pdf">
</div>
<div class="form-group form-inline">
<label for="fichier">Fichier</label>
<input type="file" class="form-control" id="fichier" name="fichier" value="<?php echo htmlspecialchars($ligne->fichier); ?>" required accept="image/jpeg, image/x-png, application/pdf">
</div>
<div class="form-group form-inline">
<label for="lien">Lien</label>
<textarea class="form-control" rows="3" id="lien" name="lien" required><?php echo htmlspecialchars($ligne->lien); ?></textarea>
</div>
<div class="form-group form-inline">
<label for="ladate">Date</label>
<input type="text" class="form-control" id="ladate" name="ladate" value="<?php echo htmlspecialchars($ligne->ladate); ?>" required readonly>
<script>
$("#ladate").datepicker();
$("#ladate").datepicker("option", "dateFormat", "yy-mm-dd");

</script>
</div>
<div class="form-check form-check-inline">
<label for="etat">Etat</label>
<select name="etat" id="etat">
<option value="0" <?php
if ($ligne->etat == 0) {
echo "selected";
}
?>
>Inactif</option>

<option value="1" <?php
if ($ligne->etat == 1) {
echo "selected";
}
?>
>Actif</option>
</select>
</div>
</div>
<input class="btn btn-primary" type="submit" value="Modifier">
</form>
<?php
}
}
else {
$bdd->beginTransaction();
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$requete = "UPDATE `actus` SET titre=?, contenu=?, document=?, fichier=?, lien=?, ladate=?, etat=? WHERE id=?";
$reponse = $bdd->prepare($requete);
$reponse->execute(array($_POST['titre'], $_POST['contenu'], $_POST['document'], $_POST['fichier'], $_POST['lien'], $_POST['ladate'], $_POST['etat'], $_GET['id']));
$bdd->commit();
echo '<p class="alert alert-success"><i class="fas fa-check-circle"></i> Tout c\'est bien passé votre actu a bien été mofifiée, Féliciations !!!</p>';
echo '<p><a href="actus.php?action=ajouter" class="btn btn-success ajout"><i class="fas fa-plus"></i> ajouter une actu</a> <a href="actus.php" class="btn btn-light"><i class="fas fa-list-ol"></i> retour liste</a></p>';
}
break;
//// POUR SUPPRIMER UN FICHIER
case 'supprimer':
$bdd->beginTransaction();
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$requete = "DELETE FROM `actus` WHERE id=?";
$reponse = $bdd->prepare($requete);
$reponse->execute(array($_GET['id']));
$bdd->commit();
echo '<p class="alert alert-success"><i class="fas fa-check-circle"></i> Tout c\'est bien passé votre actu a bien été supprimée, Féliciations !!!</p>';
echo '<p><a href="actus.php?action=ajouter" class="btn btn-success ajout"><i class="fas fa-plus"></i> ajouter une actu</a> <a href="actus.php" class="btn btn-light"><i class="fas fa-list-ol"></i> retour liste</a></p>';
break;
//// POUR LISTER UN FICHIER
case 'lister':
default:
if (!empty($_GET["id"])) {
$etat = 0;
if ($_GET['etat'] == 0) {
$etat = 1;
}
$bdd->beginTransaction();
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$requete = "UPDATE `actus` SET etat=? WHERE id=?";
$reponse = $bdd->prepare($requete);
$reponse->execute(array($etat, $_GET['id']));
$bdd->commit();
}
$requete = "SELECT *
FROM `actus`
WHERE 1";
$reponse = $bdd->prepare($requete);
$reponse->execute();
?>
<p><a href="actus.php?action=ajouter" class="btn btn-success"><i class="fas fa-plus"></i> ajouter</a></p>
<table class="table table-striped table-dark table-sm">
<thead>
<tr>
<th class="text-center" scope="col">N°</th>
<th class="text-center" scope="col">titre</th>
<th class="text-center" scope="col">contenu</th>
<th class="text-center" scope="col">document</th>
<th class="text-center" scope="col">fichier</th>
<th class="text-center" scope="col">lien</th>
<th class="text-center" scope="col">date</th>
<th class="text-center" scope="col">etat</th>
<th class="text-center" scope="col">modifier</th>
<th class="text-center" scope="col">supprimer</th>
</tr>
</thead>
<tbody>
<?php
while ($ligne=$reponse->fetch(PDO::FETCH_OBJ)) {
?>
<tr>
<th class="text-center" scope="row"><?php echo $ligne->id; ?></th>
<td><?php echo $ligne->titre; ?></td>
<td><?php echo $ligne->contenu; ?></td>
<td><?php echo $ligne->document; ?></td>
<td><?php echo $ligne->fichier; ?></td>
<td><?php echo $ligne->lien; ?></td>
<td><?php echo donnedateFR($ligne->ladate); ?></td>
<td class="text-center color_<?php echo $ligne->etat; ?>" ><a href="actus.php?action=uptdateetat&id=<?php echo $ligne->id; ?>&etat=<?php echo $ligne->etat; ?>"><i class="fas fa-lightbulb"></i></a></td>
<td class="text-center"><a href="actus.php?action=modifier&id=<?php echo $ligne->id; ?>"><i class="fas fa-edit"></i></a></td>
<td class="text-center"><a href="actus.php?action=supprimer&id=<?php echo $ligne->id; ?>" onclick="if (!confirm('Etes-vous de vouloir supprimer ?')) return false;"><i class="fas fa-times-circle"></i></a></td>
</tr>
<?php } ?>
</tbody>
</table>
<p>Pour ajouter une actu cliquez sur le bouton <a href="actus.php?action=ajouter" class="btn btn-success"><i class="fas fa-plus"></i> ajouter</a></p>
<?php
break;
}

?>
</div>

</div>
<?php
include ("include/inc.footer.php");
?>


Si quelqu'un peu me conseiller, j'ai vu qu'il y avait la possibilité de préciser un upload "multiple", mais du coup je n'ai pas compris la formulation pour récupérer les noms des fichiers.

D'avance merci,

Laetitia,
A voir également:

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
6 sept. 2018 à 00:24
Bonjour
Deja ii me semble que ton form n'a pas le enctype
enctype="multipart/form-data"


Apres...ton code est un peu bordelique...
Commence par ca

https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.
0