Kareylo,
il y a 10 ans
Ta variable $_POST['choix'] est un tableau et tu ne peux pas enregistrer un tableau en base de données
tapha kebe,
il y a 10 ans
Oui et donc comment je vais enregistrer mes valeurs? JE signale que dans la base de donnée l'index s'appel choix
Kareylo,
il y a 10 ans
$choix = implode(', ', $_POST['choix']);
tapha kebe,
il y a 10 ans
Oui ça j'ai eu à le faire avant mais l'erreur persistait.
Kareylo,
il y a 10 ans
Tu veux faire un var_dump($_POST) et poster le résultat ?
tapha kebe,
il y a 10 ans
Voici le résultat du var_dump($_POST)```
array (size=6)
'categorie' => string 'Maison' (length=6)
'choix' =>
array (size=1)
0 => string 'A louer' (length=7)
'post_titre' => string 'nnn' (length=3)
'prix' => string '45541' (length=5)
'adresse' => string 'vb' (length=2)
'post_content' => string 'fg' (length=2)
Kareylo,
il y a 10 ans
Donc, si on transforme en tableaur
$_POST = [
'categorie' => Maison',
'choix' => [ // Tableau !!!!!
0 => 'A louer'
],
'post_titre' => 'nnn',
'prix' => '45541',
'adresse' => 'vb',
'post_content' => 'fg'
];
Comme tu peux le voir, seul le "choix" est un tableau, tu dois donc faire en sorte d'avoir un string.
tapha kebe,
il y a 10 ans
Oui donc je vais faire un
$choix = $_POST['choix'];
$choix = implode(',' , $choix);
pour l'enregistrer dans la bdd puis le reconvertir avec
$choix = explode(',' , $choix)
Kareylo,
il y a 10 ans
Du moment que les données s'enregistrent bien en base de données, tu peux choisir le séparateur (ou la glue, selon la doc de PHP)
tapha kebe,
il y a 10 ans
D'accord, merci je vais tester après je te dirai
tapha kebe,
il y a 10 ans
Bon j'ai remis le implode en mettant dans la requete un $choix au lieu de $_POST['choix'}
$req= $pdo->prepare('INSERT INTO `posts`(`id_post`, `post_categorie_id`, `post_titre`, `post_date`, `photo`, `post_content`, `choix`, `post_view`, `prix`, `adresse`, `categorie`) VALUES (?,?,?,?,?,?,?,?,?,?,?)');
$req->execute(array(NULL,NULL, $titre,$date,$fichier, $commentaires,$choix,$post_view, $prix,$adresse, $categorie ));
L'erreur disparait certes mais en affiche une autre
Fatal error: in C:\wamp\www\site\forms.php on line 245
PDOException: in C:\wamp\www\site\forms.php on line 245
La ligne 245 est la ligne de l'execution de la requete.
tleb,
il y a 10 ans
Pourquoi tout le monde sur ce site croit qu'on est des magiciens ? Comment veux-tu qu'on t'aides si tu ne postes pas ton problème (précis) ? Dans ce cas, le message de l'exception est nécessaire pour résoudre ton problème.
tapha kebe,
il y a 10 ans
C'est quoi ton problème o juste? Qui te croit magicien toi?
Faut savoir parler aux gens sinon c mieux de se taire.
ish
Lartak,
il y a 10 ans
Bonjour.
Les messages d'erreurs que tu nous fournis ne sont pas assez précis.
D'aiileurs, si des données ne sont pas obligatoires pour l'insertion dans ta table, il est inutile de vouloir les définir dans ta requête SQL.
Il n'est pas impossible que tu aies une erreur concernant des données que tu passes dans la requête, mais sans message d'erreur précis, nous ne pourrons pas t'aider.
Tu devrais définir un ERRMODE_WARNING ou un ERRMODE_EXCEPTION et si possible, pendant tes essaies en développement, faire un try catch en utilisant la methode getMessage de PDOException.
Kareylo,
il y a 10 ans
L'erreur ne viendrait pas du fait que tu fournis un "id_post" à null alors que le champ est en auto-increment ?
tapha kebe,
il y a 10 ans
Bonjour Lartak.
Voici mon code
<div class="col-md-6">
<form method="POST" action="" enctype="multipart/form-data">
<div class="form-group">
<label>Catégorie</label>
<select name="categorie" class="form-control">
<option value="maison">Maison</option>
<option value="appartement">Appartement</option>
<option value="chambre">Chambre</option>
<option value="magasin">Magasin</option>
<option value="terrain">Terrain</option>
</select>
</div>
<div class="form-group">
<div class="checkbox">
<label>
<input type="checkbox" name="choix[]" value="A vendre">A vendre
</label>
<label>
<input type="checkbox" name="choix[]" value="A louer">A louer
</label>
</div>
</div>
<div class="form-group">
<label>Titre</label>
<input class="form-control" name="post_titre" placeholder="Ex: Chez M.X">
</div>
<div class="form-group">
<label>Prix</label>
<input class="form-control" name="prix" placeholder="Ex: 450 000 FCFA">
</div>
<div class="form-group">
<label>Adresse</label>
<input class="form-control" name="adresse" placeholder="Ex: Mermoz">
</div>
<div class="form-group">
<label>Photo</label>
<input type="file" name="photo">
<p class="help-block">Ajouter une photo à votre article.</p>
</div>
<div class="form-group">
<label>Commentaires</label>
<textarea class="form-control" name='post_content' rows="3"></textarea>
</div>
<button type="submit" class="btn btn-primary">Charger</button>
<button type="reset" class="btn btn-danger">Annuler</button>
</div>
</form>
</div>
</div>
Coté PHP
<?php
if ($_POST) {
var_dump($_POST);
var_dump($_FILES);
$post_view = 2;
$date = date("l F jS, Y - g:ia", time());
$categorie = $_POST['categorie'];
$choix = $_POST['choix'];
$choix = implode(',' , $choix);
$titre = $_POST['post_titre'];
$prix = $_POST['prix'];
$adresse = $_POST['adresse'];
$commentaires = $_POST['post_content'];
$photo_error = $_FILES['photo']['error'];
$photo_name = $_FILES['photo']['name'];
$photo_type = $_FILES['photo']['type'];
$photo_tmp_name = $_FILES['photo']['tmp_name'];
$photo_size = $_FILES['photo']['size'];
$extensionUpload = strtolower(substr(strrchr($_FILES['photo']['name'], '.'), 1));
var_dump($choix);
$array_types_images = array('image/png', 'image/jpg','image/jpeg','image/bmp', 'image/gif');
$taille_max= 1048576;
if ($photo_error ==0) {
if ($photo_size <= $taille_max) {
if (in_array($photo_type, $array_types_images)) {
//$chemin = getcwd(); si on transferait notre site dans une
// autre machine, on aura l'adresse de la photo exacte
$id = $photo_name;
$fichier = $id. ".". $extensionUpload;
$chemin = "../images/portfolio" .$id. ".".$extensionUpload;
if( move_uploaded_file($_FILES['photo']['tmp_name'], $chemin)){
echo "<img src='$chemin' alt='Photo immobilier' width='250px' height='250px'>";
require_once 'config.php';
$req= $pdo->prepare('INSERT INTO `posts`(`id_post`, `post_categorie_id`, `post_titre`, `post_date`, `photo`, `post_content`, `choix`, `post_view`, `prix`, `adresse`, `categorie`)
VALUES (?,?,?,?,?,?,?,?,?,?,?)');
$req->execute(array(NULL,NULL, $titre,$date,$fichier, $commentaires,$choix,$post_view, $prix,$adresse, $categorie ));
echo $req. '<br>';
print_r( $req). '<br>';
var_dump( $req). '<br>';
if ($req) {
echo "<h2 style='color:green'>Successful: </h2>";
}else echo "<h2 style='color:red'>Error:</h2>";
}
}else echo "Format invalide, veuillez choisir un fichier jpg, jpeg, png, bmp ou gif";
}else echo "Taille trop grande";
}else echo "Erreur de chargement du fichier";
}
?>
Lartak,
il y a 10 ans
C'est bien de fournir plus de code, mais dans ce cas là, ce qui nous aiderait plus par exemple, ce serait la structure de la table concernée par la requête et je le dit une fois de plus, des messages d'erreurs plus précis en rapport avec la requête.
tapha kebe,
il y a 10 ans
Oui j'ai supprimé le post_id de la requete et laisser mysql le gérer seul... Et maintenant ça marche...
MErci beaucoup....