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

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

Marsh Posté le 01-02-2006 à 22:26:07    

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?

Reply

Marsh Posté le 01-02-2006 à 22:26:07   

Reply

Marsh Posté le 01-02-2006 à 22:55:37    

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
Reply

Marsh Posté le 01-02-2006 à 22:57:18    

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)

Reply

Marsh Posté le 01-02-2006 à 23:24:35    

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 :)

Reply

Marsh Posté le 02-02-2006 à 09:18:35    

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?

Reply

Marsh Posté le 02-02-2006 à 16:47:08    

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
Reply

Marsh Posté le 03-02-2006 à 22:06:43    

oui merci bigboo

Reply

Marsh Posté le 03-02-2006 à 22:46:10    

ca marche ?

Reply

Marsh Posté le 03-02-2006 à 23:01:01    

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
Reply

Marsh Posté le 03-02-2006 à 23:17:58    

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

Reply

Marsh Posté le 03-02-2006 à 23:17:58   

Reply

Marsh Posté le 03-02-2006 à 23:27:24    

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
Reply

Marsh Posté le 03-02-2006 à 23:30:16    

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
Reply

Marsh Posté le 03-02-2006 à 23:32:22    

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?

Reply

Marsh Posté le 03-02-2006 à 23:37:45    

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 ;)

Reply

Marsh Posté le 03-02-2006 à 23:45:37    

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?

Reply

Marsh Posté le 03-02-2006 à 23:47:54    

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 ;)

Reply

Marsh Posté le 03-02-2006 à 23:51:47    

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?

Reply

Marsh Posté le 03-02-2006 à 23:54:14    

ligne 16  il faut laisser $_POST...

Reply

Marsh Posté le 04-02-2006 à 00:03:34    

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.?!

Reply

Marsh Posté le 04-02-2006 à 00:08:11    

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!

Reply

Marsh Posté le 04-02-2006 à 00:20:18    

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 ;)

Reply

Marsh Posté le 04-02-2006 à 14:04:35    

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

Reply

Marsh Posté le 04-02-2006 à 14:20:17    

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

Reply

Marsh Posté le 04-02-2006 à 18:46:12    

ok jvai essayer de faire sa!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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