[RESOLU] problème de boucle

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] problème de boucle

Re: [RESOLU] problème de boucle

par nestor94 » 29 avr. 2023, 11:33

C'est encore trop ?

Re: [RESOLU] problème de boucle

par or 1 » 29 avr. 2023, 00:29

sur un petit écran de tablette ou smartphone, se limiter à 60% de la faible largeur disponible, ce n'est pas une bonne idée.

Re: problème de boucle

par nestor94 » 29 avr. 2023, 00:14

Génial, c'est bon à présent. Merci à vous :wink:

<?php    
require_once 'config.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
?>
<html>
 <head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
 <title>choix avatar</title>
<style type="text/css">
body {
color:black;
background-color:white;
background-image:url(images/fond.jpg);
background-attachment:fixed;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
color:#000000;
text-align:center;
margin: auto;
}
img{
  float: center;
}
</style>
 </head>
<body>
<center><img src="images/banniere.jpg"></center>
<br><b>CHOISISSEZ UN AVATAR</b><br>
<center>
<br>
<style type="text/css">
div {
max-width: 60%; 
}
img{
  float: center;
}
</style>
<div>
<?php
$sql = "SELECT * FROM avatars ORDER BY name ASC";
$pdostat = $bdd->prepare($sql);
$pdostat->execute();
$rowAll = $pdostat->fetchAll();
foreach ( $rowAll as $row )
    {
?>
<a href="/choix_avatar_fin.php?id=<?php echo $row['id']; ?>"><?php echo '<img src="'.$row['name'].'">'; ?></a>
<?php
}
?>
</div>
</body>
</html>

Re: problème de boucle

par two3d » 28 avr. 2023, 22:45

Comment faire pour faire un "saut de ligne" toutes les 20 images, par exemple?
C'est hors sujet mais utilise les flexbox pour gérer le nombre d'élément sur une ligne :

Maîtriser le passage à la ligne des éléments flexibles

Re: problème de boucle

par or 1 » 28 avr. 2023, 21:18

mettre le tout dans un div et fixer en css une largeur maximale.

Re: problème de boucle

par nestor94 » 28 avr. 2023, 21:02

J'ai laissé tomber la table et cela semble presque bon ( ai mis center pour attribut css de img float).

dernier bémol ?
les avatars affichés prennent toute la largeur de l'écran, ça fait un peu mal aux yeux.
Comment faire pour faire un "saut de ligne" toutes les 20 images, par exemple?

Re: problème de boucle

par or 1 » 28 avr. 2023, 20:19

une table, c'est à utiliser quand on veut que des cellules aient une bordure. est-ce le cas ici ? non, donc il faut virer cette table inutile. la mise en page, cela se fait en css.

Re: problème de boucle

par two3d » 28 avr. 2023, 19:51

Raisonne logiquement : une table c'est quoi ? :
<table>
  <tr>
    <td>Info 1</td>
  </tr>
  <tr>
    <td>Info 2</td>
  </tr>
  etc...
</table>
Tu dois absolument boucler avec les balises nécessaires, donc
  <tr> <!-- un tr d'ouverture -->
    <td>...</td> <!-- un td de contenu -->
  </tr> <!-- un tr de fermeture -->
Plus d'infos sur la balise table

Re: problème de boucle

par nestor94 » 28 avr. 2023, 19:24

<?php    
require_once 'config.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
?>
<html>
 <head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
 <title>choix avatar</title>
<style type="text/css">
body {
color:black;
background-color:white;
background-image:url(images/fond.jpg);
background-attachment:fixed;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
color:#000000;
text-align:center;
margin: auto;
}
img{
  float: center;
}
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
th, td {
  padding: 5px;
  text-align: left;
}

</style>
 </head>
<body>
<div id="entete">
<center><img src="images/banniere.jpg"></center>
</div>
<br>
<table>
<tr>
<td>
<?php
$sql = "SELECT * FROM avatars ORDER BY name ASC";
$pdostat = $bdd->prepare($sql);
$pdostat->execute();
$rowAll = $pdostat->fetchAll();
foreach ( $rowAll as $row )
    {
?>
<a href="/choix_avatar_fin.php?id=<?php echo $row['id']; ?>"><?php echo '<img src="'.$row['name'].'">'; ?></a>
</tr>
</td>
<?php
}
?>
</body>
</html>
là, j'ai la banniere a gauche suivi de tous les avatars horizontalement.

Re: problème de boucle

par two3d » 28 avr. 2023, 16:40

Spols ta pas dit d'enlever ton foreach ;) seulement rajouter des tr dans ton foreach (boucle)

Re: problème de boucle

par Saian » 28 avr. 2023, 16:14

Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

Je suppose qu'il s'agit de cette requête "SELECT count(*) FROM avatars ORDER BY name ASC" qui ne contient pas de paramètre, il ne faut donc pas passer de paramètre au execute $pdostat->execute(array($name));.

Le code était bon au départ ($pdostat->execute();), pourquoi avoir ajouter ce tableau (array($name)) ?

Re: problème de boucle

par or 1 » 28 avr. 2023, 14:48

c'est mille fois plus simple de générer le code html avec du float que de le faire avec une table, et la table, bonjour pour l'adapter à la taille de l'écran.

Re: problème de boucle

par nestor94 » 28 avr. 2023, 14:37

c'est déjà au niveau de php que cela déconne.

Re: problème de boucle

par or 1 » 28 avr. 2023, 14:33

css float pour avoir un nombre de colonne qui s'adapte à la largeur de l'écran.
https://jsfiddle.net/xg5hudze/ cliquer sur run et faire varier la taille de la fenêtre de son navigateur.

Re: problème de boucle

par nestor94 » 28 avr. 2023, 14:15

Je souhaite obtenir cela

[url= https://i.postimg.cc/TPJYBw0d/Sans-titre-2.jpg[url]

j'ai modifié ainsi mais ca coince :oops:
<?php
$sql = "SELECT count(*) FROM avatars ORDER BY name ASC";
$pdostat = $bdd->prepare($sql);
$pdostat->execute(array($name));
$rows= $pdostat->fetchAll();
$num_rows = count($rows);
?>
<center>
<table>
<tr>
<td><a href="/choix_avatar_fin.php?id=<?php echo $rows['id']; ?>"><?php echo '<img src="'.$rows['name'].'">'; ?></a>
    </td>
  </tr>
</table>
Warning: Undefined variable $name in /home/clients/78f15c369c0786c4a419608e9e60028a/sites/xxxxx/choix_avatar.php on line 40

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /home/clients/78f15c369c0786c4a419608e9e60028a/sites/xxxxx/choix_avatar.php:40 Stack trace: #0 /home/clients/78f15c369c0786c4a419608e9e60028a/sites/xxxx.fr/choix_avatar.php(40): PDOStatement->execute(Array) #1 {main} thrown in /home/clients/78f15c369c0786c4a419608e9e60028a/sites/xxxxx/choix_avatar.php on line 40