Ses derniers messages sur les forums
Nouveau code via un foreach, qui fait le même souci, c'est à dire que la comparaison ne marche qu'une seule fois :s
<?
// Requete pour savoir si un des champs est affiché. Explose le champ pnom_u et vérifie avec le nom du champ.
$requete_checked = mysql_query("SELECT pnom_u from user1 where id_u = 1");
$rc = mysql_fetch_array($requete_checked);
$exploded_rc = explode(",", $rc[0]);
for ($i=1;$i<$nb_champs;$i++)
{
$nom_champ=mysql_field_name($requete, $i);
// Alternance des couleurs
if ($c==$c1) $c=$c2; else $c=$c1;
echo "
<tr bgcolor='$c'>
<td>";
// Test si le champ est protégé ou pas
if ($i<15) echo "<font color='#ff0000'>[*]</font>";
echo checkchamp($nom_champ);
// Test si le champ est affiché ou pas
//if ($r['afficher_c'] == 1) $checked = "selected='selected'";
$type_champ = mysql_field_type($requete, $i);
// Enleve le _u devant le nom de champ
echo ereg_replace("_u", "", $nom_champ);
echo "</td>
<td align='center'>$type_champ</td>
<td align='center'>
";
foreach ($exploded_rc as $var)
{
echo $var."-".$nom_champ;
if ($var==$nom_champ)
{
$checked = "checked='checked'";
break;
}
else
$checked="no";
}
echo "
<input type='checkbox' $checked />
</td>
<td align='center'>
<a href='?page=gestion_champs&action=del_champ&champ=$nom_champ' class='delete' title='Supprimmer' />X</a>
</td>
</tr>";
}
?>
Webmaster de Clikmag http://www.clikmag.fr
Justement c'est ça que je pige pas, quand j'affiche $exploded_rc[$j] et $nom_champ dans le if via un echo, les valeurs sont identiques ...
Webmaster de Clikmag http://www.clikmag.fr
C'est bizzare car avec ça :
<?
for ($i=1;$i<$nb_champs;$i++)
{
$nom_champ=mysql_field_name($requete, $i);
for ($j=0; $j<count($exploded_rc);$j++)
{
if ($exploded_rc[$j]==$nom_champ)
{
$checked = "checked='checked'";
echo "test ok";
}
else
{
$checked = "";
}
}
// Alternance des couleurs
if ($c==$c1) $c=$c2; else $c=$c1;
echo "
<tr bgcolor='$c'>
<td>";
// Test si le champ est protégé ou pas
if ($i<15) echo "<font color='#ff0000'>[*]</font>";
echo checkchamp($nom_champ);
// Test si le champ est affiché ou pas
//if ($r['afficher_c'] == 1) $checked = "selected='selected'";
$type_champ = mysql_field_type($requete, $i);
// Enleve le _u devant le nom de champ
echo ereg_replace("_u", "", $nom_champ);
echo "</td>
<td align='center'>$type_champ</td>
<td align='center'><input type='checkbox' $checked/></td>
<td align='center'>
<a href='?page=gestion_champs&action=del_champ&champ=$nom_champ' class='delete' title='Supprimmer' />X</a>
</td>
</tr>";
//$req = mysql_query("insert into champ (titre_c, type_c, etat_c, afficher_c, idchamp_c) values('$nom_champ', '$type_champ', '',1, $i)") or die('erreur');
}
echo "</table>";
?>
le "test ok" n'apparit qu'une seule fois alors que les deux valeurs sont identiques...
J'avoues ne pas comprendre là :S
Webmaster de Clikmag http://www.clikmag.fr
En fait le break sort du "if", mais pas du "for" :S
Webmaster de Clikmag http://www.clikmag.fr
Héhé, je suis quand même obligé, application propriétaire oblige ;)
En fait, j'ai une base de données avec des champs utilisateurs. L'utilisateur peut afficher ou pas des champs. Pour gérer cela, j'ai créer dans la table utilisateurs un premier uplet qui contiendra mes configurations, et par exemple dans mon champ pnom_u, il y aura la liste (séparé par des virgules, d'où le explode) des champs affichés.
Du coup ensuite je compare le explode "exploded_rc[]" aux champs de la base "nom_champ[]" afin par la suite de checker ou pas la checkbox.
Mais, les checkbox sont placés après la 2eme boucle for...
Alors soit il faudrait que je revois mon algo, mais là actuellement je ne vois pas trop d'autre algo logique ^^
Je te met ce message en attendant de tester via les echo mes boucles ;)
Webmaster de Clikmag http://www.clikmag.fr
nop c'est pas bon car ça va me creer une checkbox pour chaque champ contenu dans le exploded_rc[]. Or exploded_rc[] me sert juste de comparaison ;)
C'est vrai que c'est un peu compliqué à comprendre, vu que c'est déjà compliqué à expliquer ^^ si je te files ça tu vois un peu mieux ?
$requete = mysql_query("select * from user1 where id_u <>1 limit 0");
// Nombre de champs
$nb_champs = mysql_num_fields($requete);
$c1 = "#ffffff";
$c2 = "#dddddd";
$c = $c2;
// Requete pour savoir si un des champs est affiché. Explose le champ pnom_u et vérifie avec le nom du champ.
$requete_checked = mysql_query("SELECT pnom_u from user1 where id_u = 1");
$rc = mysql_fetch_array($requete_checked);
$exploded_rc = explode(",", $rc[0]);
for ($i=1;$i<$nb_champs;$i++)
{
$nom_champ=mysql_field_name($requete, $i);
for ($j=0; $j<count($exploded_rc);$j++)
{
if ($exploded_rc[$j]==$nom_champ)
{
$checked = "checked='checked'";
break;
}
else $checked = "";
}
// Alternance des couleurs
if ($c==$c1) $c=$c2; else $c=$c1;
echo "
<tr bgcolor='$c'>
<td>";
// Test si le champ est protégé ou pas
if ($i<15) echo "<font color='#ff0000'>[*]</font>";
echo checkchamp($nom_champ);
// Test si le champ est affiché ou pas
//if ($r['afficher_c'] == 1) $checked = "selected='selected'";
$type_champ = mysql_field_type($requete, $i);
// Enleve le _u devant le nom de champ
echo ereg_replace("_u", "", $nom_champ);
echo "</td>
<td align='center'>$type_champ</td>
<td align='center'><input type='checkbox' $checked/></td>
<td align='center'>
<a href='?page=gestion_champs&action=del_champ&champ=$nom_champ' class='delete' title='Supprimmer' />X</a>
</td>
</tr>";
//$req = mysql_query("insert into champ (titre_c, type_c, etat_c, afficher_c, idchamp_c) values('$nom_champ', '$type_champ', '',1, $i)") or die('erreur');
}
echo "</table>";
Merci en tout cas de te pencher dessus ;)
Webmaster de Clikmag http://www.clikmag.fr
Si $nom_champ est égal à $exploded_rc, on coche la checkbox, sinon on la décoche.
Il faut savoir qu'ensuite j'ai un truc du style :
<input type='checkbox' name='chkbox' $checked />
Webmaster de Clikmag http://www.clikmag.fr
Hum merci, j'ai un peu honte d'avoir zappé count ^^
Cela n'empêche cependant rien à mon blocage.
J'ai le code suivant :
<?
for ($i=1;$i<$nb_champs;$i++)
{
$nom_champ=mysql_field_name($requete, $i);
for ($j=0; $j<count($exploded_rc);$j++)
{
if ($exploded_rc[$j]==$nom_champ)
{
$checked = "checked='checked'";
break;
}
else $checked = "";
}
// ... etc
// Ensuite il y a une checkbox qui est du coup normalement checked, sauf que là il reste bloqué sur le premier :S
}
?>
Et je voudrais sortir de la seconde boucle for (là où il y a le break), afin de "checker" la checkbox mais j'ai l'impression qu'il sort uniquement du "if" :S
Ce n'est cependan pas très clair ?
Merci d'avance ;)
Webmaster de Clikmag http://www.clikmag.fr
Bonjour à tous et félicitations à LaGlobule pour le nouveau site ;)
J'ai un tableau obtenu via un explode() et je voudrais savoir combien d'entrées il contient et j'avoues que j'ai un petit trou de mémoire donc si quelqu'un pouvait me la rafraîchir, ça serait sympa ;)
Merci d'avance :)
Webmaster de Clikmag http://www.clikmag.fr
"Oui bien sur, alors tu as la piste de ski, la piste de montagne, la piste d'un cd, la piste du meurtrier etc etc..."
Mdr :p
En fait j'ai trouvé via PHP il y a les famauese Mysql_fiel_name() ou mysql_field_type(), pour info :)
Webmaster de Clikmag http://www.clikmag.fr