IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème lors d'une boucle


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut Problème lors d'une boucle
    Salut à tous,

    J'ai quelques problèmes à mettre en place ma boucle php.
    J'ai une fonction que je découpe en 2 parties afin de séparer les variables et pouvoir les faires apparaitres dans 2 div différentes.

    Bon c'est pas super clair, voici le code:

    Fonction 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function get_cats() {
    		global $settings, $prefix, $root_path;
     
    		$cat_data = "";
    		$res = mysql_query("select * from {$prefix}category WHERE cat_parent_id=0 ORDER BY cat_name") or report();
    		if(mysql_num_rows($res)==0) echo "Aucune donnée";
     
    		else {
     
    			$tot = mysql_num_rows($res);
    			$spannum = $tot+2;
     
    			for($i=0;$i<'4;$i++) {
    				$row = mysql_fetch_assoc($res);
     
    				$cat_url = $settings['set_seo_onoff'] =='off' 
    						? "$root_path/".plaintext($row['cat_name'])."-$row[cat_id].html"
    						: "$root_path/category.php?id=$row[cat_id]";
     
    				$cat_data .= "<a href=$cat_url>$row[cat_name]</a>";		
     
    			}
    		}
     
    		return $cat_data;			
        }
    J'obtiens: catégorie 1 - catégorie 2 - catégorie 3 - catégorie 4

    Fonction 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function get_cats2() {
    		global $settings, $prefix, $root_path;
     
    		$cat_data = "";
    		$res = mysql_query("select * from {$prefix}category WHERE cat_parent_id=0 ORDER BY cat_name") or report();
    		if(mysql_num_rows($res)==0) echo "Aucune donnée";
     
    		else {
     
    			$tot = mysql_num_rows($res);
    			$spannum = $tot+2;
     
    			for($i=5;$i<$tot;$i++) {
    				$row = mysql_fetch_assoc($res);
     
    				$cat_url = $settings['set_seo_onoff'] =='off' 
    						? "$root_path/".plaintext($row['cat_name'])."-$row[cat_id].html"
    						: "$root_path/category.php?id=$row[cat_id]";
     
    				$cat_data .= "<a href=$cat_url>$row[cat_name]</a>";		
     
    			}
    		}
     
    		return $cat_data;			
        }
    J'obtiens: catégorie 1 - catégorie 2 - catégorie 3 - catégorie 4
    au lieu de

    catégorie 5 - catégorie 6 - catégorie 7 - catégorie 8

    Comment est ce que je dois m'y prendre?

    Merci,

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Evidemment que tu obtiens la meme chose puisque tu fais deux fois la meme requete : ton $i n'intervient a aucun moment dans les données que tu recuperes ou anayses.

    De plus faire deux fonctions qui font la meme chose est une horreur : les parametres de fonction sont la pour ca.

    Je te propose beaucoup plus simplement de recuperer toutes tes informations dans un tableau et de le decouper ensuite comme tu veux pour l'affichage.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Ok,

    Le problème c'est que c'est bien plus facile de faire quelque chose dans le style, comme tu le vois je suis néophyte.
    A la base référenceur je me lance dans le code, avec beaucoup de mal.

    J'ai tenté de positionner la variable array_chunk() mais je m'y prend mal...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le problème c'est que c'est bien plus facile de faire quelque chose dans le style
    Au contraire, un code bien concu est facile a lire et utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function get_cats() {
    		global $settings, $prefix, $root_path;
     
    		$cat_data = array();
    		$res = mysql_query("select * from {$prefix}category WHERE cat_parent_id=0 ORDER BY cat_name") or report();
    		while($row = mysql_fetch_assoc($res)) {
                    $cat_url = $settings['set_seo_onoff'] =='off' 
    						? "$root_path/".plaintext($row['cat_name'])."-" . $row['cat_id'] . ".html"
    						: "$root_path/category.php?id=" . $row['cat_id'];
     
    				$cat_data[] = "<a href=$cat_url>" . $row['cat_name'] ."</a>";		
     
    			}
     
    		return $cat_data;			
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $chunk_data = array_chunk(get_cats(), 5);
     
    foreach ($chunk_data as $chunk) {
       echo '<div>' . implode('', $chunk) . '</div>';
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Je m'arrache les cheveux.

    Le code marche tout est corret, hormis le fait que je ne peux intégrer de php dans mon .tpl que j'appelais auparavent dans mon index.tpl via

    défini dans index.php

    je deviens fou, merci pour ton aide sabotage ( tu m'apprend à intégrer de nouvelle fonction par la même occasion, au moins un truc de positif)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    dans ton template, tu as 2 <div>, une premiere avec 5 elements, l'autre avec le reste ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [Débutant] Problème lors d'une Boucle If
    Par lFantasyz dans le forum MATLAB
    Réponses: 3
    Dernier message: 29/03/2014, 19h26
  2. [TP] Problème bizarre avec une boucle
    Par Dunk dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 10/12/2006, 14h06
  3. [FreeBSD] Problème lors d'une mise à jour
    Par gentox dans le forum BSD
    Réponses: 2
    Dernier message: 15/11/2006, 18h44
  4. Problème lors d'une restauration
    Par Hakunamatata dans le forum Administration
    Réponses: 7
    Dernier message: 27/05/2006, 20h49
  5. [Sécurité] problème lors d'une redirection
    Par sam01 dans le forum Langage
    Réponses: 4
    Dernier message: 10/04/2006, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo