Formulaire

Résolu/Fermé
je t'aime 19962 - 15 août 2016 à 12:25
 je t'aime 19962 - 17 août 2016 à 12:14
salut!..j'ai un problème de récupération de données dans ma base de données..Je veux que les données soient insérer dans une seule lignes mais chaque données s'insère dans une ligne..S'il vous plaît monter moi l'erreur ou est elle...:( !!

<head>

<meta charset="utf-8"/>

</head>

<?php

try{

$db=new PDO("mysql:host=localhost;dbname=php;charset=utf8",'root','');

$zone4=$_POST['date'];

$rej=$db->query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'journal';");

$k=0;

$i=0;

$zone=0;

while ( $donne[$k]=$rej->fetchColumn()){

$loi[$i++]=$donne[$k];

$k++;

}

for ($l=0; $l<count($loi) ; $l++) {

$zone=$_POST[$l];

$db->exec("INSERT INTO journal SET $loi[$l]=$_POST[$l], ',' ");

echo $loi[$l];

echo $zone;

$j++;}

?>

<br>

<?php

}catch(PDOException $e)

{

echo"$e";

die();

}

?>

3 réponses

Utilisateur anonyme
15 août 2016 à 13:12
Bon déjà 2-3 petits trucs, entoure ton code avec les balises code car sinon c'est dur de le lire. Ensuite pour afficher un <br> tu peux faire ça:

echo "<br>";

// Au lieu de ça:

?>
<br>
<?php


Après il y a aussi le header:


<?php
header('Content-Type: text/html; charset=utf-8');
...

// Au lieu de ça:
<head>
<meta charset="utf-8"/>
</head>
<?php
...


Ensuite ici tu peux changer aussi:


$loi[$i++]=$donne[$k];
$k++;

// Par:

$loi[]=$donne[$k++];


Car si tu met rien [] ça incrémente seul, et quand tu incrémente $k++ la valeur actuelle est retournée, donc tu peux oublier le $i=0.

Et à quoi sert ton $zone4=$_POST['date']; car tu le réutilises pas ensuite.

Après je ne comprend pas trop bien ce que tu veux dire par les données s'insèrent en plusieurs ligne et non une seule? Tu veux dire au niveau du INSERT INTO, pourquoi il y a plusieurs lignes dans la bases de données?
0
Bon j'ai fait des petits changement dans mon code au niveau des tables utilisées en essayant de faire des relations entres les tables avec des clés étrangères...mais j'ai encore un problème au niveau de la saisie dans la tabe "journal":

<!DOCTYPE html>
<html>

<?php
header('Content-Type: text/html; charset=utf-8');

try{


$db=new PDO("mysql:host=localhost;dbname=php;charset=utf8",'root','');


$red=$db->query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'journal';");
$rej=$db->query("SELECT nom_elem FROM element ");


$k=0;
$zone=0;
$p=0;


while ( $donne[$k]=$red->fetchColumn()){ 
$loi[]=$donne[$k++]; 
 
}


while ( $don[$p]=$rej->fetch()){ 
$lo[]=$don[$p++]; 
 
}



$moi=$db->exec("INSERT INTO `date` (id_date,`date`) VALUES ('','$_POST[date]')" );
 
for ($l=0; $l <count($lo); $l++) { 

$zone=$_POST[$l];
  
$db->exec("INSERT INTO  `journal` (id, id_aal, id_date, id_elem, valeur) VALUES ('','','','','$zone') ");
echo $zone;
echo "<br/>";
}




}catch(PDOException $e)
{
echo"$e";
die();

}  

?>

</html>


0
Utilisateur anonyme
16 août 2016 à 12:24
Que veux tu dire par problème d'insertion, car sans ta BDD et ton formulaire on comprend pas vraiment le résultat que tu obtiens et celui que tu espères donc soit plus precis

--
0
je t'aime 19962
16 août 2016 à 12:44
j'ai fait des captures d'écran à mon code pour que vous arriviez mieux a comprendre le problème..mais c'est impossible de les envoyées ici :(( !!
0
Utilisateur anonyme > je t'aime 19962
Modifié par ZeNairolf le 16/08/2016 à 12:47
Il faut les héberger sur un site comme ici: http://www.noelshack.com/ et copier le lien dans le forum. Après si tu peux montre la structure complète de ta BDD, ton formulaire, et expliquer le résultat que tu veux, on pourra t'aider.
0
je t'aime 19962
16 août 2016 à 12:55
http://image.noelshack.com/fichiers/2016/33/1471344528-img-6287.jpg
http://image.noelshack.com/fichiers/2016/33/1471344506-capture1.png
http://image.noelshack.com/fichiers/2016/33/1471344513-capture.png
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
16 août 2016 à 13:57
Bonjour,

Déjà, commence par mettre la connexion à ta BDD dans un fichier à part que tu n'auras inclure
dans les pages où tu en as besoin.
Pense aussi à y activer les erreurs PDO (option désactivée par défaut).
Comme ceci :
<?php
//Connexion à la BDD : Fichier cnxbdd.php
try{
  $db=new PDO("mysql:host=localhost;dbname=php;charset=utf8",'root','');
  //activation des erreurs PDO
	$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
}catch(PDOException $e){
 echo $e->getMessage();
 die();
}
?>


Ensuite, dans ton code :

<?php
//On met le header en utf8
header('Content-Type: text/html; charset=utf-8');


//Connexion à la BDD
require_once "cnxbdd.php";

//initialisation des variables
$k=0;
$i=0;
$zone=0;

//Récupération "propre" des variables de ton formulaire : 
$zone4=!empty($_POST['date']) ? $_POST['date'] : NULL ;


//...le reste de ton code
?>


Ensuite, au lieu de faire des boucles sur tes résultats (via des fetch...) pourquoi n'utilises-tu pas un fetchAll() ?


Pour finir, je t'invite fortement à lire ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Puis à utiliser les requêtes préparées.
NB : Pour mettre à jour une ligne dans ta table .... il faut utiliser un UPDATE et non un INSERT.


PS: Pour poster des images sur le forum il suffit d'utiliser le bouton REPONDRE (au lieu de passer par les commentaires...) un bouton permettant l'ajout d'images est alors présent.

0
je t'aime 19962
17 août 2016 à 12:14
Je vous remercie beaucoup pour votre aide..L'erreur s'est affiché et je l'ai résolu ..Et ce qui concerne le UPDATE je vais pas l'utiliser à la place de INSERT INTO car je veux insérer, pas modifier...et à propos de :

//Premiere expression;
$loi[]=$donne[$k];
$k++;

//Deuxieme expression:

$loi[]=$donne[$k++];

c'est pas vraiment la même chose..j'obtient pas le même résultats.

Et encore une fois mercii beaucoup pour ton aide...=D !!
0