Bonjour,

Voila je rencontre un petit problème avec mon code.

<?php
                                              $dos = "images/min";
                                              $dir = opendir($dos);
                                              while($file = readdir($dir)){
                                                $allow_ext = array("jpg",'png','gif');
                                                $ext = strtolower(substr($data['nomImage'],-3));
                                                if(in_array($ext,$allow_ext)){
                                                  ?>
                                                  <div class="min">
                                                  <a href="images/<?php echo $data['nomImage']; ?>" rel="zoombox[galerie]">
                                                  <img src="images/min/<?php echo $data['nomImage']; ?>"/>
                                                  <h3><?php echo $data['nomImage']; ?></h3>
                                                  </a>
                                                  </div>
                                                  <?php
                                                }
                                              }
                                              ?>

Je souhaite récupérer l'image qui correspond à l'identifiant de l'article que je veux modifier, mais comment faire?
Le $data['nomImage'] est la variable qui récupère l'image uploader précédement dans le dossier images, de la base de données.
Le code m'affiche bien l'image correspondant à l'id de l'article choisit mais 7 fois??
Et je n'en veux que une.
Je ne comprend pas pourquoi??
merci

12 réponses


Bonjour,
Pourquoi faire une boucle pour afficher une image ?
De plus, il est inutile d'ouvrir un dossier pour ne rien faire dedans.
Si l'image est affiché 7 fois, j'en déduis qu'il y a 5 fichiers dans votre dossier de miniature.

bonjour,
Normalement le code vient d'un tuto de Grafikart, et la boucle sert à faire une gallery d'image donc récupère la totalité du contenu du dossier images/min.
Et dans le dossier miniature il n'y a que 3 fichiers, d'ou mon incompréhension ??

Copier un code sans en comprendre le sens, n'est pas utile.
Vous faite une boucle pour lire les éléments d'un dossier, en revanche vous n'affichez pas les éléments de ce dossier mais toujours la même image.
Vous devriez avoir $file dans la boucle et non $data....

L'idée générale du code je la comprends, le $file me récupère toutes les images qui sont dans mon dossier images par contre mon $data['nomImage'] me récupère l'image ratachée à l'id appelé je comprends que le while me récupère le contenu de mon dossier mais pourquoi sachant que je demande par la variable $data de récupérer une seule image il m'en affiche 7 et et surtout que c'est la même !!

La variable $data ne change pas dans la boucle donc c'est logique qu'il vous affiche la même image.

oui mais comment n'afficher qu'une seule image, il fait une boucle sur le dossier images/min et dois me récupérer seulement l'image correspondant à mon id, alors pourquoi il m'en affiche autant??

en supprimant la boucle.

j'ai essayé ça ne fonctionne pas

La boucle de noit pas se faire autour de l'image mais autour de l'article.
Puis-je avoir le code de la page ?

Je mets le code de la page en entier :

<?php 
if(!empty($_POST))
{
    extract($_POST);
    $validation = true;

        if(empty($titre))
    {
        $validation = false;
        $erreur_titre = "Veuillez modifier le titre!";
    }

    if(empty($content))
    {
        $validation = false;
        $erreur_content = "Veuillez modifier le contenu!";
    }

    if(empty($categorie))
    {
        $validation = false;
        $erreur_categorie = "Veuillez modifier le categorie!";
    }

    if(empty($nomImage))
    {
        $validation = false;
        $erreur_categorie = "Veuillez choisir une nouvelle image!";
    }

    if($validation)
    {
        include('bdd.php');
        $req = $bdd->prepare('UPDATE actualites SET titre = :titre AND content = :content AND categorie = :categorie AND nomImage = :nomImage  WHERE id = :id');
        $req->execute(array(
                'titre' => $titre,
                'content' => $content,
                'categorie' => $categorie,
                'nomImage' => $nomImage,
                'id' => $_GET['id']

            ));
        $req->closeCursor();
        $ok = "Le contenu de la page a bien été modifié";
    }

}

?>
<?php include('inc/header.php') ?>  
<?php include('inc/sidebar.php') ?>  

<section id="main-content">
          <section class="wrapper">
      <div class="row">
        <div class="col-lg-12">
          <h3 class="page-header"><i class="fa fa-files-o"></i>Modification du contenu</h3>
          <ol class="breadcrumb">
            <li><i class="fa fa-home"></i><a href="index.html">Home</a></li>
            <li><i class="icon_document_alt"></i>Modification des actualités</li>
          </ol>
        </div>
      </div>       

                <div class="panel-body">
                  <div class="padd">

                      <div class="form quick-post">
                        <?php 
                           include('bdd.php');
                            $select = $bdd->prepare('SELECT * FROM actualites WHERE id=:id');
                            $select->execute(array('id' => $_GET['id'] ));
                            $data = $select->fetch();

                            ?>
                             <!-- Titre -->   
                                        <div class="row">
                                            <div class="col-lg-12"> 
                                            <div class="">
                                                <h2>Modifications de l'actualité : <?php echo $data['titre'] ?></h2>
                                            </div>
                                            </div>
                                        </div>
                                      <!-- Edit profile form (not working)-->
                                      <form class="form-horizontal" method="post" action="modif-actu.php?id=<?php echo $data['id']; ?>">
                                          <!-- Title -->
                                          <div class="form-group">
                                            <label class="control-label col-lg-2" for="title">Titre</label>
                                            <div class="col-lg-10"> 
                                              <input type="text" class="form-control" id="title" value="<?php echo $data['titre']; ?>"></input>
                                            </div>
                                          </div>   
                                          <!-- Content -->
                                          <div class="form-group">
                                            <label class="control-label col-lg-2" for="content">Contenu</label>
                                            <div class="col-lg-10">
                                              <textarea class="form-control" id="content"><?php echo $data['content']; ?></textarea>
                                            </div>
                                          </div>                           
                                          <!-- Cateogry -->

                                          <div class="form-group">
                                            <label class="control-label col-lg-2">Categories</label>

                                            <div class="col-lg-10"> 

                                                <select class="form-control">
                                                  <option value="">- choisir une Categorie -</option>
                                                   <option value="<?php echo $data['categorie']; ?>"><?php echo ucfirst($data['categorie']);?></option>
                                                </select>  
                                            </div>
                                          </div>
                                            <div class="form-group">
                                              <label class="control-label col-lg-2" for="image">Téléchargement d'image</label>
                                              <input type='hidden' name='MAX_FILE_SIZE' value='2500000'>
                                              <input type="file" name="imgUpload" class="btn-upload"></input>
                                             <?php
                                              $dos = "images/min";
                                              $dir = opendir($dos);
                                              while($file = readdir($dir)){
                                                $allow_ext = array("jpg",'png','gif');
                                                $ext = strtolower(substr($data['nomImage'],-3));
                                                if(in_array($ext,$allow_ext)){
                                                  ?>
                                                  <div class="min">
                                                  <a href="images/<?php echo $data['nomImage']; ?>" rel="zoombox[galerie]">
                                                  <img src="images/min/<?php echo $data['nomImage']; ?>"/>
                                                  <h3><?php echo $data['nomImage']; ?></h3>
                                                  </a>
                                                  </div>
                                                  <?php
                                                }
                                              }
                                              ?>
                                           </div>
                                         <!-- Buttons -->
                                          <div class="form-group">
                                             <div class="col-lg-offset-2 col-lg-9">
                                              <input type="submit" class="btn btn-primary" name="modification" value="Modifier" ></input>
                                              <bouton type="reset" class="btn btn-default">Reset</bouton>
                                             </div>
                                          </div>
                                         <!-- Buttons -->
                                      </form>

                                      </div>
                                    </div>
                                    <div class="row alerte-message">
                                            <div class="col-lg-10"> 
                                                <?php if (isset($erreur_content)) echo '<div class="alert alert-block alert-danger">'.$erreur_content.'</div>';?>
                                                <?php if (isset($ok)) echo '<div class="alert alert-success">'.$ok.'</div>';?>
                                            </div>
                                          </div>

                  </div>
                  <div class="widget-foot">
                    <!-- Footer goes here -->
                  </div>
                </div>
          </section>
      </section>
      <!--main content end-->

      <?php include('inc/footer.php') ?> 

merci

Alors :
1/ Pour des raisons de sécurité, extract est à proscire.
2/ Ligne 28, je pense que la variable n'a pas le bon nom
3/ </ input>, ça n'existe pas
4/ L'image ne doit jamais être modifier car je ne vois pas de $_file qui traite l'image uploadé ?

Pour afficher juste l'image attachée à l'article, il faut enlever la boucle et laissé la div class"min"

merci je vais regarder ça, encore merci pour ta patience