Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Problème d'affichage boucle sur switch php

micaunprobzo, le mercredi 5 septembre 2007 à 11:39:13
Bonjour à tous
J'ai un souci d'affichage de résultat issu d'une boucle sur un switch...

ma table1 est composée comme suit:

id_table day h1 h2

1 Mon 0 5
2 Mon 0 0

[code]
$date1 = Mon;
$hms=1;
$i =1;
$r = 3;
$array=array();

while ( $i < $r) {
$resultatfiche=mysql_query("select * from table1 where id_table like '".$i."' and day like '".$date1."'",$connexion_sql);

if (mysql_num_rows($resultatfiche) != 0){
$day=mysql_result($resultatfiche,0,"day");
$h1=mysql_result($resultatfiche,0,"h1");
$h2=mysql_result($resultatfiche,0,"h2");

switch ($date1)
{
case 'Mon':
if (($h1<$hms) and ($hms<($h2))
{
$var='2';}
else {
$var='1';}
break;

case 'Tue':
if (($h1<$hms) and ($hms<($h2))
{
$var='2';}
else {
$var='1';}
break;

etc...

case 'Sun':
if (($h1<$hms) and ($hms<($h2))
{
$var='2';}
else {
$var='1';}
break;

else {
$var='3';
}
$array[$i]="$var";

$i++;
}
$array=array_count_values($array);
print_r($tableau);

[/code]

Résultat...

Array ( [3] => 1 [2] => 1 [] => 1 )

alors que je cherche à avoir:

Array ( [3] => 1 [2] => 1 [1] => 1 )

Quelqu'un peut il m'aider?
Configuration: Mac OS X
Safari 522.12.1
Répondre à micaunprobzo  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le mercredi 5 septembre 2007 à 11:56:33
Bonjour,

J'aurais déjà quelques remarques sur ta requête.
Je pense que tu peux l'optimiser de plusieurs façons :
1 - Evite d'utiliser des LIKE quand un = fait l'affaire. Pour des chiffres, pas besoin non plus de mettre des quotes '.
2 - Plutôt que de faire X requêtes pour chaque $i, il serait plus efficace de ne faire qu'une seule requête, qui prend tout les id entre $i et $r

Enfin ce n'est que de l'optimisation et n'est pas la cause de ton problème.

Sinon, c'est peut-être de là que vient ton problème, le dernier élément d'un switch n'est pas else {}, mais default:
Par ailleurs, tu peux factoriser des cas qui font la même chose en ne mettant pas de break; Enfin c'est surtout pour la présentation du code.
Dernière chose, dans ta dernière ligne, tu mets print_r($tableau), j'imagine que c'était en fait $array, non ?
Au final, ton switch deviendrait :
if (mysql_num_rows($resultatfiche) != 0)
{
	$day=mysql_result($resultatfiche,0,"day");
	$h1=mysql_result($resultatfiche,0,"h1");
	$h2=mysql_result($resultatfiche,0,"h2");

	switch ($date1)
	{
		case 'Mon':
		case 'Tue':
		case 'Wed':
		case 'Thu':
		case 'Fri':
		case 'Sat':
		case 'Sun':
			if ($h1<$hms && $hms<($h2))
			{
				$var='2';
			}
			else
			{
				$var='1';
			}
		break;

		default:
			$var='3';
		break;
	}
	$array[$i]=$var;
	$i++;
}
$array=array_count_values($array);
print_r($tableau);
En espérant que cela aide...

Xavier
Répondre à Reivax962

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
micaunprobzo, le mercredi 5 septembre 2007 à 14:16:58
Merci pour ta réponse je commence à voir le bout du tunnel surtout grâce au default!

ta deuxième remarque est le coeur de mon problème, je m'explique
lorsque je teste les id(s) invididuellement mon script fonctionne, mais lorsque je boucle avec mon while cela ne marche plus!

j'espère m'être bien expliqué.

Merci! Mic
Répondre à micaunprobzo

3


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le mercredi 5 septembre 2007 à 14:28:57
Mmmmh, que dirais-tu de ceci alors ?
$resultatfiche = mysql_query("SELECT * FROM table1 WHERE id_table >=  $i AND id_table < $r AND day = '$date1'", $connexion_sql);
$j = 0;
while ($data = mysql_fetch_assoc($resultatfiche))
{
	$day = $data["day"];
	$h1 = $data["h1"];
	$h2 = $data["h2"];

	switch ($date1)
	{
		case 'Mon':
		case 'Tue':
		case 'Wed':
		case 'Thu':
		case 'Fri':
		case 'Sat':
		case 'Sun':
			if ($h1<$hms && $hms<($h2))
			{
				$var='2';
			}
			else
			{
				$var='1';
			}
		break;
		default:
			$var='3';
		break;
	}
	$array[$j]=$var;
	$j++;
}
$array=array_count_values($array);
print_r($tableau);
Répondre à Reivax962

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 micaunprobzo, le mercredi 5 septembre 2007 à 16:33:59
Alléluia!
C'est exactement ça merci beaucoup Xav !
Mic
Répondre à micaunprobzo
[HTML/PHP] Afficher code (Résolu)Bonjour, Je voudrai savoir comment afficher du code php dans une textarea ? J'ai installé le script ici http://www.commentcamarche.net/faq/sujet 3157 webmaster coloration syntaxique dans vos pages web mais je ne peut mettre que du HTML. Une idée... www.commentcamarche.net/forum/affich-7644653-html-php-afficher-code
[Webmaster] Afficher facilement le code php/xhtml de vos pagesSi vous voulez proposer a vos visiteurs de voir la source de vos fichiers (PHP ou HTML), il y a plusieurs solutions. En php Afficher le code php Afficher le code html En html Informations Voir aussi En php Afficher le code php La... www.commentcamarche.net/faq/sujet-4469-webmaster-afficher-facilement-le-code-php-xhtml-de-vos-pages
PHP Recuperer valeur fichier input file (Résolu)Bonjour, J'ai un formulaire d'upload de fichier (image) UPLOAD.PHP et un autre fichier pour confirmer CONFIRMATION.PHP Mon problem est d'afficher sur confirmation.php le message suivant : Votre photo " nomdelimage.jpg " a été bien... www.commentcamarche.net/forum/affich-4239263-php-recuperer-valeur-fichier-input-file
[PHP] Lister le contenu d'un répertoireGrâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function... www.commentcamarche.net/faq/sujet-6773-php-lister-le-contenu-d-un-repertoire
[PHP] Détecter la résolution d'affichagePHP ne fournit pas de fonction permettant la détection de la résolution d'affichage car l'information concernant l'affichage du visiteur n'est pas fournie nativement par le protocole HTTP. Javascript par contre permet de détecter la résolution grâce... www.commentcamarche.net/faq/sujet-849-php-detecter-la-resolution-d-affichage
Afficher résultat si not null (Résolu)Bonjour, Je voudrais afficher le résultat $donnees['CE] s'il n'est pas nul. S'il est nul, je ne veux rien afficher du tout. Merci pour votre aide. www.commentcamarche.net/forum/affich-6322419-afficher-resultat-si-not-null
Probleme de \n entre mysql php etjavascript (Résolu)Bonjour, j'ai un petit soucis, je recupere une chaine dans ma table mysql, mais comme elle peut contenir des retour de chariot je fais replace('\n',' ',$string). Tout ça c'est super, ça s'affiche nikel en php, mais... www.commentcamarche.net/forum/affich-7468570-probleme-de-n-entre-mysql-php-etjavascript
Pb installation php (Résolu)bonjour, j'essaye d'installer un serveur apache-mysql-php. bilan : apache et mysql fonctionne. Par contre, quand j'essaye d'afficher une page php, il m'affiche le code de la page dans mon browser. Est-ce quelqu'un saurait... www.commentcamarche.net/forum/affich-2069655-pb-installation-php
PHP - Affichage de texte sur le navigateur Le but de PHP est de permettre la création de pages web dynamiques, ainsi son but premier est de pouvoir envoyer des données au navigateur. PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces fonctions ont la particularité de... www.commentcamarche.net/php/phpaffich.php3
PHP - Les structures conditionnelles On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1 et false à 0). Ces structures conditionnelles... www.commentcamarche.net/php/phpcond.php3
PHP - Connexion à un annuaire LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Un serveur LDAP est conçu pour être capable de gérer les opérations suivantes : établir la... www.commentcamarche.net/php/phpldap.php3
Toutes les réponses pour « Problème d'affichage boucle sur switch php »