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

  FORUM HardWare.fr
  Programmation
  PHP

  debutant php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

debutant php

n°1197018
kaillou38
mouton à numéro
Posté le 11-09-2005 à 13:55:13  profilanswer
 

bonjour
 
je debute complet en php, et pour commencer j'utilise le tuto du siteduzero (pas de sarcasme, tres bien fait je trouve...)
 
mais j'ai un souci sur le script de minichat
celui que j'avais fait ne marchais pas, il inscrivais rien dans la BDD, donc j'ai tester avec le leur, et toujours rien...
j'ai bien acces en lecture, mais pas en ecriture visiblement, et cela sur mon script ou le leur (qui se ressemble beaucoup) :(
 
pour info le code :  

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  3.     <head>
  4.         <title>Mini-chat</title>
  5.         <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  6.     </head>
  7.     <style type="text/css">
  8.     form
  9.     {
  10.     text-align:center;
  11.     }
  12.     </style>
  13.     <body>
  14.        
  15.        
  16. <?
  17. if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
  18. {
  19.     if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose ? enregistrer
  20.     {
  21.         // D'abord, on se connecte ? MySQL
  22.         mysql_connect("localhost", "XXX", "XXXX" );
  23.         mysql_select_db("slac" );
  24.    
  25.         // On utilise la fonction PHP htmlentities pour ?viter d'enregistrer du code HTML dans la table     
  26.         $message = htmlentities ($_POST['message']);
  27.         $nom = htmlentities ($_POST['nom']);
  28.    
  29.         // Ensuite on enregistre le message
  30.         mysql_query("INSERT INTO chat VALUES('', '$nom', '$message')" );
  31.    
  32.         // On se d?connecte de MySQL
  33.         mysql_close();
  34.     }
  35. }
  36. // Que l'on ait enregistr? des donn?es ou pas...
  37. // On affiche le formulaire puis les 10 derniers messages
  38. // Tout d'abord le formulaire :
  39. ?>
  40. <form action="test2.php" method="post">
  41. <p>
  42. Pseudo : <input type="text" name="nom" /><br />
  43. Message :  <input type="text" name="message" /><br />
  44. <input type="submit" value="Envoyer" />
  45. </p>
  46. </form>
  47. <?
  48. // Maintenant on doit r?cup?rer les 10 derni?res entr?es de la table
  49. // On se connecte d'abord ? MySQL :
  50. mysql_connect("localhost", "XXXX", "XXXX" );
  51. mysql_select_db("slac" );
  52. // On utilise la requ?te suivante pour r?cup?rer les 10 derniers messages :
  53. $reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,10" );
  54. // On se d?connecte de MySQL
  55. mysql_close();
  56. // Puis on fait une boucle pour afficher tous les r?sultats :
  57. while ($donnees = mysql_fetch_array($reponse) )
  58. {
  59. ?>
  60. <p><strong><? echo $donnees['nom']; ?></strong> : <? echo $donnees['message']; ?></p>
  61. <?
  62. }
  63. // Fin de la boucle, le script est termin? !
  64. ?>
  65.        
  66.        
  67.     </body>
  68. </html>


 
et l'emplacement de la page :
http://kaillou.no-ip.info/essaiphp/test.php
 
 
la page est hebergé sur mon serveur@home, sous debian, avec mysql, php4 et apache
 
 
merci ;)


Message édité par kaillou38 le 11-09-2005 à 20:06:27

---------------
ras
mood
Publicité
Posté le 11-09-2005 à 13:55:13  profilanswer
 

n°1197070
sielfried
Posté le 11-09-2005 à 14:39:39  profilanswer
 

$_POST['pseudo'] n'existe pas, forcément. :spamafote:
 
C'est $_POST['nom'] qu'il faut tester.
 
(Y'a p-e d'autres erreurs, mais déjà celle-là.)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1197117
kaillou38
mouton à numéro
Posté le 11-09-2005 à 16:00:08  profilanswer
 

effectivement erreur dans le changement du script, mais apres correction ca ne marche toujours pas, et mon script ne comportait pas cette erreur...


---------------
ras
n°1197119
naceroth
Posté le 11-09-2005 à 16:03:07  profilanswer
 

Sinon, y a quelques trucs pas net ailleurs, y a aucun intérêt à faire un isset PUIS à vérifier si la valeur n'est pas NULL puisque NULL ne passe pas le isset, il serait peut être plus pertinent de faire un trim des deux chaines et de vérifier si elles ne sont pas vides :)

n°1197122
kaillou38
mouton à numéro
Posté le 11-09-2005 à 16:13:37  profilanswer
 

pour voir j'ai virer le deuxieme test, ca donne toujours le meme resultat :(
 
ca peux pas venir de droit en ecriture sur la BDD?
pourtant l'utilisateur qui se connecte a tous les droits (je sais pas si c'est tres securit, je m'en occuperai plus tard


---------------
ras
n°1197126
naceroth
Posté le 11-09-2005 à 16:21:32  profilanswer
 

mmmhhh, vire le mysql_close qui traine ligne 70 pour voir

n°1197128
kaillou38
mouton à numéro
Posté le 11-09-2005 à 16:27:37  profilanswer
 

tu ferme pas la session toi?
 
mais l'affichage des precedants messages marchent...
et je pense que le code marche, ca vient d'un tuto  
 
mais meme apres ce que tu m'as dit, ca ne marche pas :(


---------------
ras
n°1197129
sielfried
Posté le 11-09-2005 à 16:28:56  profilanswer
 

Refait voir ton script en l'état.
 
Edite ton message au fur et à mesure paskeu sinon...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1197130
$temp
Posté le 11-09-2005 à 16:29:33  profilanswer
 

T'as essayé de faire rien qu'une page PHP à part pour mettre juste une ligne dans ta base, rien qu'histoire de voir si ça fonctionne ça au moins ?
Genre juste une connexion à la base, ajout d'une ligne toute bête, et fermeture de la base.

n°1197132
naceroth
Posté le 11-09-2005 à 16:33:59  profilanswer
 

kaillou38 a écrit :

tu ferme pas la session toi?
 
mais l'affichage des precedants messages marchent...
et je pense que le code marche, ca vient d'un tuto  
 
mais meme apres ce que tu m'as dit, ca ne marche pas :(


 
Si, mais j'ai jamais eu dans l'idée de la fermer avant de m'en être servi :D
 
Mais avec les remarques de Silfried et vu que tu ne signales pas de messages d'erreurs, on pense aux raisons les plus idiotes :)
 
//edit : ah bah, ça fonctionne maintenant on dirait...


Message édité par naceroth le 11-09-2005 à 16:34:58
mood
Publicité
Posté le 11-09-2005 à 16:33:59  profilanswer
 

n°1197133
kaillou38
mouton à numéro
Posté le 11-09-2005 à 16:35:01  profilanswer
 

c'est bon, c'etait un probleme dans la definition de la base
 
je serais plus attentif la dessus maintenant...


Message édité par kaillou38 le 11-09-2005 à 16:35:13

---------------
ras
n°1197138
kaillou38
mouton à numéro
Posté le 11-09-2005 à 16:42:59  profilanswer
 

petite question :
 
est ce qu'il vaut mieux ouvrir puis refermer la connection a la base a chaque fois que l'on s'en sert, ou on l'ouvre a la permiere utilisation et on la referme apres la derniere?


---------------
ras
n°1197206
sielfried
Posté le 11-09-2005 à 19:05:29  profilanswer
 

Je doute que la réouvrir à chaque fois soit génial. [:figti]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1197207
Hermes le ​Messager
Breton Quiétiste
Posté le 11-09-2005 à 19:07:08  profilanswer
 

kaillou38 a écrit :

petite question :
 
est ce qu'il vaut mieux ouvrir puis refermer la connection a la base a chaque fois que l'on s'en sert, ou on l'ouvre a la permiere utilisation et on la referme apres la derniere?


 
2° solution, mais attention si tu as des includes.
 
Pour ma part, je préfère définir des fonctions elles-mêmes contenues dans une page fonctions.php que j'inclue. Ainsi, tu es sûr de ne jamais oublier d'ouvrir ou de fermer tes appels.
 
Petite remarque : L'utilisation d'une BDD comme mysql est bien souvent injustifiée...  

n°1197247
kaillou38
mouton à numéro
Posté le 11-09-2005 à 20:11:09  profilanswer
 

Hermes le Messager a écrit :

Petite remarque : L'utilisation d'une BDD comme mysql est bien souvent injustifiée...


 
si tu pouvias developper un peu, je t'en serais gré...
 
 
 
sinon, je voudrai eviter de pouvoir poster en double...
 
le probleme, c'est que ca marche pas...
 

Code :
  1. $retour = mysql_query("SELECT message FROM chat WHERE id=(SELECT MAX(id) FROM chat)" )
  2. $dernier = mysql_fetch_array($retour);
  3. echo "$dernier['id']";


 
ben ca plante :(
 
je dois pas avoir compris le bazarre sur le fetch array je pense...


---------------
ras
n°1197450
$temp
Posté le 12-09-2005 à 10:53:20  profilanswer
 

Je ne suis pas une bête en PHP non plus, mais heu...
 
"SELECT message FROM"  
echo $dernier['id'] ;
 
Si tu lui dis d'aller chercher les messages pour lesquels l'id est max... ben il va chercher les messages, alors lui demande pas d'afficher l'id !
 
Si tu tapes echo $dernier['message'] ; là je pense que ça devrait te renvoyer le message, non ?

n°1197458
$temp
Posté le 12-09-2005 à 10:57:59  profilanswer
 

En fait :
 
$reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,10" );
 
Ca veut dire qu'il va sélectionner TOUT (l'étoile veut dire ça) dans chat, ordonné comme tu le demandes.
 
Donc ensuite pour afficher, tu parcours ton truc avec mysql_fetch_array :
 
$donnees = mysql_fetch_array($reponse)
 
Et pour afficher ce que tu voulais, tu mets ça :
 
echo $donnees['nom'];
echo $donnees['message'];
 
Ca va afficher le nom et le message qui correspondent à chaque ID.
Tu aurais exactement le même affichage si tu mettais en tout début à la place de * (qui veut dire 'récupérer tout') nom, message (qui veut dire "récupère le nom et le message) soit :
 
$reponse = mysql_query("SELECT nom, message FROM chat ORDER BY ID DESC LIMIT 0,10" );

n°1197618
kaillou38
mouton à numéro
Posté le 12-09-2005 à 14:50:20  profilanswer
 

en fait le but de cette commande est juste de recuperer le message du dernier post (celui qui a l'id la plus grande) pour comparer avec ce qui est rentré et verifier que c'est pas la meme chose...
 
et que ce soit $dernier['id'] ou dernier['message'] ca plante :  
 
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/essaiphp/test.php on line 22
 
(c'est l'echo)
 
pour l'instant, je veux juste essayer de recuperer le message dans la derniere entrée, pour voir comment ca marche...


---------------
ras
n°1197632
sielfried
Posté le 12-09-2005 à 14:56:38  profilanswer
 

Y'a pas besoin de ", fait juste echo $dernier['message']. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar

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

  debutant php

 

Sujets relatifs
Debutant en programmation pour page web PHP[swing] [debutant] geler les sous jframe
[Debutant] Problème Hibernate[Débutant] Problème J2EE - Méthode statique
quel bouquin pour un debutant en C#Aide pour un débutant
Test application lancée (débutant)Mysql et phpbb (débutant)
débutant: recherche ds une jtablequestions d'un debutant
Plus de sujets relatifs à : debutant php


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