Partage
  • Partager sur Facebook
  • Partager sur Twitter

PROBLÈME ~ Liens départagés dans une Boucle(while)

<while(){</a>} en gros :p

Sujet résolu
    21 septembre 2017 à 17:10:27

    Salut les zéros ! :D

    Je voudrais que lorsque je clique sur un lien, ça enregistre ce lien et non pas le dernier chargé !

    J'ai créé cette boucle : 

    <?php
    $rand = rand(1, 2);
    
    if ($rand == 2) {
        
        $reponse = $bdd->query('SELECT * FROM files LIMIT 0, 40');
    
    }
    else {
        $reponse = $bdd->query('SELECT * FROM files LIMIT 0, 40');
    }
    
    while ($donnees = $reponse->fetch())
    {
    ?>
        <a style="color: black; text-decoration: none;" class="handle";">
        <?php echo "<strong>".$donnees['fichier']."</strong>"; ?><br />
        <?php echo $donnees['poid']." Mo"; ?><br />
        <?php echo $donnees['quand']; ?><br><br>
       </a>
        <?php $id = $donnees['id']; ?>
    
    <?php
    
        $file = $donnees['fichier'];
    }
    
    $reponse->closeCursor();
        $to = "Fichiers/";
    
    ?>
    <script>
        var file = "<?php echo $file; ?>";
        var to = "<?php echo $to; ?>"; 
        var tofile= to+file;
    
        $(".handle").attr("href", tofile);
    
    </script>

    J'ai ça qui s'affiche

    Lorsque je clique sur un des textes afficher à gauche je voudrais que ça enrgistre le lien correspondant et non pas le dernier chargé*bis

    Merci de votre réponse !

    Bisou à tout de suite :p

                                          Félix le zero

    • Partager sur Facebook
    • Partager sur Twitter

    && ~ Puisse la Force êt++re avec toi ~>

      21 septembre 2017 à 17:47:47

      Bonjour,

      Je déplace dans le forum PHP ;)

      Ce code ... que fait-il ?

      Il récupère les 40 premiers "files" en base de données, pour chacun il affiche un lien <a> sans attribut href.

      Ensuite un JavaScript change l'attribut href de tous les liens créés pour y mettre le chemin du dernier élément passé dans la boucle while ...

      Je renseignerais l'attribut href directement dans la boucle, sans passer par JavaScript ...

      <?php
      	$rand = rand(1, 2);
      	
      	if ($rand == 2) {
      		$reponse = $bdd->query('SELECT * FROM files LIMIT 0, 40');
      	} else {
      		$reponse = $bdd->query('SELECT * FROM files LIMIT 0, 40');
      	}
      	
      	while ($donnees = $reponse->fetch()) {
      ?>
          <a href="Fichiers/<?php echo $donnees['fichier']; ?>" style="color: black; text-decoration: none;" class="handle";">
          <?php echo "<strong>".$donnees['fichier']."</strong>"; ?><br />
          <?php echo $donnees['poid']." Mo"; ?><br />
          <?php echo $donnees['quand']; ?><br><br>
         </a>
      <?php
      	}
      	$reponse->closeCursor();
      ?>

      Au passage je n'ai pas compris l'intérêt du random ... la requête exécutée est la même ...

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        21 septembre 2017 à 21:05:24

        Merci !

        Ça ne marche pas, j'avais  déjà essayé au par avant, ça n'avait pas marché ! 

        J'ai réessayé et ça marche toujours pas ... Du coup j'ai fait ça:

        <?php
        $rand = rand(1, 2);
        
        if ($rand == 2) {
            
            $reponse = $bdd->query('SELECT * FROM files LIMIT 0, 40');
        
        }
        else {
            $reponse = $bdd->query('SELECT * FROM files LIMIT 0, 40');
        }
        
        while ($donnees = $reponse->fetch())
        {
        ?>
            <a href="" style="color: black; text-decoration: none;" class="handle";">
            <?php echo "<strong>".$donnees['fichier']."</strong>"; ?><br />
            <?php echo $donnees['poid']." Mo"; ?><br />
            <?php echo $donnees['quand']; ?><br><br>
           </a>
            <?php $file = $donnees['fichier']; ?>
            <?php $to = "Fichiers/"; ?>
        <script>
            var file = "<?php echo $file; ?>";
            var to = "<?php echo $to; ?>"; 
            var tofile= to+file;
        
            $(".handle").attr("href", tofile);
        
        </script>
        
        <?php
        
        }
        
        $reponse->closeCursor();
        
        ?>

        Mais ça marche pas, j'ai toujours le même problème ... :(

        PS: Le rand() sera modifié plus tard, je l'ai pas enlevé pour pas oublier l'idée :p

        -
        Edité par Le fefe 21 septembre 2017 à 21:11:43

        • Partager sur Facebook
        • Partager sur Twitter

        && ~ Puisse la Force êt++re avec toi ~>

          22 septembre 2017 à 12:22:25

          ELfefe1 a écrit:

          Ça ne marche pas

          C'est à dire ? Une erreur, pas le résultat attendu ? Il faut nous aider un peu ...
          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            22 septembre 2017 à 14:29:10

            Note que par rapport au RAND() quoi que tu fasses la même requête sera exécutée et tu reviendras en nous expliquant que "ça ne marche pas"

            UN peu plus de réflexion serait bien ;)

            ++

            • Partager sur Facebook
            • Partager sur Twitter
              22 septembre 2017 à 15:35:16

              Je voudrais que lorsque je clique sur un lien, ça enregistre ce lien et non pas le dernier chargé !!!

              Comme je l'ai déjà expliqué plus haut le rand() n'a aucune utilitée ici, il est juste placé en attendant, mais n'a aucun impact !

              J'ai posé return; à la fin de ma boucle et maintenant seulement mon premier lien s'affiche et pas les autres ..

              while ($donnees = $reponse->fetch())
              {
              ?>
                  <a href="" style="color: black; text-decoration: none;" class="handle";">
                  <?php echo "<strong>".$donnees['id']." ~ ".$donnees['fichier']."</strong>"; ?><br />
                  <?php echo $donnees['poid']." Mo"; ?><br />
                  <?php echo $donnees['quand']; ?><br><br>
                  </a>
                  <?php $file = $donnees['fichier']; ?>
                  <?php $to = "Fichiers/"; ?>
              <script>
                  var file = "<?php echo $file; ?>";
                  var to = "<?php echo $to; ?>"; 
                  var tofile= to+file;
              
                  $(".handle").attr("href", tofile);
              
              </script>
              
              <?php
                  return;
              }
              
              $reponse->closeCursor();
              
              ?>



              -
              Edité par Le fefe 22 septembre 2017 à 15:37:03

              • Partager sur Facebook
              • Partager sur Twitter

              && ~ Puisse la Force êt++re avec toi ~>

                22 septembre 2017 à 15:41:50

                Je vais essayé de rester calme ...

                Pas besoin de JavaScript ici, le code que je t'ai donné devrait fonctionner :

                <?php
                    $rand = rand(1, 2);
                     
                    if ($rand == 2) {
                        $reponse = $bdd->query('SELECT * FROM files LIMIT 0, 40');
                    } else {
                        $reponse = $bdd->query('SELECT * FROM files LIMIT 0, 40');
                    }
                     
                    while ($donnees = $reponse->fetch()) {
                ?>
                    <a href="Fichiers/<?php echo $donnees['fichier']; ?>" style="color: black; text-decoration: none;" class="handle";">
                    <?php echo "<strong>".$donnees['fichier']."</strong>"; ?><br />
                    <?php echo $donnees['poid']." Mo"; ?><br />
                    <?php echo $donnees['quand']; ?><br><br>
                   </a>
                <?php
                    }
                    $reponse->closeCursor();
                ?>

                Tu dis que cela ne marche pas, merci de préciser ce qui ne vas pas ... une erreur ? un résultat inattendu ?

                Affiches-tu les erreurs PHP ? https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/configurer-php-pour-visualiser-les-erreurs

                Merci de répondre à ces questions ...

                • Partager sur Facebook
                • Partager sur Twitter
                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                  22 septembre 2017 à 16:10:22

                  Merci l'ami ! Tu es bien bon :D

                  Effectivement ton code fonctionne ! J'ai bien mon " ini_set('display_errors', '1');" qui est en marche et fonctionnel ! 

                  J'avais essayé ce code, mais je devais l'avoir mal écrit d'ou ma manip avec JS ...

                  Mon problème était que le lien que je téléchargeai en cliquant sur un des liens <a class="handle"> était le dernier mis en place par le while et non pas ce lui correspondant au lien affiché ....

                  Merci pour ton aide et ta patience ! 

                  • Partager sur Facebook
                  • Partager sur Twitter

                  && ~ Puisse la Force êt++re avec toi ~>

                  PROBLÈME ~ Liens départagés dans une Boucle(while)

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown