Bonjour,
Voila je rencontre un petit problème avec mon code.
Je fais un actuellement un projet en php et je voudrais upload des images sur ma base de donnée.
<?php
require_once 'db.php';
require_once 'header.php';
if (!empty($_FILES['photo']) && !empty($_POST['immatriculation']) && !empty($_POST['marque']) && !empty($_POST['prix'])) {
$immatriculation = $_POST['immatriculation'];
$marque = $_POST['marque'];
$prix = $_POST['prix'];
$photo = $_POST['photo'];
$file_name = $_FILES['photo']['name'];
$file_extension = strchr($file_name, ".");
$file_tmp_name = $_FILES['photo']['tmp_name'];
$file_dest = 'files/' . $file_name;
$extensions_autorisees = array('jpg', 'jpeg', 'png');
if (in_array($file_extension, $extensions_autorisées)) {
if (move_uploaded_file($file_tmp_name, $file_dest)) {
$sql = 'INSERT INTO automobile(`Immatriculation`, `Marque`, `Prix`, `Photo`) VALUES(:marque, :immatriculation, :prix, :photo)';
if ($statement = $dbh->prepare($sql)) {
$statement->bindParam(':immatriculation', $immatriculation, PDO::PARAM_STR);
$statement->bindParam(':marque', $marque, PDO::PARAM_STR);
$statement->bindParam(':prix', $prix, PDO::PARAM_STR);
$statement->bindParam(':photo', $photo, PDO::PARAM_STR);
if ($statement->execute()) {
$message = 'données envoyées avec succés';
}
} else {
echo 'Une erreur est survenue lors de l\'envoie du fichier';
}
} else {
echo 'Seuls les fichiers jpg, jpeg et png sont autorisés';
}
}
}
?>
<div class="card bg-info mt-5 col-8">
<div class="card-header">
<h2>Créer votre annonces</h2>
</div>
<div class="card-body">
<?php if (!empty($message)) : ?>
<div class=" text-center alert alert-success">
<?= $message ?>
</div>
<?php endif; ?>
<form method="POST" enctype="multipart/form-data">
<div class="form-group">
<label for="name">Marque</label>
<input type="text" name="marque" id="marque" class="form-control">
</div>
<div class="form-group">
<label for="mail">Immatriculation</label>
<input type="text" name="immatriculation" id="immatriculation" class="form-control">
</div>
<div class="form-group">
<label for="mail">Prix</label>
<input type="number" name="prix" id="prix" class="form-control">
</div>
<div class="form-group">
<label for="mail">Image</label>
<input type="file" name="photo" id="image" class="form-control">
</div>
<div class="form-group">
<input type="submit" value="Valider" class="btn btn-success">
</div>
</form>
</div>
</div>
</div>
Malheuresement rien ne s'affiche sur ma bdd.
Bonsoir,
1/ pas d'accents dans les noms de variables
2/ Actives les erreurs PDO (cf la doc)
3/ A quel moment fais-tu $photo = ? ( idem pour $marque, $prix, $immatriculation)
J'ai retiré l'accent, j'ai remis les variables au debut mais je n'arrive pas à activé les erreurs php
le nouveau, code je dois le deviner ?
Poste ton nouveau code pour voir si tu n'as pas fait d'erreur, merci.
ah oui comme ça je passe pour un idiot, c'est gentil. Le fil de la conversation ne veux plus rien dire. Merci
On post le nouveau code dans un nouveau message, comme ça on peut suivre les modifications
$_POST['photo'] n'existe pas puisque l'input est de type file.
Donc $photo devrait correspondre à autre chose ($file_name, non ?)
Autant pour moi c'est mon problème que je post sur un forum.
if (!empty($_FILES['photo']) && !empty($_POST['immatriculation']) && !empty($_POST['marque']) && !empty($_POST['prix'])) {
$immatriculation = $_POST['immatriculation'];
$marque = $_POST['marque'];
$prix = $_POST['prix'];
$photo = $_FILES['photo'];
$file_name = $_FILES['photo']['name'];
$file_extension = strchr($file_name, ".");
$file_tmp_name = $_FILES['photo']['tmp_name'];
$file_dest = 'files/' . $file_name;
$extensions_autorisees = array('jpg', 'jpeg', 'png');
if (in_array($file_extension, $extensions_autorisées)) {
if (move_uploaded_file($file_tmp_name, $file_dest)) {
$sql = 'INSERT INTO automobile(`Immatriculation`, `Marque`, `Prix`, `Photo`) VALUES(:marque, :immatriculation, :prix, :photo)';
if ($statement = $dbh->prepare($sql)) {
$statement->bindParam(':immatriculation', $immatriculation, PDO::PARAM_STR);
$statement->bindParam(':marque', $marque, PDO::PARAM_STR);
$statement->bindParam(':prix', $prix, PDO::PARAM_STR);
$statement->bindParam(':photo', $photo, PDO::PARAM_STR);
if ($statement->execute()) {
$message = 'données envoyées avec succés';
}
} else {
echo 'Une erreur est survenue lors de l\'envoie du fichier';
}
} else {
echo 'Seuls les fichiers jpg, jpeg et png sont autorisés';
}
}
}
j'ai remis $photo = $_FILES['photo']
et $_FILES['photo'], il vaut quoi ?
un petit var_dump($_FILES['photo'] ..... pour te donner une idée
As-tu activé les erreurs PDO (cf la doc de new PDO)
j'ai ça comme résultat du dump:
array(5) { ["name"]=> string(10) "classA.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpq5UMyL" ["error"]=> int(0) ["size"]=> int(47856) }.
Mais je viens de remarquer que le var_dump ne fonctionne pas quand je rentre dans le second if.
oui car tu n'as pas corrigés les accents dans les noms de variables
ensuite tu ne vas pas mettre un "array" dans $photo....
if (!empty($_FILES['photo']) && !empty($_POST['immatriculation']) && !empty($_POST['marque']) && !empty($_POST['prix'])) {
$immatriculation = $_POST['immatriculation'];
$marque = $_POST['marque'];
$prix = $_POST['prix'];
$photo = $_FILES['photo'];
$file_name = $_FILES['photo']['name'];
$file_extension = strchr($file_name, ".");
$file_tmp_name = $_FILES['photo']['tmp_name'];
$file_dest = 'files/' . $file_name;
$extensions_autorisees = array('jpg', 'jpeg', 'png');
if (in_array($file_extension, $extensions_autorisees)) {
if (move_uploaded_file($file_tmp_name, $file_dest)) {
$sql = 'INSERT INTO automobile(`Immatriculation`, `Marque`, `Prix`, `Photo`) VALUES(:marque, :immatriculation, :prix, :photo)';
if ($statement = $dbh->prepare($sql)) {
$statement->bindParam(':immatriculation', $immatriculation, PDO::PARAM_STR);
$statement->bindParam(':marque', $marque, PDO::PARAM_STR);
$statement->bindParam(':prix', $prix, PDO::PARAM_STR);
$statement->bindParam(':photo', $photo, PDO::PARAM_STR);
if ($statement->execute()) {
$message = 'données envoyées avec succés';
}
} else {
echo 'Une erreur est survenue lors de l\'envoie du fichier';
}
} else {
echo 'Seuls les fichiers jpg, jpeg et png sont autorisés';
}
}else{
echo'faux';
}
}
je ne rentre pas dans la seconde condition