PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 04-03-2011 11:08:36

leberger
Membre
Inscription : 04-03-2011
Messages : 2

insérer images dans une news

bonjour à tous,
je me lance dans la création d'un blog, j'aimerais pouvoir insérer des images dans les news que je poste.
Pour l'instant j'ai réussi à faire en sorte d'en insérer une en début de news, mais j'aimerais savoir si il est possible en PHP d'en insérer plusieurs au milieu de ma news. Pour être plus clair, avoir la possibilité d'alterner entre texte et images comme dans un forum.

voici le code de création de la news:

<fieldset> 
                  <form action="news_post.php" method="post" enctype="multipart/form-data">
                                        <p>
                        <a>Votre nom :</a><br/>
                          <input type="text" name="auteur" /><br/>
                      </p>
                      <p>
                        <a>Le titre :</a><br/>
                          <input type="text" name="titre" /><br/>
                      </p>
                      <a><label for="image">Choisissez une image :</label><br/></a>
                      <input type="file" name="image" id="image" />(Taille max : 2 Mo)<br />
                      <p>
                        <a>Votre news :</a><br/>
                          <textarea name="contenu" rows="8" cols="68"></textarea><br/>
                      </p>
                      <input type="submit" value="Valider" />
                  </form>
              </fieldset>

code de la page qui enregistre la news dans la BDD:


<?php

//Vérification de l'image :
if (!empty($_FILES['image']['size']))
{
        //On définit les variables :
        $maxsize = 2097152  ; //Poids de l'image
        $maxwidth = 1000; //Largeur de l'image
        $maxheight = 1000; //Longueur de l'image
        $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
       
        if ($_FILES['image']['error'] > 0)
        {
                $image_erreur = "Erreur lors du tranfsert de l'image : ";
        }
        if ($_FILES['image']['size'] > $maxsize)
        {
                $i++;
                $image_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['image']['size']." Octets</strong>    contre <strong>".$maxsize." Octets</strong>)";
        }

        $image_sizes = getimagesize($_FILES['image']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
        {
                $i++;
                $image_erreur2 = "Image trop large ou trop longue : (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
        }
       
        $extension_upload = strtolower(substr(  strrchr($_FILES['image']['name'], '.')  ,1));
        if (!in_array($extension_upload,$extensions_valides) )
        {
                $i++;
                $image_erreur3 = "Extension de l'image incorrecte";
        }
}

 if (isset($_FILES['image']['size']))
        {
                //On déplace l'image
                $image = time();
                $nomimage = str_replace(' ','',$image).".".$extension_upload;
                $image = "images/".str_replace(' ','',$image).".".$extension_upload;
                move_uploaded_file($_FILES['image']['tmp_name'],$image);
        }

if (isset($_POST['auteur'], $_POST['titre'], $nomimage, $_POST['contenu']))
// Insertion du message à l'aide d'une requête préparée
  {
    $req = $bdd->prepare('INSERT INTO billets(auteur, titre, image, contenu, date_creation) VALUES(:aut, :titre, :nomcorrect, :contenu, NOW())');
    $req->execute(array(aut => $_POST['auteur'],
              titre => $_POST['titre'],
              nomcorrect => $nomimage,
              contenu=> $_POST['contenu']));
   
    echo 'votre news a bien été prise en compte <br/>';
    echo 'retournez à la page d\'index : <a href="index.php">ici</a>';
  }
else
  {
    echo 'votre news n\'a pas pu être prise en compte !';
    echo 'retournez à la page de news : <a href="news.php">ici</a>';
  }
 
$req->closeCursor();

?>
 

Et pour finir, le code qui affiche ma news:


<?php
if(empty($_GET['page'])) // utilisateur vient d'arriver, donc sur la premiere page 1
    $_GET['page'] = 1;

$req = $bdd->query('SELECT COUNT(*) AS billets_totaux FROM billets'); // On récupère le nombre de billet total de la table
$donnee = $req->fetch();
 
$billets_totaux = $donnee['billets_totaux']; // changement nom variable
$req->closeCursor();
 
$billets_par_page = 5; //  nombre de billet par page :)
         
$nombre_page = ceil($billets_totaux / $billets_par_page);
      // arrondi au supérieur
     
$limite = ($billets_par_page * $_GET['page']) - 5; //établir l'entrée a partir de laquelle on va lire les billets.
   
$req = $bdd->query('SELECT id, auteur, titre, image, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%i\')
          AS date_creation_fr FROM billets ORDER BY date_creation DESC LIMIT '
. $limite . ',5');
if($_GET['page'] >= 1 AND $_GET['page'] <= $nombre_page) //vérifier le $_GET -> Never trust user input ;)
  {
    while ($donnees = $req->fetch())
      {
       
  ?>
        <div id="NEWS">
          <!-- titre-->          
              <div class="titre_haut"></div>
            <div class="titre_fond">
                <div class="texte_titre">
                    <?php echo htmlspecialchars($donnees['titre']); ?>
                    <strong><em>par <?php echo $donnees['auteur'];?></em></strong>
                      <br/>
                    <em>le <?php echo $donnees['date_creation_fr']; ?></em>                  
                </div>
            </div>               
          <div class="titre_bas"></div>
          <!--titre-->
                   
          <!-- contenu -->
         
          <div class="contenu_haut"></div>
          <div class="contenu_fond">
            <div class="texte">
              <div class="contenu_texte">
                   
            <?php          
                    // On affiche le contenu du billet
                    echo '<img src="images/'.$donnees['image'].'" alt="1" /> <br/>';                   
                    echo nl2br(htmlspecialchars($donnees['contenu']));
                   
                  $req2 = $bdd->query('SELECT COUNT(*) AS nb_commentaires FROM commentaires WHERE id_billet= '.$donnees['id'].''); // On récupère le nombre de coms total de la table
                  $donnee = $req2->fetch();
                   
                  $nb_commentaires = $donnee['nb_commentaires']; // changement nom variable
                 
            ?>
                    <br />
                   
                  <div class="coms">
                    <em>
                      <a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">
                        <?php echo $nb_commentaires;
                          if ($nb_commentaires < 2)
                            {
                              echo ' commentaire';
                            }
                          else
                            {
                              echo ' commentaires';
                            }
                        ?>
                      </a>
                    </em>
                  </div>
                   
              </div>  

            </div></div>
          <div class="contenu_bas"></div>        
        </div>
          <!-- contenu --> 
       
  <?php
        $req2->closeCursor();
      }
    $req->closeCursor();
  }
else // Ce else me permet d'afficher un message au cas ou le visiteur ai entré dans l'URL un numero de page invalide.
  echo 'Page introuvable';
?>

  <div id="nb_pages">
  <?php      

  for($i = 1; $i <= $nombre_page; $i++) // cette boucle for va permettre d'afficher le nombre de lien nécessaire pour pouvoir visiter toute les pages créées
    {
      echo '<a href="index.php?page=' . $i . '">' . $i . '</a> '; // ET donc on affiche un lien pour chaque numéro de page
    }
  echo '</p>';
  ?>
  </div>

</div>


 

Voilà désolé de faire aussi long, mais je pense que ça peut aider !

merci

Hors ligne

#2 04-03-2011 18:18:24

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : insérer images dans une news

Saluton,
Le problème c'est que dès la conception de la base de données, image est une colonne de la table billets, si tu voulais pouvoir mettre plusieurs images par billet il fallait faire une table images en liaison un-à-plusieurs avec la table billet.
Mais, si je ne me trompe, en fait, tu utilises un code tout fait d'un CMS ou autre.
Donc tu ferais mieux de t'adresser directement aux créateurs du code.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 05-03-2011 18:32:46

leberger
Membre
Inscription : 04-03-2011
Messages : 2

Re : insérer images dans une news

salut, en effet ce code, a été créer pour un tuto, car je débute le php, et celui ci est copié/collé pour être sûr qu'il n'y a pas d'erreur dans le code avant de continuer la création du blog.
Ok je vais voir en créant une table pour les images, en espérant y voir plus clair car j'arrive pas trop à visualisé comment dans le questionnaire de création de news, je peux faire en sorte d'insérer des images au fur et à mesure.

merci d'avoir répondu

Hors ligne

Pied de page des forums