Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
943 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1969804
Wilyame
Posté le 26-02-2010 à 23:23:35  profilanswer
 

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
mood
Publicité
Posté le 26-02-2010 à 23:23:35  profilanswer
 

n°1969805
antac
..
Posté le 26-02-2010 à 23:31:22  profilanswer
 

tes colonnes sont de quelles types ?

n°1969808
Wilyame
Posté le 26-02-2010 à 23:43:22  profilanswer
 

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
n°1969818
d@kn1ko
Posté le 27-02-2010 à 00:10:30  profilanswer
 

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
n°1969823
Wilyame
Posté le 27-02-2010 à 00:25:29  profilanswer
 

MERCI beaucoup, sa marche impecablement !
 
!!
 

n°1969831
antac
..
Posté le 27-02-2010 à 10:00:47  profilanswer
 

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

n°1969837
d@kn1ko
Posté le 27-02-2010 à 11:36:41  profilanswer
 

Wilyame a écrit :

MERCI beaucoup, sa marche impecablement !
 
!!
 


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

n°1969869
Wilyame
Posté le 27-02-2010 à 16:55:09  profilanswer
 

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.

n°1969872
Wilyame
Posté le 27-02-2010 à 17:04:45  profilanswer
 

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
n°1969996
antac
..
Posté le 28-02-2010 à 15:22:53  profilanswer
 

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

mood
Publicité
Posté le 28-02-2010 à 15:22:53  profilanswer
 

n°1969998
Wilyame
Posté le 28-02-2010 à 15:34:55  profilanswer
 

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 ?
 
 

n°1970008
aideinfo
Posté le 28-02-2010 à 16:20:22  profilanswer
 

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
n°1970038
Wilyame
Posté le 28-02-2010 à 19:17:46  profilanswer
 

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

n°1970041
aideinfo
Posté le 28-02-2010 à 20:01:52  profilanswer
 

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
n°1970056
Wilyame
Posté le 28-02-2010 à 21:07:51  profilanswer
 

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

n°1970065
antac
..
Posté le 28-02-2010 à 23:07:59  profilanswer
 

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
n°1970068
Wilyame
Posté le 28-02-2010 à 23:18:52  profilanswer
 

merci beaucoup


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
Notice: Undefined index: site in... =>problème lecture dans sgbdbien utiliser getline et sscanf
[php] vérifier qu'une page à bien été "include"mot de passe enregistré[Résolu]
Recuperer donnée sur site web.[SGBD] [semi-résolu] Comment organiser mes données de façon optimale ?
Creation base de donnée gestion du stockType de donnée abtrait : Matrice
Pb acces base de donnée[PERL] aide script pour alimenter SGBD MySQL
Plus de sujets relatifs à : donnée ne s'enregistre pas bien dans la SGBD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR