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 :

développer les réponses venant d'un formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 23
    Par défaut développer les réponses venant d'un formulaire
    Bonjour,
    Avec Dreamweaver CS4 : Dans une page « seloger.php » j’ai fait un formulaire (pour des gens qui cherche à se loger) qui interroge une table « dormir » de la base « fds ». cette table « dormir » a les champs id, homme ,femme, couple, animaux, enfants, foyer, chambre, logement, nom, adresse, contact, beneficiaires, heuresdouverture, gestionnaire.
    Les résultats s’affichent dans une colonne gauche sur la page « selogerreponse.php » avec pour chaque réponse les champs nom et adresse.
    Je voudrais que lorsqu’on clique sur chacun des noms de ces résultats puissent apparaitre dans une autre colonne de la même page les champs nom, adresse, contact, beneficiaires, heuresdouverture, gestionnaire. Je ne sais pas faire cette dernière partie. Qui pourrait m’aider ? Je crois qu’il faut faire une session mais je ne sais pas faire… Merci pour vos réponses.


    voici le code

    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
     
    <?php
    // on fait une requête (les mots de la requête  :    where     order by     limit 
     
    if (isset ($_POST['homme'] ))
    {
    	$reponse = $bdd->query('SELECT * FROM dormir WHERE homme ="oui"' ); 
    }
     
    elseif (isset ($_POST['femme'] ))
    {
    	$reponse = $bdd->query('SELECT * FROM dormir WHERE femme ="oui" '); 
    }
     
    elseif(isset ($_POST['couple'] ))
    {
    	$reponse = $bdd->query('SELECT * FROM dormir WHERE couple ="oui" '); 
    }
     
    elseif(isset ($_POST['enfants'] ))
    {
    	$reponse = $bdd->query('SELECT * FROM dormir WHERE enfants ="oui" ');
    }
    elseif (isset ($_POST['animaux'] ))
    {
    	$reponse = $bdd->query('SELECT * FROM dormir WHERE animaux ="oui"  '); 
    }
     
    elseif (isset ($_POST['foyer'] ))
    {
    	$reponse = $bdd->query('SELECT * FROM dormir WHERE foyer ="oui"  '); 
    }
     
    elseif (isset ($_POST['chambre'] ))
    {
    	$reponse = $bdd->query('SELECT * FROM dormir WHERE chambre ="oui"  '); 
    }
    elseif (isset ($_POST['logement'] ))
    {
    	$reponse = $bdd->query('SELECT * FROM dormir WHERE logement ="oui" '); 
    }
    while ($donnees = $reponse->fetch())
    {    
     
    echo '<p></p>'; ?>
     
    <a class ="palatino16blanc" ><a href="/fds/scriptselogerdetails.php"><?php echo ($donnees['nom']).'<br />'; ?></a></a>
     
    <a class ="palatino14gris" >
    <?php  echo  nl2br ($donnees['adresse']).'<br />' ;?></a> 
     
    <a class ="palatino14grisitalic" >
    <?php	  echo '________________________________';
    }	
    ?></a>
    ]

  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
    Pour commencer regarde comment tu pourrais mieux gérer ta recherche :

    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
    <?php
    if (isset ($_POST['homme'] )) {
        $critere[] = "situation = 1"; 
    }
    elseif (isset ($_POST['femme'] )) {
        $critere[] = "situation = 2"; 
    }
    elseif(isset ($_POST['couple'] )) {
        $critere[] = "situation = 3";  
    }
     
    if (isset ($_POST['animaux'] )) {
    	$critere[] = "animaux = 1";
    }
     
    $sql = 'SELECT * FROM dormir';
     
    if (isset($critere)) {
      $sql .= " WHERE " . implode(" AND ", $critere);
    }
     
    $bdd->query($sql);
    La personne ne pouvant pas être à la fois un homme, une femme et un couple ca ne sert a rien d'avoir 3 champs différents dans la base ; donc ici je met 1 champ situation avec un numéro répresentant les cas.

    De la meme facon écrire "oui", "non" en informatique c'est de la perte d'energie ; un boolean est adapté pour une situation oui/non.

    Le reste de la modification te montre comment écrire une recherche multicritères et aussi surtout à ne pas répeter la requête entière.


    Pour ta question :
    Tu fais des liens du genre http://tapage.php?id=26454

    Dans tapage.php tu fais une lecture de la base pour l'id demandé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT nom, adresse, contact, beneficiaires, heuresdouverture, gestionnaire from ta_table WHERE id=" . inval($_GET['id']);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 23
    Par défaut
    merci sabotage pour ta réponse
    mais je ne comprends pas tout et surtout au départ, je me suis mal expliqué.
    Voilà où j'en suis :

    Ma table « dormir » a 40 enregistrements d’hébergements pour les gens de la rue
    Chaque hébergement est soit un foyer, soit une chambre, soit un logement
    Chaque hébergement accepte ou non les hommes, les femmes, les couples, les enfants, les animaux.
    J’ai donc une table qui a pour champs
    id, homme ,femme, couple, animaux, enfants, foyer, chambre, logement, nom, adresse, contact, beneficiaires, heuresdouverture, gestionnaire.
    Si un hébergement accepte les animaux je mets 1 dans le champ. Etc…

    En regardant ce que tu m'as dit, j'ai fait fait :

    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
    <?php
     
    if (isset ($_POST['homme'] )) {
        $critere[] = "situation = 1"; 
    }
    elseif (isset ($_POST['femme'] )) {
        $critere[] = "situation = 1"; 
    }
    elseif(isset ($_POST['couple'] )) {
        $critere[] = "situation = 1";  
    }
     
    elseif (isset ($_POST['animaux'] )) {
    	$critere[] = "situation = 1";
    }
    elseif (isset ($_POST['enfants'] )) {
    	$critere[] = "situation = 1";
    }
    elseif(isset ($_POST['foyer'] )) {
        $critere[] = "situation = 1"; 
    }
    elseif (isset ($_POST['chambre'] )) {
        $critere[] = "situation = 1"; 
    }
    elseif(isset ($_POST['logement'] )) {
        $critere[] = "situation = 1"; 
    }
     
    $sql = 'SELECT * FROM dormir';
     
     if (isset($critere)) {
      $sql .= " WHERE " . implode(" AND ", $critere);
    }
     
    $bdd->query($sql);
     
    {
     
    echo '<p></p>'; ?>
     
    <a class ="palatino16blanc" ><?php echo ($sql['nom']).'<br />'; ?></a></a>
     
    <a class ="palatino14gris" >
    <?php  echo  nl2br ($sql['adresse']).'<br />' ;?></a> 
     
    <a class ="palatino14grisitalic" >
    <?php	  echo '________________________________';
    }	
    ?></a>

    J’obtiens
    S
    S

    Peux-tu m’aider à avancer ?
    Merci.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 23
    Par défaut
    Bonjour, merci sabotage pour ta réponse sur la page détail qui m'a aidé
    mais pour ce qui est du code suivant j'obtiens le message" Erreur SQL !
    WHERE
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE' at line 1"
    Je ne comprends pas . Peux-tu me dire ce qu'il faut faire. J'essaye de mettre WHERE mais sans résultats ?
    Merci de me répondre



    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
        <?php
    // aide sabotage pour requête 
     
    if (isset ($_POST['homme'] )) {
        $critere = " situation = 1"; 
     
    }
    if (isset ($_POST['femme'] )) {
        $critere ="situation = 1"; 
     
    }
    if(isset ($_POST['couple'] )) {
        $critere = "situation = 1";  
     
    }
    if (isset ($_POST['animaux'] )) {
        $critere = "situation = 1";
     
    }
    if (isset ($_POST['enfants'] )) {
        $critere = "situation = 1";
     
    }
    if(isset ($_POST['foyer'] )) {
        $critere ="situation = 1"; 
     
    }
    if (isset ($_POST['chambre'] )) {
        $critere = "situation = 1"; 
     
    }
    if(isset ($_POST['logement'] )) {
        $critere = "situation = 1"; 
     
    }
    $sql = 'SELECT * FROM dormir';
     
     
    if (isset($critere)) {
     $sql = " WHERE " . implode(" AND ", $critere);  
     
    }
     $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
     
          //on organise $req en tableau associatif  $data['champ']
            //en scannant chaque enregistrement récupéré
            //on en profite pour gérer l'affichage
     
             //boucle
            while ($row_Rsselogerreponses = mysql_fetch_array($req))
     
    ?>

  5. #5
    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
    tu as retiré les []
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 23
    Par défaut
    c'est vrai merci
    Je viens de les remettre

    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
        <?php
    // aide sabotage pour requête 
     
    if (isset ($_POST['homme'] )) {
        $critere [] = " situation = 1"; 
     
    }
    if (isset ($_POST['femme'] )) {
        $critere[] ="situation = 1"; 
     
    }
    if(isset ($_POST['couple'] )) {
        $critere []= "situation = 1";  
     
    }
    if (isset ($_POST['animaux'] )) {
        $critere[] = "situation = 1";
     
    }
    if (isset ($_POST['enfants'] )) {
        $critere []= "situation = 1";
     
    }
    if(isset ($_POST['foyer'] )) {
        $critere []="situation = 1"; 
     
    }
    if (isset ($_POST['chambre'] )) {
        $critere[] = "situation = 1"; 
     
    }
    if(isset ($_POST['logement'] )) {
        $critere[] = "situation = 1"; 
     
    }
    $sql = 'SELECT * FROM dormir';
     
     
    if (isset($critere)) {
     $sql = " WHERE " . implode(" AND ", $critere);  
     
    }
     $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
     
     
     
             //boucle
            while ($row_Rsselogerreponses = mysql_fetch_array($req))
     
    ?>



    mais j'obtiens:
    Erreur SQL !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE situation = 1 AND situation = 1
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE situation = 1 AND situation = 1' at line 1

Discussions similaires

  1. formulaire- que les réponses soient publiées et visibles de tous
    Par hariboum dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 29/03/2012, 12h43
  2. formulaire + recuperé les réponses
    Par lol88 dans le forum Langage
    Réponses: 4
    Dernier message: 24/11/2009, 21h41
  3. [formulaire (QCM)] denombrer les réponses
    Par namstou3 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2007, 17h33
  4. Réponses: 2
    Dernier message: 03/11/2005, 19h48

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