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

PHP & Base de données Discussion :

afficher array dans nouvelle page en tableau php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut afficher array dans nouvelle page en tableau php
    Bonsoir,
    J'ai fait un formulaire PHP de recherches multiples (grâce à ce forum !) sur une bdd SQL.
    Je récupère bien les résultats de chacun des choix possible sous forme d'array.
    Ce que je souhaite à présent c'est afficher ces résultats dans une nouvelle page php, sous la forme d'un tableau sympa. Il y aurait une seule page et une seule colonne (pas beaucoup de résultats possibles).
    J'ai étudié le tuto. de Jérôme Réaux sur ce site, il est très bien mais je n'arrive pas à afficher tout cela dans une nouvelle page. Tout s'affiche sur la page du formulaire de recherche.
    Merci par avance si vous avez des conseils.
    Evelyne31

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    J'ai étudié le tuto. de Jérôme Réaux sur ce site, il est très bien mais je n'arrive pas à afficher tout cela dans une nouvelle page. Tout s'affiche sur la page du formulaire de recherche.
    Je ne connais pas ce tuto, donc je n'apporterais aucune critique ou remarque la dessus.

    Je réagit sur le fait de : Pourquoi vouloir faire cela sur une autre page ?

    Ce n'est pas forcément mieux de dissocier en plusieurs pages (au moins 2) pour faire une page de recherche.
    Je m'explique.

    Si par exemple on fait cela sur 2 pages différentes (page formulaire - page résultat de la recherche), l'une des difficultés c'est si une erreur est détectée dans la page de résultat.
    Si dans ce cas là on souhaite faire les chose dans les règles de l'art, il faudra lui re-proposer le même formulaire en lui indiquant où l'erreur s'est produite.
    (erreur de saisie, de choix, etc ...).
    Cela suppose de rediriger de la pages résultat vers la pages formulaire, c'est cette étape qui certes est réalisable, mais pas forcément si simple que cela.

    L'autre alternative est celle que j'ai dit au début : de le faire sur une même page.

    En faite, comme on fait un site dynamique, il ne faut pas toujours voir une page comme un élément unique, mais de voir qu'une pages peu avoir plusieurs écrans différents (même radicalement différents).
    - Un 1er écran (par défaut) du formulaire
    - Un 2ème écran différent (après validation) du résultat.
    (même pages pour les 2)

    Ceci va éviter de faire une redirection étant donnée qu'on se trouve toujours dans la même page.
    On aura détecté l'erreur, on pourra alors faire ce qu'on veut, comme proposer le formulaire en indiquant à l'utilisateur où l'erreur est survenue, cela de manière plus simple.



    A coté de ça, pour faire cela en 2 pages différentes (formulaire - résultat), il faut normalement indiquer le nom de la page "résultat" dans l'URL du formulaire de la page formulaire (attribut action de la balise form).
    En faite faut juste percevoir le formulaire comme un lien (à la différence qu'il permet de renvoyer des données via différents contrôles : input text|radio|checkbox, select, etc ...)

    Exemple :
    Page formulaire.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form action="resultat.php" method="post">
    ... etc ...
    </form>
    Page resultat.php (on traite le résultat)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo 'mot clé : '.$_POST['mot_cle'];
    ?>
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonsoir RunCodePhp,
    et merci pour ta réponse.
    Ce qui me paraissait simple devient compliqué, aïe, comme d'hab. Mais j'y arrive pas à pas grâce à ce forum.
    Je suis très intéressée par ton conseil de tout faire sur 1 page, une page avec plusieurs écrans... Je vois mais pas comment mettre en pratique.
    Comment faire pour que la partie formulaire de recherche disparaisse quand on affiche les résultats ?
    Pour le moment j'ai les résultats de la recherche au-dessus du formulaire de recherche, c'est vraiment pas top.
    Merci de me conseiller. Je ne poste pas de code pour le moment mais s'il le faut je le ferai.
    Evelyne31

  4. #4
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    très simple avec un pauvre if ... else
    tu teste dans le if que tes 3 valeurs (pays, département, etc...) sont bien existantes
    si oui tu exécutes la suite sinon tu exécute ton code de formulaire...

    tu peux bien sur inverser la logique du if tout dépend si tu testes des existences ou des non existence...

    si tu veux faire plusieurs pages alors tu testes ça au début du code pour stocker un numéro de page ainsi généré et tu utilise un switch sur lui pour encadrer plus proprement le code de chaque page...

    rien de bien compliqué par rapport à ce que tu as déjà appris donc
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #5
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonsoir ericd69,
    Contente de te retrouver sur ce forum où je ne te voyais plus depuis quelques temps, d'autant plus que je suis lyonnaise d'origine C'est vrai que grâce à toi depuis mon menu déroulant compliqué j'ai bien progressé.
    Je te remercie pour ta réponse mais là, je bloque, j'ai déjà un elseif dans mon code. Comment combiner le tout avec ce que tu me dis ?
    Pour les valeurs "departement", "commune", "natureRoche" ou "nomEtage", c'est soit l'une soit l'autre, pas de combinaison de recherche pour le moment.
    Je ne veux pas afficher absolument sur une autre page. Le conseil de RunCodePhm me convient tout à fait : tout faire sur une même page.
    Un conseil pour m'aiguiller ?
    Merci par avance et très bonne soirée. Ci-dessous le code de mon formulaire de recherche pour donner une idée plus précise de ma demande.
    Evelyne31

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php
    if (isset($_POST["recherche"]) )
    {
    	if (isset($_POST["mot_recherche"])
    	&& isset($_POST["type_recherche"]) )
    {
    	$mot_recherche = $_POST["mot_recherche"];
    	$type_recherche = $_POST["type_recherche"];
     
    	echo 'Resultat pour le mot recherché : '.$mot_recherche.' <br />';
    	echo 'Resultat pour le type de recherche : '.$type_recherche.' <br />';
     
    if ($_POST['type_recherche'] == 'nomDepartement')
    {
    	$req = parcoursRs(SQLSelect("
        	SELECT g.numGite
        	FROM GITE g
        	JOIN DEPARTEMENT d ON g.ID_departement = d.ID_departement
        	WHERE nomDepartement = '".$mot_recherche."'
         ") );
    print_r ($req);
        require_once 'lith_page_tableau.php';
    }
     
    elseif ($_POST['type_recherche'] == 'nomCommune')
    {
          $req = parcoursRs(SQLSelect("
        	SELECT g.numGite
        	FROM GITE g
        	JOIN COMMUNE c ON g.ID_commune = c.ID_commune
        	WHERE nomCommune = '".$mot_recherche."'
         ") );
    print_r ($req);
    }
     
    elseif ($_POST['type_recherche'] == 'natureRoche')
    {
          $req = parcoursRs(SQLSelect("
        	SELECT g.numGite
        	FROM GITE g    	
        	JOIN AS_GITE_ROCHE gr ON gr.GITE_ID_gite = g.ID_gite
        	JOIN ROCHE r ON r.ID_roche = gr.ROCHE_ID_roche
        	WHERE natureRoche = '".$mot_recherche."'
         ") );
    print_r ($req);
    }
     
    elseif ($_POST['type_recherche'] == 'nomEtage')
    {
       $req = parcoursRs(SQLSelect("
        	SELECT g.numGite
        	FROM GITE g
        	JOIN AS_GITE_ETAGE ge ON ge.GITE_ID_gite = g.ID_gite
        	JOIN ETAGE e ON e.ID_etage = ge.ETAGE_ID_etage
        	WHERE nomEtage = '".$mot_recherche."'
         ") );
    print_r ($req);
    }
     
    }
    }
    ?>

  6. #6
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    rien ne t'empêche d'en avoir des imbriqués....

    j'ai pas disparu j'interviens ici presque tous les jours ou dans le forum mysql...

    tu dois aussi envisager d'utiliser une session (voir session_start)

    $_session est alors une super globale que tu utilises comme un simple tableau...

    tu vas y créer tes variables stockant les valeurs venant de chaque partie des formulaire
    par exemple, tant que ta partie localisation n'a pas fini de remplir les valeurs dans le tableau de session ou que tu as un booléen qui est mis pour dire que tu veux modifier ses valeurs qui est à alors tu affiches ton code pour la localisation.
    Code php : 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
    27
    28
    29
    30
    31
    32
    33
    <?php
    session_start();
    //on initialise le tableau de session qui était vide pour lui donner la structure du formulaire
    if(empty($_SESSION['form'])
    {
      $_SESSION['form']=array(
        'loc'=>array('dep'=>null,'com'=>null,'mod'=true),
        //mettre les autres éléments des autres pages du formulaire
        'roc'=>array('nat'=>null,'eta'=>null,'mod'=true)
      );
    }
    else
    {
      //ici tu mets le code de récupération de toutes les valeurs $_post
      //et tu remplis les section de $_session avec
    }
    $page1=empty($_SESSION['form']['loc']['dep'])||empty($_SESSION['form']['loc']['com'])||$_SESSION['form']['loc']['mod'];
    $page2=empty($_SESSION['form']['roc']['nat'])||empty($_SESSION['form']['roc']['eta'])||$_SESSION['form']['roc']['mod'];
    if($page1)
    {
      //formulaire de traitement du formulaire département/commune
      //'mod' représente le fait de vouloir modifier l'un ou l'autre
    }
    if(!$page1&&$page2)
    {
      //formulaire de traitement du formulaire nature/étage
      //'mod' représente le fait de vouloir modifier l'un ou l'autre
    }
    if(!$page1&&!$page2)
    {
      //formulaire de validation finale
    }
    //on met là un petit formulaire présent sur toutes les pages qui permet de modifier l'une ou des pages en modifiant le 'mod' de la section correspondante dans ta session
    chaque formulaire met à jour la section de $_session correspondante

    voilà une idée...
    au début ça force l'ordre de parcours des formulaires mais après tu peux utiliser le petit formulaire pour naviguer entre les pages

    tu dois utiliser les valeurs dans la session pour initialiser chaque formulaire comme ça tu as celle qui est mémorisée et pas besoin de les transmettre toutes entres chaque page
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  7. #7
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonjour ericd69,
    Je te remercie pour ta longue réponse détaillée. L'utilisation de sessions me paraît bien complexe. Je profite de ce long week-end pour me lancer et je te tiens informé.
    Très bonne journée,
    Evelyne31

  8. #8
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonjour,
    Je suis "presque" arrivée au but donc je mets ce post en résolu.
    Je n'ai pas utilisé les sessions car cette partie de mon site sera en accès restreint déjà géré par des sessions.
    Un grand merci, très bonne journée,
    Evelyne31

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher PDF dans une page web
    Par Ishida dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/08/2008, 23h26
  2. resultat recherche dans nouvelle page
    Par ASP.net dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 10/07/2008, 09h28
  3. Ouvrir fichier dans nouvelle page
    Par crapouye dans le forum ASP.NET
    Réponses: 7
    Dernier message: 13/06/2008, 14h14
  4. ouvrir un lien dans nouvelle page avec css
    Par musicann dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 13/06/2007, 14h59
  5. ouverture dans nouvelle page
    Par yael_s dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/12/2006, 16h23

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