donnée ne s'enregistre pas bien dans la SGBD

donnée ne s'enregistre pas bien dans la SGBD - PHP - Programmation

Marsh Posté le 26-02-2010 à 23:23:35    

Bonjours à tous,
 
dans mon script de livre d'or, j'ai récupéré les variables pseudo et message grâce à un formulaire, avec du SQL sa s'enregistre dans la SGBD mais la SGBD ne récupère pas exactement ce que j'ai rentré dans le formulaire pour tester :
 

Code :
  1. <form method="post" action="livre_or.php">
  2.         <p>Donnez votre avis sur Tutogeek.com</p>
  3.        <p>
  4.             Pseudo : <input name="pseudo" /><br />
  5.             Message :<br />
  6.             <textarea name="message" rows="8" cols="35" ></textarea><br />
  7.             <input type="submit" value="Envoyer" />
  8.        </p>
  9.     </form>
  10. <img alt="barre de separation" src="images/barre_separation.png" />
  11.  <div class="overflow">
  12.        
  13.        
  14.        
  15.     <?php
  16. $pseudo = isset($_POST['pseudo']);
  17. $message = isset($_POST['message']);
  18. mysql_connect("localhost", "root", "" );
  19. mysql_select_db("tttt" );
  20. //une entrée avec mysql_query
  21. mysql_query("INSERT INTO livre_or VALUES (' ', '$pseudo', '$message')" );
  22. /*my sql close*/
  23. ?>


 
mais quand je vais dans phpmyadmin pour voir ce qu'il à enregistrer, il y à, l'Id (normalement remplis) mais dans le champ pseudo et message, il y à marqué "1" c'est tout, au lieu qu'il y ait le pseudo entré en le message lui aussi entré via le formulaire.


Message édité par Wilyame le 26-02-2010 à 23:26:48
Reply

Marsh Posté le 26-02-2010 à 23:23:35   

Reply

Marsh Posté le 26-02-2010 à 23:31:22    

tes colonnes sont de quelles types ?

Reply

Marsh Posté le 26-02-2010 à 23:43:22    

Sur phpmyadmin ? je ne sait pas si sa va répondre à ta question mais :
 
id = mediumint(9) avec Auto- Incre.
pseudo = varchar(50) NULL
message = text(255) NULL
 
les paramètres de ma table livre_or


Message édité par Wilyame le 26-02-2010 à 23:44:04
Reply

Marsh Posté le 27-02-2010 à 00:10:30    

ca parait normal tu affectes a $speudo et $message le résultat de la fonction isset() qui retourne true ou false.
 
isset sert à savoir si la variable est définit, si elle existe.
 
on l'utilise souvent dans un if.
 
par exemple ici on test si les deux variable existes et si elles ne sont pas vides.
 
<?php
if(isset($_POST['pseudo']) and !empty($_POST['pseudo']) and isset($_POST['message']) and !empty($_POST['message'])){
 
$speudo=$_POST['speudo'];
$message=$_POST['message'];
 
//tu dois sécuriser tes données ici pour éviter les injections sql.
 
mysql_connect("localhost", "root", "" );
mysql_select_db("tttt" );
 
//une entrée avec mysql_query
 mysql_query("INSERT INTO livre_or VALUES (' ', '$pseudo', '$message')" );
 
}
?>


Message édité par d@kn1ko le 27-02-2010 à 00:15:18
Reply

Marsh Posté le 27-02-2010 à 00:25:29    

MERCI beaucoup, sa marche impecablement !
 
!!
 

Reply

Marsh Posté le 27-02-2010 à 10:00:47    

j'avais même pas vu le isset ;)

Reply

Marsh Posté le 27-02-2010 à 11:36:41    

Wilyame a écrit :

MERCI beaucoup, sa marche impecablement !
 
!!
 


 
fait attention avec ton code.
 
rien n'est sécurisé.

Reply

Marsh Posté le 27-02-2010 à 16:55:09    

oui je sais que ce n'est pas sécurisé mais c'est car comme je suis débutant en php si dès le début je m'encombre de ligne de code pas indispensable pour que sa fonctionne...
 
j'ai laisser tes commentaires pour ne pas oublier de les ajouter une fois ce livre d'or fini.

Reply

Marsh Posté le 27-02-2010 à 17:04:45    

Après avoir amélioré mon script j'ai commencer à créer une interface d'administration qui marche comme sa:
 
dans une page protéger par un mot de passe il y à un tableau avec 2 colones, une, qui lis les messages entrés dans le formulaire du livre d'or (les messages pas encore modérés attérissent dans une table "non_modere_livre_or", et l'autre qui lis les messages une fois modérés (table "livre_or" ) donc qui s'affiche en dessous du formulaire d'envoi du message sur la page de livre d'or.
 
donc mon idée, c'est que quand quelqu'un entre son pseudo et son message, moi, je le vois dans mon admin et je êux le supprimer ou l'accepter (donc le transferer dans l'autre colone du tableau donc aussi le transferer de table pour q'une fois modéré, il s'affiche sur la page livre d'or  :p  
 
je ne sais pas si j'ai bien expliqué... :heink:  
 
mon code :

Code :
  1. <td width="390"><div class="non_modere"><?php
  2. mysql_connect("localhost", "root", "" ); // Connexion à MySQL
  3. mysql_select_db("tttt" ); // Sélection de la base tttt
  4. $reponse = mysql_query("SELECT * FROM non_modere_livre_or" ); // prendre ce qu'il y a dans non_modere_livre_or
  5. // On fait une boucle pour lister tout ce que contient la table :
  6. while ($donnees = mysql_fetch_array($reponse))
  7. {
  8. $id [] = $donnees['id'];
  9. $pseudo [] = $donnees['pseudo'];
  10. $message [] = $donnees['message'];
  11. ?>
  12. <p>
  13.     <strong><?php echo $donnees['id']; ?>°) Ecrit par</strong> : <span class="pseudo"><?php echo $donnees['pseudo']; ?></span>
  14.     <form method="post" action="admin_livreor.php"><input type="submit" name="autoriser" /></form>
  15.     <?php
  16. if(isset($_POST['autoriser']) and !empty($_POST['autoriser'])){
  17. $autoriser=$_POST['autoriser'];
  18. //tu dois sécuriser tes données ici pour éviter les injections sql.
  19. mysql_connect("localhost", "root", "" );
  20. mysql_select_db("tttt" );
  21. //une entrée avec mysql_query
  22. mysql_query("INSERT INTO livre_or VALUES ('', '$pseudo', '$message')" );
  23. }
  24. ?>
  25.     <br />
  26.     <strong>Message :</strong> <?php echo $donnees['message']; ?>
  27.    </p>
  28. <?php
  29. }
  30. // Déconnexion de MySQL
  31. ?></div></td>
  32. <!------------------------MODERE------------------->
  33.         <td width="390"><div class="modere"></div></td>
  34.    </tr>
  35. </table>


 :D


Message édité par Wilyame le 27-02-2010 à 17:05:31
Reply

Marsh Posté le 28-02-2010 à 15:22:53    

Pourquoi ne pas ajouter une colonne "modération" avec un booléen qui définit si tel ou tel message a été modéré ?

Reply

Marsh Posté le 28-02-2010 à 15:22:53   

Reply

Marsh Posté le 28-02-2010 à 15:34:55    

antac a écrit :

Pourquoi ne pas ajouter une colonne "modération" avec un booléen qui définit si tel ou tel message a été modéré ?


 
ok, mais est ce que j'aurai la possibilité de les accepter avant qu'il soit afficher ?
 
 

Reply

Marsh Posté le 28-02-2010 à 16:20:22    

Tu rajoutes dans ta req de sélection une clause WHERE sur la valeur de ton champ de modération.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 28-02-2010 à 19:17:46    

Peut tu expliqué plus clairement, je n'est pas tout saisi !
 

Reply

Marsh Posté le 28-02-2010 à 20:01:52    

Citation :

SELECT xxxxxxxx WHERE moderation = 1;


 
Tu ne sélectionneras que les messages ayant été modérés.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 28-02-2010 à 21:07:51    

ah Ok, demain, je vais y réfléchir à tête reposé pour faire mon script

Reply

Marsh Posté le 28-02-2010 à 23:07:59    

la clause WHERE dans une requête permet de définir des conditions de restrictions.
Par exemple si tu veux tous les articles ayant un titre commençant par A tu peux écrire :
 
SELECT titre FROM table WHERE titre LIKE 'A%'  
ou si tu veux que ceux qui ont eu une note supérieure à 15 et commençant par A tout en étant validé ainsi que ceux non modéré mais inférieur à 15
SELECT titre FROM table WHERE (note>15 AND titre LIKE 'A%' AND moderation=1) OR (note<15 AND moderation=0).
 
Apprend déjà les bases du SQL...


Message édité par antac le 28-02-2010 à 23:08:22
Reply

Marsh Posté le 28-02-2010 à 23:18:52    

merci beaucoup

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed