Obtenir le nombre d'entrées dans un tableau

Répondre
burnedsoul
le 02/04/2007 à 17:47
burnedsoul
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
LA GLOBULE
le 02/04/2007 à 17:58
LA GLOBULE
Tu peux regarder le manuel PHP à la section "tableau", ca se trouve en 10 sec.

Mais sinon, pour l'information, tu peux utiliser count.
burnedsoul
le 02/04/2007 à 19:18
burnedsoul
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
LA GLOBULE
le 02/04/2007 à 20:03
LA GLOBULE
Ta gestion des checkbox à l'air plus que douteuse...

Tu cherches à faire quoi là ? Précocher des checkbox en fonction de quoi ?
burnedsoul
le 02/04/2007 à 20:30
burnedsoul
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
LA GLOBULE
le 02/04/2007 à 23:05
LA GLOBULE
<?php
for ($j=0; $j<count($exploded_rc);$j++) {
if ($exploded_rc[$j]==$nom_champ) $checked = " checked='checked'";
else $checked = "";
?>
<checkbox name="chkbox" value="1"<?php echo $checked; ?> />
<?php
}
?>


Et ce n'est pas bon ça ?

Ou alors, je ne comprend pas tout :/
burnedsoul
le 03/04/2007 à 10:50
burnedsoul
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
LA GLOBULE
le 03/04/2007 à 11:19
LA GLOBULE
Heu, bon je ne comprend rien.

Mais es tu sur que ton break ne se fait pas ?
Fais des echo dans ton for pour t'en rendre compte.
A mon avis il se fait.

Si il se fait, et que tu n'obtiens pas le résultat que tu veux, c'est que tu as un problème de conception, mais comme je ne comprend pas ce que tu fais, je ne pourrais pas trop t'aider.

PS : recoder PHPMyAdmin, cela ne sert à rien ;)
burnedsoul
le 03/04/2007 à 11:42
burnedsoul
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
burnedsoul
le 03/04/2007 à 11:48
burnedsoul
En fait le break sort du "if", mais pas du "for" :S
Webmaster de Clikmag http://www.clikmag.fr
Répondre
LoadingChargement en cours