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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MYSQL] création d'un service de blog

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP/MYSQL] création d'un service de blog

n°1297044
hugoOo
laisse pas dépasser ton pixel
Posté le 01-02-2006 à 22:26:07  profilanswer
 

Salut,
donc comme le dit le titre je créé (j'essaye) un systeme de blog dans lequel chaque blogger aurait son blog il pourrait ajouter les articles qu'il veut dans son blog: donc pour l'ajout de ces articles j'ai un formulaire:

Citation :

<html><head><title>nouvel artcile ~ lostblog ~  </title>
</head>
<body>
<?php  
$MFS=100000;
?>
<div align="center"><form method="post"  enctype="multipart/form-data" action="na2.php">
   titre : <input name="titre" type="text"><br>
   article : <br><textarea name="article" cols="40" rows="15"></textarea><br>
   <input type="hidden" name="MAX_FILE_SIZE" value="<? echo $MFS;?>">
   photo : <input type="file" name="userfile"><br />
   <input type="submit" value="Valider">
</form></div>
</body>
</html>


ce formulaire renvoie vers ma page na2.php qui doit rentrer les informations dans ma base de donnée: voici cette page:

Citation :

<?php
$titre=$_POST['titre'];
$article=$_POST['article'];
if(empty($article))
    {
    echo '<font color="red">Attention, tu ne peux pas créer un article vide!</font>';
    }  
else      
    {
 // Répertoire de stockage
$rep="images/";
if(isset($_POST['userfile'])) {
if($_POST['userfile']['size']>0) {
   $savefile= $rep.$_POST['userfile']['name'];
   $temp = $_POST['userfile']['tmp_name'];
   if (move_uploaded_file($temp, $savefile)) {  
      $db = mysql_connect('serveur','pseudo','motdepasse')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
 
    mysql_select_db('i3911682',$db)  or die('Erreur de selection '.mysql_error());
     
    // on écrit la requête sql
    $sql = "INSERT INTO essai (id, date, titre, article, photo) VALUES('', NOW(), '$titre', '$article', '$savefile')";
     
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
    mysql_close();  // on ferme la connexion?>
      <b>Votre fichier a bien été enregistré !</b>
<br />Nom : <? echo $_FILES['userfile']['name'];?>
<br />Taille : <? echo $_FILES['userfile']['size'];?>
<br />Type : <? echo $_FILES['userfile']['type'];?>
<?   } else { ?>
      <b>Erreur d'enregistrement !</b>
   <? }
 
} else { ?>
   <b>Trop gros fichier !</b>
   <i>( <? echo $MFS; ?> octets max.)</i>
<? }  
}  
    }
?>


Cela ne marche pas, quelqu'un pourrait t'il me dire pourquoi?

mood
Publicité
Posté le 01-02-2006 à 22:26:07  profilanswer
 

n°1297063
gnarky
Sac à puces
Posté le 01-02-2006 à 22:55:37  profilanswer
 

message d'erreur?
je suis pas un pro mais ton script me parait fouilli un peu.
tu ne peux pas poster d'article sans poster une image avec apparement.
 
utilise [code] au lieu de [quote] au fait
 
edit:
 
if($_POST['userfile']['size']>0) {  
je connais pas cette commande, mais bon j'ai jamais utilisé <input type="file">.
 
re-edit: grilled :o


Message édité par gnarky le 01-02-2006 à 22:58:46
n°1297065
naceroth
Posté le 01-02-2006 à 22:57:18  profilanswer
 

Parce que if($_POST['userfile']['size']>0) ne veut strictement rien dire ?
 
(réponse à la hauteur des détails du "ca ne marche pas", on s'en doute un peu, rare sont ceux qui postent ici pour une autre raison :D)

n°1297086
Travis_bat​teur
Informaticien batteur.
Posté le 01-02-2006 à 23:24:35  profilanswer
 

Précise le message d'erreur, et essaye de tester avant de demander brutalement comme çà "çà marche pas. pourquoi?" :jap:  
 
Et si t'as déjà testé, et ba dis le nous et fait nous part des résultats :)

n°1297152
hugoOo
laisse pas dépasser ton pixel
Posté le 02-02-2006 à 09:18:35  profilanswer
 

le problème c'est qu'il n'y a pas de message d'erreur, l'image et la date rentre dans ma base de donnée mais pas le titre et le texte, je remplace par quoi l'expression qui veut rien dire?

n°1297587
the_bigboo
Posté le 02-02-2006 à 16:47:08  profilanswer
 

j'ai créé mon propre blog en PHP , par contre ca prends du temps !
Pour un upload , il te faut rajouter enctype="multiform/part-data" dans tes balises <form> :
 

Code :
  1. <form action="do.php" enctype="multipart/form-data">
  2. <input type="file" name="fichier">
  3. <input type="submit" value ="ok">
  4. </form>


 
Et do.php :
 

Code :
  1. $RepertoireOuMettreLeFichier = '/home/www/upload/';
  2. if( move_uploaded_file( $_FILES['fichier']['tmp_name'] , $RepertoireOuMettreLeFichier.$_FILES['fichier']['name'] ) )
  3. echo "fichier enregistré";
  4. else
  5. die( "erreur de transfert" );


 
Si des valeurs ne se récuperent pas , une bonne method de debug consiste a utiliser la fonction var_dump()
 
verifie si un echo var_dump($_POST); te permet de récupérer toutes tes données...
poste le formulaire HTML et le resultat de ce que je viens de te donner..


Message édité par the_bigboo le 02-02-2006 à 16:49:14
n°1298903
hugoOo
laisse pas dépasser ton pixel
Posté le 03-02-2006 à 22:06:43  profilanswer
 

oui merci bigboo

n°1298911
the_bigboo
Posté le 03-02-2006 à 22:46:10  profilanswer
 

ca marche ?

n°1298917
hugoOo
laisse pas dépasser ton pixel
Posté le 03-02-2006 à 23:01:01  profilanswer
 

non j'ai trop de mal je suis pas loin de l'abandon, bigboo sauve moi!!!
toi qui as déja fait un script tu pe m'aider silteplait et peut etre meme me filler quelque bout de code, non?  
donc dans ma page ou je rentre le titre l'article et la foto j'ai un probleme!
sa marche pas du tout! enfait j'ai un formulaire avec un input name="titre",
un textarea name="titre" et un pour l'upload du fichier, le probleme c'est que ma page qui doit traiter les informations et les enregistrés dans ma base de donnée ne fonctionne pas je te montre les pages pour que tu comprenne mieux:

Code :
  1. <html><head><title>nouvel artcile ~ lostblog ~  </title>
  2. </head>
  3. <body>
  4. <?php
  5. $MFS=100000;
  6. ?>
  7. <div align="center"><form method="post"  enctype="multipart/form-data" action="na2.php">
  8.    titre : <input name="titre" type="text"><br>
  9.    article : <br><textarea name="article" cols="40" rows="15"></textarea><br>
  10.    <input type="hidden" name="MAX_FILE_SIZE" value="<? echo $MFS;?>">
  11.    photo : <input type="file" name="userfile"><br />
  12.    <input type="submit" value="Valider">
  13. </form></div>
  14. </body>
  15. </html>


et maintenant ma page qui traite mon formulaire (plusieurs choses destinés à des tests sont encore dans le code je les supprimerai plus tard)  

Code :
  1. <?php
  2. echo var_dump($_POST);
  3. ?>
  4. <?php
  5. include ($_SERVER['DOCUMENT_ROOT'].'/inc/bd.inc.php');
  6. $titre=$_POST['titre'];
  7. $article=$_POST['article'];
  8. echo $titre;
  9. if(empty($article))
  10.     {
  11.     echo '<font color="red">Attention, tu ne peux pas créer un article vide!</font>';
  12.     }
  13. else   
  14.     {
  15. // Répertoire de stockage
  16. $titre=$_POST['titre'];
  17. $rep="images/";
  18. if(isset($_POST['userfile'])) {
  19. if($_POST['userfile']['size']>0) {
  20.    $savefile= $rep.$_POST['userfile']['name'];
  21.    $temp = $_POST['userfile']['tmp_name'];
  22.    if (move_uploaded_file($temp, $savefile)) {
  23.       $db = mysql_connect($dbserveur,$dbutilisateur,$dbpass)  or die('Erreur de connexion '.mysql_error());
  24.     // sélection de la base   
  25.     mysql_select_db($dbbase,$db)  or die('Erreur de selection '.mysql_error());
  26.    
  27.     // on écrit la requête sql
  28.     $sql = "INSERT INTO essai (id, date, titre, article, photo) VALUES ('', NOW(), $titre, '$article', '$savefile')";
  29.    
  30.     // on insère les informations du formulaire dans la table
  31.     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  32.    
  33.     mysql_close();  // on ferme la connexion?>
  34.       <b>Votre fichier a bien été enregistré !</b>
  35. <br />Nom : <? echo $_FILES['userfile']['name'];?>
  36. <br />Taille : <? echo $_FILES['userfile']['size'];?>
  37. <br />Type : <? echo $_FILES['userfile']['type'];?>
  38. <?   } else { ?>
  39.       <b>Erreur d'enregistrement !</b>
  40.    <? }
  41. } else { ?>
  42.    <b>Trop gros fichier !</b>
  43.    <i>( <? echo $MFS; ?> octets max.)</i>
  44. <? }
  45. }
  46.     }
  47. ?>


voila tu me rendrai un grand service en m'aidant, ou quelqu'un d'autre si il connait la réponse!


Message édité par hugoOo le 03-02-2006 à 23:01:49
n°1298925
the_bigboo
Posté le 03-02-2006 à 23:17:58  profilanswer
 

deja indente ton code..
ensuite, comme je te l'ai demandé, poste moi ce que t'affiche le var_dump()

mood
Publicité
Posté le 03-02-2006 à 23:17:58  profilanswer
 

n°1298933
hugoOo
laisse pas dépasser ton pixel
Posté le 03-02-2006 à 23:27:24  profilanswer
 

que veut dire indente ton code.?
var_dump() :

Citation :

array(3) { ["titre"]=> string(17) "blablablamontitre" ["article"]=> string(19) "blablablamonarticle" ["MAX_FILE_SIZE"]=> string(15) "" }


Message édité par hugoOo le 03-02-2006 à 23:27:54
n°1298934
the_bigboo
Posté le 03-02-2006 à 23:30:16  profilanswer
 

on ne se comprends visiblement pas...
1 - indenter veut dire faire une tabulation pour séparer tes blocs de conditions...
2 - var_dump est une fonction PHP qui renvoi les informations relatives a la variables passée en argument... par exemple String(10) = 'abcdefghij'
 
en gros je tedemande de poster ce qui s'affiche apres que tu ai validé ton formulaire :)
 
 
Edit : parfait le var_dump ;)


Message édité par the_bigboo le 03-02-2006 à 23:30:38
n°1298936
hugoOo
laisse pas dépasser ton pixel
Posté le 03-02-2006 à 23:32:22  profilanswer
 

j'avoue que j'ai du mal à indenter je sais pas trop ou mettrre les tabulations! sinon tu vois pourquoi mon code ne marche pas?

n°1298937
the_bigboo
Posté le 03-02-2006 à 23:37:45  profilanswer
 

Code :
  1. <?php
  2. echo var_dump($_POST);
  3. ?>
  4. <?php
  5. include ($_SERVER['DOCUMENT_ROOT'].'/inc/bd.inc.php');
  6. $titre=$_POST['titre'];
  7. $article=$_POST['article'];
  8. echo $titre;
  9. if(empty($article))
  10.     {
  11.     echo '<font color="red">Attention, tu ne peux pas créer un article vide!</font>';
  12.     }
  13. else   
  14.     {
  15. // Répertoire de stockage
  16. $titre=$_POST['titre'];
  17. $rep="images/";
  18. if(isset($_POST['userfile']))
  19. {
  20. if($_POST['userfile']['size']>0)
  21.  {
  22.      $savefile= $rep.$_POST['userfile']['name'];
  23.      $temp = $_POST['userfile']['tmp_name'];
  24.      if (move_uploaded_file($temp, $savefile))
  25.   {
  26.          $db = mysql_connect($dbserveur,$dbutilisateur,$dbpass)  or die('Erreur de connexion '.mysql_error());
  27.        // sélection de la base  
  28.   mysql_select_db($dbbase,$db)  or die('Erreur de selection '.mysql_error());
  29.   // on écrit la requête sql
  30.   $sql = "INSERT INTO essai (id, date, titre, article, photo) VALUES ('', NOW(), $titre, '$article', '$savefile')";
  31.   // on insère les informations du formulaire dans la table
  32.   mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  33.   mysql_close();  // on ferme la connexion
  34.   ?>
  35.       <b>Votre fichier a bien été enregistré !</b>
  36. <br />Nom : <? echo $_FILES['userfile']['name'];?>
  37. <br />Taille : <? echo $_FILES['userfile']['size'];?>
  38. <br />Type : <? echo $_FILES['userfile']['type'];?>
  39.   <?
  40.   }
  41.  else
  42.   {
  43.   ?>
  44.   <b>Erreur d'enregistrement !</b>
  45.   <?
  46.   }
  47.  }
  48. else
  49.  {
  50.  ?>
  51.      <b>Trop gros fichier !</b>
  52.      <i>( <? echo $MFS; ?> octets max.)</i>
  53.  <?
  54.  }
  55. }
  56.    }
  57. ?>


Ton erreur est toute bete :)
quelques soient les informations relatives a ton fichier , tu dois y acceder avec $_FILES ! Pas avec $_POST comme tu le fais ligne 18 - 19 - 20 - 21...
 
remplace deja ca par $_FILES , ca devrai beaucoup mieux marcher ;)

n°1298940
hugoOo
laisse pas dépasser ton pixel
Posté le 03-02-2006 à 23:45:37  profilanswer
 

voila mon nouveau code :

Code :
  1. <?php
  2. echo var_dump($_POST);
  3. ?>
  4. <?php
  5. include ($_SERVER['DOCUMENT_ROOT'].'/inc/bd.inc.php');
  6. $titre=$_POST['titre'];
  7. $article=$_POST['article'];
  8. echo $titre;
  9. if(empty($article))
  10.     {
  11.     echo '<font color="red">Attention, tu ne peux pas créer un article vide!</font>';
  12.     }
  13. else   
  14.     {
  15. // Répertoire de stockage
  16. $titre=$_FILES['titre'];
  17. $rep="images/";
  18. if(isset($_FILES['userfile']))
  19. {
  20. if($_FILES['userfile']['size']>0)
  21.  {
  22.      $savefile= $rep.$_FILES['userfile']['name'];
  23.      $temp = $_FILES['userfile']['tmp_name'];
  24.      if (move_uploaded_file($temp, $savefile))
  25.   {
  26.          $db = mysql_connect($dbserveur,$dbutilisateur,$dbpass)  or die('Erreur de connexion '.mysql_error());
  27.        // sélection de la base  
  28.   mysql_select_db($dbbase,$db)  or die('Erreur de selection '.mysql_error());
  29.   // on écrit la requête sql
  30.   $sql = "INSERT INTO essai (id, date, titre, article, photo) VALUES ('', NOW(), $titre, '$article', '$savefile')";
  31.   // on insère les informations du formulaire dans la table
  32.   mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  33.   mysql_close();  // on ferme la connexion
  34.   ?>
  35.       <b>Votre fichier a bien été enregistré !</b>
  36. <br />Nom : <? echo $_FILES['userfile']['name'];?>
  37. <br />Taille : <? echo $_FILES['userfile']['size'];?>
  38. <br />Type : <? echo $_FILES['userfile']['type'];?>
  39.   <?
  40.   }
  41.  else
  42.   {
  43.   ?>
  44.   <b>Erreur d'enregistrement !</b>
  45.   <?
  46.   }
  47.  }
  48. else
  49.  {
  50.  ?>
  51.      <b>Trop gros fichier !</b>
  52.      <i>( <? echo $MFS; ?> octets max.)</i>
  53.  <?
  54.  }
  55. }
  56.    }
  57. ?>


le message d'erreur est :

Citation :

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /www/sites/1/ifrance.com/l/o/lostblog/site/user/na2.php on line 26
Erreur de connexion Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)


dois-je changer $_POST par $_FILES aux lignes 6 et  7 aussi?

n°1298941
the_bigboo
Posté le 03-02-2006 à 23:47:54  profilanswer
 

non que ceux qui concernent ton fichier a uploader :)
 
Ton ereur est un probleme de connection a MySQL, donc rien a voir avec l'upload :) Redemarre tes serveurs, ca résoudra probablement le souchi ;)

n°1298942
hugoOo
laisse pas dépasser ton pixel
Posté le 03-02-2006 à 23:51:47  profilanswer
 

je suis chez ifrance, le voyage est un peu long... :D
j'ai changer des $_POST qu'il ne fallait pas dans le code plus haut?

n°1298943
the_bigboo
Posté le 03-02-2006 à 23:54:14  profilanswer
 

ligne 16  il faut laisser $_POST...

n°1298944
hugoOo
laisse pas dépasser ton pixel
Posté le 04-02-2006 à 00:03:34  profilanswer
 

j'avais une erreur débile dans mes noms de variables pour ma conection à ma base de donnée mysql! maintenant mon article s'enregistre, reste le titre qui ne passe pas! encore un peu d'aide.?!

n°1298945
hugoOo
laisse pas dépasser ton pixel
Posté le 04-02-2006 à 00:08:11  profilanswer
 

c bon le titre passe!!! merci!!
une autre petite question: dans ton script de blog comment fait tu pour afficher les articles sur plusieurs pages? merci bocoup bonne nuit! à demain!

n°1298946
the_bigboo
Posté le 04-02-2006 à 00:20:18  profilanswer
 

j'utilise un systeme de pagination tout bete :
 
je definis une variable qui fixe combien de resultat par page je veux
je fais une requete qui me donne le nombre total d'articles...
 le nombre de pages vaut :
 
$NbPages = ceil( $TotalArticle/$ArticlesParPage) ;
 
apres tu fais une boucle de si = 1 jusqu'a $i = $NbPages , et voila ;)
T'a plus qu'a adapter tes requetes SQL pour n'extraire que le nécessaire ;)

n°1299005
hugoOo
laisse pas dépasser ton pixel
Posté le 04-02-2006 à 14:04:35  profilanswer
 

merci c'est trés claire! :D et les commentaires comment tu gère ça?

n°1299013
the_bigboo
Posté le 04-02-2006 à 14:20:17  profilanswer
 

une table a part, dont un des champs contiens l'ID de l'article auquel il est rataché ;)

n°1299132
hugoOo
laisse pas dépasser ton pixel
Posté le 04-02-2006 à 18:46:12  profilanswer
 

ok jvai essayer de faire sa!

mood
Publicité
Posté le   profilanswer
 


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

  [PHP/MYSQL] création d'un service de blog

 

Sujets relatifs
Chemin d'accès en PHP ?[PHP] Programmation avec SNMP
Creation d'une page internet dynamiquement[Apache] pb en tant que service (Résolu)
Comment récupérer la résolution d'une page en CSS/PHP ?importer une bases .sql vers mysql sur easyphp
Creation clé logicielle simple ?PHP, d'un serveur à un autre...
[WIP] Portail/Blog - Dernier prb: Sécurité, sessionsPetite class PHP d'automatisation des requetes SQL standard
Plus de sujets relatifs à : [PHP/MYSQL] création d'un service de blog


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