while retour à la ligne dans un tableau

ViPHP
AB
ViPHP | 5818 Messages

01 avr. 2010, 16:15

à tout hazard, j'ai pas beaucoup avancé,
Il y a un tuto sur ce que tu veux faire ici

Eléphant du PHP | 116 Messages

01 avr. 2010, 16:30

Salut,

On m'a déjà donné ce liens, dans un ancien post (d'aujourd'hui d'ailleurs).
J'ai dis ce que j'en pensai.

La proposition que ma faite devlopnet m'intéresse.

Mais j'arrive pas à avancé et tester mon code, car la partie du code que j'ai montré dans mon dernier message, pose un problème elle ne s'affiche pas. Et d'ailleurs depuis je continue d'essayé de comprendre qu'est ce qui ce passe. |*()

Après je vais essayé la méthode developnet ensuite je verrai, je vais relire et reanalysé ce que ma expliqué stealth, et j'irai enfin revoir le tutorial.

Eléphant du PHP | 116 Messages

01 avr. 2010, 16:32

d'ailleur je crois que je vais tout de suite faire ca,

quand je supprime la partie du code que m'a donné devlopnet, la page se raffiche.
	if (!$col) echo "<tr>";
	echo "<td width=\"32%\" height=\"150\"><a href=$dir_originaux.$photos_name><img src=$dir_miniatures.$photos_name></a></td>";
	echo "<td width=\"2%\">&nbsp;</td>";
	$col++;
	if ($col == 3) { echo "</tr>"; $col = 0;
Je vais voir les autres alternatives.

ViPHP
AB
ViPHP | 5818 Messages

01 avr. 2010, 16:53

Salut,

On m'a déjà donné ce liens, dans un ancien post (d'aujourd'hui d'ailleurs).
J'ai dis ce que j'en pensai.
Arf j'ai pas pu lire ce que tu en pensais, car je vois pas où.

Dans mes premiers scripts j'utilisais la méthode de devlopnet mais c'est plus compliquer de fournir un code html valide qu'en utilisant les modulos comme dans l'exemple du tuto.

Y'a quelque chose qui ne te conviens pas dans le tuto ?

Eléphant du PHP | 116 Messages

01 avr. 2010, 17:14

Ce n'est pas qu'il me conviens pas.

Mais aprêt l'avoir longtemp étudié je n'arrive toujours pas à le comprendre.
De plus il y a des parties de code qui ont été modifié je ne sais comment.
Et on sais pas trop ce qu'il à voulu mettre même si j'ai essayé.

J'ai pas copier sont code, je l'ai étudié et essayé de le modifié à ma guise.

Finalement, j'ai pris les parties que je comprenais, fais un mic mac avec d'autre proposition, ce que j'ai fais est peut être moins passe partout, mais à le mérite de fonctionner.

Pour ce qui est de mon code, j'ai trouvé d'ou venais l'erreur de syntaxe et je peux avancé.
A la fin bien évidement, la page s'affiche comme je veux mais bon j'essayé d'obtenir le résultat que je cherchai avant de crier réussite.
Pour le moment je n'y parviens pas. Mais bon c'est en grattant un peu plus que la surface qu'on apprend, et donc j'essai de faire avec avant de dire que je suis bloqué ;)

ViPHP
AB
ViPHP | 5818 Messages

01 avr. 2010, 17:58

Heu non ce tuto n'a pas été modifié...

Tiens je viens de copier le code et j'ai simplement remplacer la requête par un tableau pour qu'on puisse faire le test sans passer par une bdd et ça fonctionne correctement :
<?php

$nbCols = 3; // nombre de colonnes du tableau

$cpt = 0; // compteur d'éléments

$tab = array();

$tab[] = 'image 1';
$tab[] = 'image 2';
$tab[] = 'image 3';
$tab[] = 'image 4';
$tab[] = 'image 5';
$tab[] = 'image 6';
$tab[] = 'image 7';
$tab[] = 'image 8';


?>



<table>

  <tr>

    <th style="width:<?php echo round(100/$nbCols);?>%;">Colonne 1</th>

    <th style="width:<?php echo round(100/$nbCols);?>%;">Colonne 2</th>

    <th style="width:<?php echo round(100/$nbCols);?>%;">Colonne 3</th>

  </tr>

<?php



//$rs = mysql_query(...); // exécution de la requête

// Nota : on pourrait tout aussi bien parcourir les éléments d'un tableau ou les fichiers d'un dossier (ce que je fais dans cet exemple)


//foreach ($row=mysql_fetch_assoc($rs)) { // parcours des résultats

foreach ($tab as $value) { // parcours des résultats



    // début d'une ligne

    if ($cpt%$nbCols==0) // on divise le nb d'élément par le nb de colonnes. Si le reste est de 0 ...

        echo '<tr>'; // ..., alors on est sur le premier élément d'une ligne





    // On place chaque élément dans une cellule du tableau

    echo '<td>';

    echo $value; // affichage de tout ce qu'on veut dans la cellule

    echo '</td>';





    // fin d'une ligne

    if ($cpt%$nbCols==($nbCols-1)) // on divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ...

        echo '</tr>'; // ..., on est sur le dernier élément d'une ligne



    $cpt++; // on incrémente le compteur pour savoir où on en est

}



// Au cas où ...

if ($cpt!=0 && $cpt%$nbCols!=0) { // S'il n'y a pas eu assez de cellules dans la boucle pour finir la ligne ...

    echo '<td colspan="'.($nbCols - ($cpt%$nbCols) ).'">&nbsp;</td>'; // ... on complète avec une cellule vide de la bonne taille...

    echo '</tr>'; // ... et on ferme la ligne

}



?>



</table>

Eléphant du PHP | 116 Messages

01 avr. 2010, 18:39

Avant de changer de code, j'ai essayé tant bien que mal d'utilisé ce que ma montré develpnet, plus cours et plus simple à comprendre.

Malheureusement, il me permet juste d'affiche un seul ligne <tr>, et non 2 (pour afficher les informations de l'images ensuite.)

J'ai essayé de bidouiller, de faire des tests, mais rien de concluant.

J'en suis ici, developnet, avant de devoir revenir en arrière et réétudier les autres propositions, serai-il possible d'avoir une manoeuvre pour obtenir la deuxième ligne avec ta méthode?
	if (@!$col) echo "<tr><td width=\"5%\">&nbsp;</td>";
	echo "<td width=\"30%\" height=\"150\"><a href=$dir_originaux$photos_name><img src=$dir_miniatures$photos_name class=contour_$photos_uploader></a></td>";
	@$col++;
	if (@$col == 3) { echo "<td width=\"5%\">&nbsp;</td></tr>"; @$col = 0;}

Mammouth du PHP | 985 Messages

01 avr. 2010, 18:41

Pourquoi un @ avant la variable $col ?

faq-tutoriels/isset-empty-null-sont-sur ... 49889.html
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
AB
ViPHP | 5818 Messages

01 avr. 2010, 18:47

Là y'a un souci...

Je viens de te donner un code que tu n'as plus qu'à copier collé dans une page vierge pour faire des tests et ensuite l'adapter à ton code, et tu persistes dans une autre méthode dont je t'ai déjà dit qu'elle était plus compliquée à mettre en oeuvre et accessoirement moins performante.

C'est un poisson d'avril ?

Eléphant du PHP | 116 Messages

01 avr. 2010, 18:51

Parce que ca marche :P
C'est la deuxième fois que tu me donne ce tuto la, j'ai de la m3rd3 dans les yeux pour avoir l'impression que la solution semble évidente pour vous et que je continue de pas la voir ?

Tout les exemples que l'ont ma montré, aucun me semble intuitif, et j'apprends pas, j'aurai aimé un tuto sur le site du zero car c'est vraiment trés détailler on fini toujours par comprendre, mais ils n'ont pas celui que je cherche.

Mammouth du PHP | 985 Messages

01 avr. 2010, 18:55

Des @ dans une boucle et tu en conclu que cela fonctionne?

Eh bien, tu risques d'avoir de sérieuses surprises :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 2287 Messages

01 avr. 2010, 18:59

Parce que ca marche :P
C'est la deuxième fois que tu me donne ce tuto la, j'ai de la m3rd3 dans les yeux pour avoir l'impression que la solution semble évidente pour vous et que je continue de pas la voir ?

Tout les exemples que l'ont ma montré, aucun me semble intuitif, et j'apprends pas, j'aurai aimé un tuto sur le site du zero car c'est vraiment trés détailler on fini toujours par comprendre, mais ils n'ont pas celui que je cherche.
En fait les tutos sont rédigés par des êtres humains, c'est pourquoi ils sont par définition imparfaits.

Le tuto modulo nous paraît très clair à nous... Parcequ'on saurait tout refaire sans le tuto :) On a du mal à se mettre dans la situation exacte de quelqu'un qui a besoin d'apprendre, comme toi, et on a besoin de retours pour l'améliorer, le corriger... Pour qu'il soit de plus en plus accessible.

On a bien compris maintenant qu'il ne te parlait pas ce tuto. Pas de problème, personne n'est vexé. Ce qui nous aiderait (à améliorer le tuto d'une part, et à t'aider d'autre part), c'est que tu nous dises plus précisément ce qui te gêne dedans, les parties qui te paraissent les moins claires, l'endroit ou t'as complètement décroché, etc...

Car comme AB te le précise, la méthode proposée dans le tuto (faisant appel au modulo) est vraiment la meilleure pour ce que tu veux faire. Ce serait bien pour toi et pour ton script que tu la comprennes. Et on est prêts à te réexpliquer différemment s'il le faut, il suffit de demander.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 116 Messages

01 avr. 2010, 19:02

Ok AB lol, c'est bon c'est juste j'étais partie sur une méthode, et je voulai pas avoir perdu mon temps, mais bon comme je tourne en rond, et que ta méthode a l'air géniale, je commence à travailler dessus !

Et non pas de blague de paque, je suis au Vietnam et on faite pas paques ici. :(

Calimero, je m'accroche sur le tuto et la méthode de AB, et si vraiment c'est pas possible, je te donne quelque clarification.
Merci pour ta réponse en tout cas.
D'ailleurs merci à tout le monde ;) Je me sens moins seul comme ça dans mon périple :lol:

ViPHP
AB
ViPHP | 5818 Messages

01 avr. 2010, 19:17

je m'accroche sur le tuto et la méthode de AB...
Heu... rendons à César ce qui appartient à César. C'est la méthode de Ryle :wink:

J'ai juste remplacé deux lignes pour que tu puisses tester dans une page vierge sans avoir à rien ajouter.

Pour l'adapter à ton code, au lieu de lister le tableau, il te suffit de lister le résultat de ta requête.

Bon courage, et comme te l'a dit Calimero si tu as un pb, dis nous où ça coince :)

Mammouth du PHP | 985 Messages

01 avr. 2010, 19:22

Puis ce n'est pas qu'une question de tuto, c'est le principe du modulo dans une boucle surtout, j'ai moi-même eu du mal au départ à m'en servir...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.