PHPFrance

Discuter de tout ce qui touche au PHP, en français.

Vers le contenu

» Masquer les résultats de la recherche

Recherche dynamique PHPfrance

  1. Effectuez une recherche, les résultats s'afficheront dynamiquement ici.

1 colonne = ok ; 2 colonnes = ok ; mais 3 colonnes ??  Sujet résolu

Pour ceux qui débutent en PHP.

1 colonne = ok ; 2 colonnes = ok ; mais 3 colonnes ??

Messagede caribou le 07 Fév 2010, 00:55

Bonjour,
J'ai demandé de l'aide dernièrement pour conserver les cases cochées d'un checkbox lors d'un réaffichage de formulaire avec affichage dynamiques des valeurs ; ça fonctionne très bien.
(Merci à tous et à AB) http://forum.phpfrance.com/php-debutant/checkbox-t251529.html
Par défaut, les checkbox s'affichent en une liste de haut en bas (mes codes sont à l'intérieur d'une form).
J'ai utilisé l'opérateur modulo pour créer 2 colonnes ; ça fonctionne. Voici le code :
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
<?php

        echo "<hr width='400px' align='left'>";
        echo "<p>Genre(s) :<p/>";

echo '<table width="60%">';
$i = 0;
while ($i < 7)
{

$contenu = array(
"0" => "danse",
"1" => "conte",
"2" => "musique",
"3" => "théâtre",
"4" => "blues",
"5" => "chant",
"6" => "cirque",
);

foreach ($contenu as $key => $genr)
{
if (($i % 2) == 0){ ?>
<tr><td><?php echo $genr ; ?> <input type='checkbox' name='genres[]' value='$id_genres' <?php if (isset($_POST['genres']) && is_array($_POST['genres']) && in_array($id_genres,$_POST['genres'])) echo 'checked="checked"'?>/> </td>
<?php }elseif (($i % 2) == 1){ ?>
<td><?php echo $genr ; ?> <input type='checkbox' name='genres[]' value='$id_genres' <?php if (isset($_POST['genres']) && is_array($_POST['genres']) && in_array($id_genres,$_POST['genres'])) echo 'checked="checked"'?>/> </td>
<?php }
$i++;
}
}
echo '</table>';

        echo "<font color='red'> $erreur6</font>";
        echo "<hr width='400px' align='left'>";
?>

 

Je ne réussis pas à trouver comment afficher ma liste de genres en 3 colonnes au lieu de 2 (ni avec modulo ni avec la boucle for ($i = 0 ; $i < ... etc.). Merci pour des conseils.
caribou
Embryon
 
Messages: 11
Inscription: 03 Fév 2010, 00:46

Publicité

Re: 1 colonne = ok ; 2 colonnes = ok ; mais 3 colonnes ??

Messagede Invité le 07 Fév 2010, 03:02

salut

pti bout de code rapide:
il y avait un tuto d' un mamouth mais je l'ai pas retrouvé

Syntaxe: [ Télécharger ] [ Masquer ]
Code php

$contenu = array(
"0" => "danse",
"1" => "conte",
"2" => "musique",
"3" => "théâtre",
"4" => "blues",
"5" => "chant",
"6" => "cirque",
);

$_POST['genres'] = explode ('-','0-4-6');
print_r($_POST['genres']);

echo '<table width="60%">';
foreach ($contenu as $key => $val)
{
    $is_checked = (isset($_POST['genres']) AND in_array($key,$_POST['genres'])) ? 'checked="checked"' : null ;
   
    echo '<td ><input type="checkbox" name="genres[]" value="' . $key . '" '. $is_checked .'/>' . $val . '</td>';
   
    //%2 2 colonnes / %3 3 colonnes etc etc
    if ((($key % 3) == 0) and ($key != 0)) {

        echo '</tr><tr>';
    }
}
echo '</table>';


voila a+
Invité
 

Re: 1 colonne = ok ; 2 colonnes = ok ; mais 3 colonnes ??

Messagede Ryle le 07 Fév 2010, 12:27

Invité a écrit:il y avait un tuto d' un mamouth mais je l'ai pas retrouvé

Il y en a un dans la FAQ ;)
[Tuto][PHP] Nombre de Colonnes dynamique (opérateur Modulo)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...
Avatar de l’utilisateur
Ryle
Modérateur PHPfrance
Modérateur PHPfrance
 
Messages: 8136
Inscription: 07 Fév 2006, 17:25
Localisation: Lat: 48°89. Long: 2°30.

Re: 1 colonne = ok ; 2 colonnes = ok ; mais 3 colonnes ??

Messagede caribou le 07 Fév 2010, 21:03

Bonjour
Ça ne fonctionne pas tout à fait ; il y a bien 3 colonnes, mais en ajoutant plus de genres on se retrouve avec un "trou" dans la 3e colonne, à droite !?
Revoici le code
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
<?php

$contenu = array(
"0" => "danse",
"1" => "conte",
"2" => "musique",
"3" => "théâtre",
"4" => "blues",
"5" => "chant",
"7" => "jazz",
"8" => "chanson",
"9" => "blues",
"10" => "chant",
"11" => "jazz",
"12" => "chanson",
);

$_POST['genres'] = explode ('-','0-1-6');
print_r($_POST['genres']);

echo '<table width="60%">';
foreach ($contenu as $key => $val)
{
    $is_checked = (isset($_POST['genres']) AND in_array($key,$_POST['genres'])) ? 'checked="checked"' : null ;
   
    echo '<td ><input type="checkbox" name="genres[]" value="' . $key . '" '. $is_checked .'/>' . $val . '</td>';
   
    //%2 2 colonnes / %3 3 colonnes etc etc
    if ((($key % 3) == 2) and ($key != 0)) {

        echo '</tr><tr>';
    }
}
echo '</table>';
?>
caribou
Embryon
 
Messages: 11
Inscription: 03 Fév 2010, 00:46

Re: 1 colonne = ok ; 2 colonnes = ok ; mais 3 colonnes ??

Messagede Ryle le 07 Fév 2010, 23:51

Comme notre invité te l'a indiqué, c'est un bout de code rapide qu'il t'a proposé... en l'état il comporte quelques inconvénients et nécessite d'être complété :
- la première ligne de ton tableau ne comporte pas de balise <tr>, de même la dernière ligne ne comprend pas de </tr>
- si le tableau ne comporte pas exactement un nombre de cellules multiple de 3, le nombre de cellule de la dernière ligne ne sera pas cohérent
- la valeur de $key ne s'incrémente pas de façon séquentielle, du coup le fait qu'il y a des trous dans ton tableau (pas d'index n°6 par exemple) fait que ton opérateur modulo donne un résultat hasardeux...

bref, je t'invite à regarder de plus près le tutoriel mentionné ci-dessus ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...
Avatar de l’utilisateur
Ryle
Modérateur PHPfrance
Modérateur PHPfrance
 
Messages: 8136
Inscription: 07 Fév 2006, 17:25
Localisation: Lat: 48°89. Long: 2°30.

Re: 1 colonne = ok ; 2 colonnes = ok ; mais 3 colonnes ??  Sujet résolu

Messagede caribou le 09 Fév 2010, 05:59

En effet, le tuto
http://forum.phpfrance.com/faq-tutoriels/nombre-colonnes-dynamique-operateur-modulo-t241626.html
fonctionne à merveille avec mon code (pour faire 3 colonnes à partir de données dynamiques).
J'avais skipé (lire "sauté") le lien au tuto :roll:
Remerci
caribou
Embryon
 
Messages: 11
Inscription: 03 Fév 2010, 00:46

Re: 1 colonne = ok ; 2 colonnes = ok ; mais 3 colonnes ??

Messagede AB le 09 Fév 2010, 15:54

Invité a écrit:salut
il y avait un tuto d' un mamouth mais je l'ai pas retrouvé

Houlà... grave problème de mémoire... confondre un piaf et un mammouth... :mrgreen:
Quelques exemples de créations de sites sur http://www.abciweb.net
Avatar de l’utilisateur
AB
ViPHP
ViPHP
 
Messages: 4189
Inscription: 27 Déc 2006, 20:01
Localisation: Clermont-Ferrand


Retourner vers PHP débutant

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 12 invités

  • Publicité