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 :

[Système] Boucle + GET + Explode --> conception [Fait]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut [Système] Boucle + GET + Explode --> conception
    Bonjour à tous,

    voilà j'ai un problème de conception, je n'arrive même pas a concevoir avec des boucles,... ce que je dois faire ^^si l'un d'entre vous avez une petite idée de la voie a prendre ça m'arrangerais bien, j'ai testé quelques petite chose sans résultat...

    Donc voilà le problème :

    j'ai une page avec un element GET ( page?PID= )
    en fonction de ce PID je selectionne des éléments dans ma base de donnée via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM pages WHERE Id_parent= '.$_GET['PID'].'  ORDER BY Id_parent, Id_page ASC';
    Jusque là tout est ok ^^

    Mais voilà j'aimerais limité le contenue en fonction d'un de critére que j'aurais définit dans la base de donnée et donc j'emploie un :
    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
     
    if(isset($_GET['PID']))
    { 
    	$requete = 'SELECT * FROM pages WHERE Id_parent= '.$_GET['PID'].' ' ;
    	$requete .= ' ORDER BY Id_parent, Id_page ASC'; 
    }
    else
    {
    	$requete = 'SELECT * FROM pages WHERE Id_page=0 ' ;
    	$cat = explode("-", $session->cat);
    		for($i=0; $i<count($cat);$i++ )
    		{
    		  $requete .= " OR Id_page=$cat[$i] ";
    		} 
    	$requete .= ' ORDER BY Id_parent ASC'; 
    }
    $retour = mysql_query ($requete) or die ('erreur sur2 '.$requete.' : '.mysql_error());

    Tout est ok, je suis limité a mes Id_parent comme il le faut mais voilà mon probléme arrive... sauf quand j'ai un GET mais j'aimerais justement que lorsqu'il y a un GET on limite au page, sous page, sous sous page,... des Id_parent définit...

    Pour mieux comprendre voici l'architecture de la base de donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Id_page	       Titre		Description	Contenu	      Id_parent
    1		  Contenu 1	xxxxxxxxxx	xxxxxxxx		0
    2		  Contenu 2	xxxxxxxxxx	xxxxxxxx		1
    3		  Contenu 3  	xxxxxxxxxx	xxxxxxxx		2
    4		  Contenu 4  	xxxxxxxxxx	xxxxxxxx		2
    5		  Contenu 5  	xxxxxxxxxx	xxxxxxxx		2
    6		  Contenu 6  	xxxxxxxxxx	xxxxxxxx		5
    7		  Contenu 7 	xxxxxxxxxx	xxxxxxxx		5
    8		  Contenu 8	xxxxxxxxxx	xxxxxxxx		1
    9		  Contenu 9	xxxxxxxxxx	xxxxxxxx		0
    ce qui nous donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Contenu 1
    	Contenu 2
    		Contenu 3
    		Contenu 4
    		Contenu 5
    			Contenu 6
    			Contenu 7
    	Contenu 8
    Contenu 9
    ET donc voilà j'aurais aimé que l'on puisse via une boucle ou autre modifier la sélection via Id_parent avec l'Id_page des sous page qui deviendrais Id-parent
    tout en limitant ces id là en fonction du paramétre de départ à savoir $cat = explode("-", $session->cat);


    Voilà je sais pas si j'ai été presque clair ou vraiment pas ...

    si besoin je réponds au plus vite

    merci beaucoup d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    Voila la réponse a mon problème comme je le conçois , on sait jamais que je sois pas trop dans le faux, parcontre je vois pas comment le dévelloper ...

    PID = cat[$i]
    or PID = Id_page where Id_parent = cat[$i]
    or PID = Id_page where Id_parent = Id_page (de la page précédente) (mais en vérifiant que Id_page de la précédente est possèdent bien un Id_parent = cat[$i]
    et ainsi de suite

    le tout dans une clause if ...

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 398
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 398
    Points : 15 760
    Points
    15 760
    Par défaut
    pour faire une recherche de ce type dans une arborescence avec une seule requête, je te conseille de modifier la structure de ta table et d'utiliser ça :
    http://sqlpro.developpez.com/cours/arborescence/

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    je viens de regarder ceci, merci...

    mais je ne vois pas trop ou et comment modifier ma table...

    deplus si je modifie ça ici, je dois modifier l'entiéreté de mes script qui est un boulot de fou ^^je le suis un peu mais s'il y a d'autre solution ^^

    un simple
    if(les condition de $_GET['PID]){ j'affiche} else { echo ' accés interdit ';}
    n'est il pas envisageable?

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 398
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 398
    Points : 15 760
    Points
    15 760
    Par défaut
    Citation Envoyé par acppca Voir le message
    deplus si je modifie ça ici, je dois modifier l'entiéreté de mes script qui est un boulot de fou
    oui, ce système est entièrement différents si tu veux ajouter ou retirer une catégorie


    Citation Envoyé par acppca Voir le message
    un simple
    if(les condition de $_GET['PID]){ j'affiche} else { echo ' accés interdit ';}
    n'est il pas envisageable?
    ce n'est pas possible avec une seule requête
    si tu tiens à garder cette structure, tu devras d'abord parcourir ta table de façon récursive pour trouver toutes les sous-catégories valables et seulement ensuite tu pourras faire at requête pour chercher les objets qui sont dans ces sous catégories

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    et bien je pars sur la solution de fou numero deux ^^

    je vois pas comment faire, une idée? mais j'ai mon aprés midi je vais cherché ça ^^
    c'est ce que je voulais dès le départ en fait mais c'est assez costaud non?

    je pense partir sur une boucle for qui parcourt le tout en modifiant id_parent via l'id_page trouvé....

    et aprés sur mon if final

    je vois rien d'autre comme solutions pour parcourir, si tu as une idée?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    Pour la boucle for, j'ai pensé a faire quelquechose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $id_page= $_GET['PID'];
     
    tant que 
    	$id_page = $id_parent (select id_parent, Id_page AS next from pages where id_parent = id_page)
     
     on fait 
    	$id_page = $next
    j'ai deux questions c'est faisable? et je vois pas comment construire mon for...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    et bien je ne m'en sors vraiment pas...

    j'essaie plusieurs chose mais je penses que là je bloque reelement...

    si vous aviez une idée, un example...?

Discussions similaires

  1. [PHP-JS] boucle for + explode
    Par acppca dans le forum Langage
    Réponses: 14
    Dernier message: 16/08/2007, 14h43
  2. Système de caméra, soucis de conception
    Par mister3957 dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 29/05/2007, 17h11
  3. [Système] $_GET[] et explode ?
    Par mmcstat dans le forum Langage
    Réponses: 1
    Dernier message: 13/05/2007, 06h23
  4. [Système] Boucle insertion
    Par webdestination dans le forum Langage
    Réponses: 7
    Dernier message: 03/01/2007, 17h41
  5. [Système] Pb fonction explode
    Par clairette dans le forum Langage
    Réponses: 3
    Dernier message: 17/05/2006, 15h40

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