Probleme avec PDO et BDD

gintoxic Messages postés 566 Statut Membre -  
gintoxic Messages postés 566 Statut Membre -
bonjour,
je suis tout nouveau avec PDO et php (que j'essaie de comprendre depuis des années et alors que je souhaite entreprendre un apprentissage forcé, je tombe nez à nez avec un petit probleme sûrement de synthaxe d'ailleurs.
j'ai recherché partout des sujets[résolus], des tutos et des cours (le SDZ entre autre) sans arriver à trouver une solution.

où j'en suis ?
j'ai un formulaire basique et court (nom et commentaire) et je souhaite en premier lieu entrer dans ma base de donnée le pseudo et le message pour ensuite le ressortir via php
la connexion a l'air de se faire (pas de message d'erreur) mon script "formulaire" passe correctement, mais rien ne rentre dans la BDD

pourriez-vous m'aider svp que je comprenne et realise d'autre exercices de mon coté ?

merci à vous

le code de la page php :

<body>
	

	<p>Commentaire</p>
	<p>
	<form method="post">
	Login : <input type="text" name="pseudo" /><br />
	commentaire : <br />
	<input type="textarea" name="message" rows="10"><br />
    <input type="submit" value="Valider" /><br />
	</form>
	</p>
   <?php 

    $loggin =  htmlspecialchars($_POST['pseudo']).' a écrit :<br />';
    $mess = htmlspecialchars($_POST['message']);

	if(empty($_POST['pseudo']) AND empty($_POST['message'])){
		echo 'entrez un pseudo ou un commentaire';
	}
	elseif(empty($_POST['pseudo']) OR empty($_POST['message'])){
			echo 'entrez un pseudo ou un commentaire';
		}
		else{
			$hote='localhost';
			$BD='ma_base';
			$user='ich_me';
			$pass='password';

			try
			{
        	$connexion = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass);
			}
  
			catch(Exception $e)
			{
        	echo 'Erreur : '.$e->getMessage().'<br />';
        	echo 'N° : '.$e->getCode();
				}
			

         	 $insertion_table = $connexion->prepare('INSERT INTO commentaires (pseudo, message) VALUES (:pseudo, :message)')
         	 or exit(print_r($insertion_table->errorInfo()));

         	 $insertion_table->exec(array('pseudo'=>$pseudo, 'message'=>$message));
			
               echo $loggin;
               echo $mess;
	}
    ?>
	
 		

</body>


l'url pour tester : http://symposion.fr

2 réponses

BlackYoup Messages postés 184 Statut Membre 20
 
Salut :)

Pour moi, $pseudo et $message sont vides
$pseudo = $_POST['pseudo'];
$message = $_POST['message];
1
gintoxic Messages postés 566 Statut Membre 10
 
j'avais mis ça
$loggin =  htmlspecialchars($_POST['pseudo']).' a écrit :<br />';
$mess = htmlspecialchars($_POST['message']);

mais en effet pas dans
$insertion_table->exec(array('pseudo'=>$pseudo, 'message'=>$message));

les variables sont vides donc j'ai remplacé par mes variables de base $loggin et $mess et ça écrit dans ma table ;o)

donc merci beaucoup ^^^
me reste à mettre l'utf-8 et à ressortir ça pour l'affichage
0
gintoxic Messages postés 566 Statut Membre 10
 
erratum pour l'exemple test, http://symposion.fr/test_array
0
gintoxic Messages postés 566 Statut Membre 10
 
bon j'arrive à afficher le contenu de la base de donnée entré par l'utilisateur, mais ça ne ressemble à rien.
j'ai tenté une mise en page mais je ne connais pas suffisamment PDO pour realiser une zone de commentaire comme on en voit partout (d meme style qu'ici en fait

quelqu'un pourrait me guider svp ?
0
BlackYoup Messages postés 184 Statut Membre 20
 
Il te suffit juste de récupérer tous les résultats et de les afficher :
Imaginons :
$co = new PDO(); // on instancie (c'est un exemple)
$req = $co->query('SELECT * FROM messages');
while($datas = $req->fetch())
{
     echo $datas['message'].' '.$datas['pseudo'];
}
$req->closeCursor();


Après, il faut juste ajouter des attributs html / css avant chaque sorties de texte :)
par exemple :
 echo '<div class="message">$datas['message'].'</div> <div class="pseudo">'.$datas['pseudo'].'</div>';
0
gintoxic Messages postés 566 Statut Membre 10
 
beh si tu vas sur le lien, c'est a peu pres ce que j'ai fait mais survient un autre probleme... a priori je n'ai pas fait quelque chose, ce qui fait que tout est affiché (tout le contenu et non comme ici...
0
BlackYoup Messages postés 184 Statut Membre 20
 
mmh, en effet, tu pourrais poster le code qui s'occupe d'afficher tout ca ?
0
gintoxic Messages postés 566 Statut Membre 10
 
bon on y voit plus rien ....
voici le code

	<meta charset="UTF-8">
	<title>test pass</title>
	<style>
	#bloc_message{
		min-width:300px;
		min-height:200px;
		border:1px solid #000;
		/*overflow: auto;*/
	}
	</style>
</head>
<body>
	<?php 

    $loggin =  htmlspecialchars($_POST['pseudo']).' a écrit :<br />';
    $mess = htmlspecialchars($_POST['message']);

	if(empty($_POST['pseudo']) AND empty($_POST['message'])){
		echo 'entrez un pseudo ou un commentaire';
	}
	elseif(empty($_POST['pseudo']) OR empty($_POST['message'])){
			echo 'entrez un pseudo ou un commentaire';
		}
		else{
			$hote='localhost';
			$BD='ma_base';
			$user='ich_me';
			$pass='password';

			try
			{
        	$connexion = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass);
			}
  
			catch(Exception $e)
			{
        	echo 'Erreur : '.$e->getMessage().'<br />';
        	echo 'N° : '.$e->getCode();
				}
			

         	 $insertion_table = $connexion->prepare('INSERT INTO commentaires(pseudo, message) VALUES(:pseudo, :message)')
         	 or exit(print_r($insertion_table->errorInfo()));

         	 $insertion_table->execute(array('pseudo'=>$loggin, 'message'=>$mess));


         	 
         	 $result= $connexion-> query('SELECT * FROM commentaires');
         	 $donnees=$result->fetch();
         	 while ($donnees = $result->fetch()){
     			echo $donnees['message'].' '.$donnees['pseudo'];
			}
			$req->closeCursor();

         	 
			
             
	}
    ?>

	<p>Commentaire</p>
	<p>
	<form method="post">
	Login : <input type="text" name="pseudo" /><br />
	commentaire : <br />
	<input type="textarea" name="message" rows="10" cols="30"><br />
    <input type="submit" value="Valider" /><br />
	</form>
	</p>
	<?php 
	echo '</div> <div class="pseudo">'.$donnees['pseudo'].'</div>'.'<div id="bloc_message">'.$donnees['message'];
	?>
   
	
 		

</body>
</html>
0