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 :

la page détaillée affiche toujours les mêmes données


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 19
    Points
    19
    Par défaut la page détaillée affiche toujours les mêmes données
    Bonjour,

    Je suis en train de monter mon premier site dynamique à l'aide de quelques tutoriels. Voilà donc que j'aurais besoin d'un petit coup de main s'il-vous-plait.

    Il y a:
    - Une page Master qui affiche 4 appartements(repeat)
    - Une page détails pour chaque appart.

    Que je teste avec id=1 ou id=2 ou 3, la page détaillée affiche toujours les données de l'appartement 1. La variable 'appartementsID' n'a pas l'air d'être prise en compte. Ça marche pourtant bien ailleurs dans le site.

    Tables:
    appartements -> id nom ville arrondissement quartier
    description -> id_appart superficie equipement
    images -> id_appart plan thumb thumb2
    commentaires -> nom date commentaire

    C'est avec la requête ci-bas que j'ai pu extraire toutes les informations dont j'ai besoin pour mes pages (Requête sur 3 des 4 tables, toutes les colonnes):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php require_once('../Connections/PHPMySQLconn.php'); ?>
    <?php
    $colname_rsFiche = "-1";
    if (isset($_GET['appartementsID'])) {
      $colname_rsFiche = (get_magic_quotes_gpc()) ? $_GET['appartementsID'] : addslashes($_GET['appartementsID']);
    }
    mysql_select_db($database_PHPMySQLconn, $PHPMySQLconn);
    $query_rsFiche = sprintf("SELECT appartements.id, appartements.nom, appartements.ville, appartements.arrondissement, appartements.quartier, description.id_appart, description.superficie, description.equipement, images.thumb1, images.photo1, images.thumb2, images.photo2 WHERE id = %s", $colname_rsFiche);
    $rsFiche = mysql_query($query_rsFiche, $PHPMySQLconn) or die(mysql_error());
    $row_rsFiche = mysql_fetch_assoc($rsFiche);
    $totalRows_rsFiche = mysql_num_rows($rsFiche);
    ?>
    Si vous pouvez me dire ce que je dois faire, sinon me donner un indice, j'apprécierais beaucoup !

    à bientôt,

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    faudrait voir également ton lien.
    Sinon fait un echo $query_rsFiche pour voir ta requête. T'as pas une erreur parce que là t'as oublié la condition FROM dans ta requête.
    D'autre part vaut mieux utiliser mysql_real_escape_string() que addslashes().
    Bye
    Vive les roues en pierre

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 19
    Points
    19
    Par défaut J'ai reformulé ma requête
    Bonjour me revoilà,

    J'arrive bien à afficher la liste des appartements sur la page Master. Les liens de chaque appart mène bien vers la page détails (fiche.php). Cependant, les données proviennent d'une seule table. Avec le même cheminement, j'ai besoin d'afficher des données en provenance de 6 tables et non une seule comme actuellement.
    Comment ajouter ses tables (description, prix_defaut, images, commentaires, ...) et toutes leurs colonnes, en s'assurant que la variable prennent en compte les nouvelles tables ?

    Liens vers mes tables: http://www.yourfilehost.com/media.ph...ile=tables.gif

    Code de la page Master (coordonnees.php):

    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
    <?php require_once('../Connections/PHPMySQLconn.php'); ?>
    <?php
    $currentPage = $_SERVER["PHP_SELF"];
     
    $maxRows_rsBisCoordonnees = 4;
    $pageNum_rsBisCoordonnees = 0;
    if (isset($_GET['pageNum_rsBisCoordonnees'])) {
      $pageNum_rsBisCoordonnees = $_GET['pageNum_rsBisCoordonnees'];
    }
    $startRow_rsBisCoordonnees = $pageNum_rsBisCoordonnees * $maxRows_rsBisCoordonnees;
     
    mysql_select_db($database_PHPMySQLconn, $PHPMySQLconn);
    $query_rsBisCoordonnees = "SELECT * FROM appartements ORDER BY nom ASC";
    $query_limit_rsBisCoordonnees = sprintf("%s LIMIT %d, %d", $query_rsBisCoordonnees, $startRow_rsBisCoordonnees, $maxRows_rsBisCoordonnees);
    $rsBisCoordonnees = mysql_query($query_limit_rsBisCoordonnees, $PHPMySQLconn) or die(mysql_error());
    $row_rsBisCoordonnees = mysql_fetch_assoc($rsBisCoordonnees);
     
    if (isset($_GET['totalRows_rsBisCoordonnees'])) {
      $totalRows_rsBisCoordonnees = $_GET['totalRows_rsBisCoordonnees'];
    } else {
      $all_rsBisCoordonnees = mysql_query($query_rsBisCoordonnees);
      $totalRows_rsBisCoordonnees = mysql_num_rows($all_rsBisCoordonnees);
    }
    $totalPages_rsBisCoordonnees = ceil($totalRows_rsBisCoordonnees/$maxRows_rsBisCoordonnees)-1;
     
    $queryString_rsBisCoordonnees = "";
    if (!empty($_SERVER['QUERY_STRING'])) {
      $params = explode("&", $_SERVER['QUERY_STRING']);
      $newParams = array();
      foreach ($params as $param) {
        if (stristr($param, "pageNum_rsBisCoordonnees") == false && 
            stristr($param, "totalRows_rsBisCoordonnees") == false) {
          array_push($newParams, $param);
        }
      }
      if (count($newParams) != 0) {
        $queryString_rsBisCoordonnees = "&" . htmlentities(implode("&", $newParams));
      }
    }
    $queryString_rsBisCoordonnees = sprintf("&totalRows_rsBisCoordonnees=%d%s", $totalRows_rsBisCoordonnees, $queryString_rsBisCoordonnees);
    ?>
    Code de la page Détails (fiche.php):
    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
    <?php require_once('../Connections/PHPMySQLconn.php'); ?><?php
    $maxRows_DetailRS1 = 4;
    $pageNum_DetailRS1 = 0;
    if (isset($_GET['pageNum_DetailRS1'])) {
      $pageNum_DetailRS1 = $_GET['pageNum_DetailRS1'];
    }
    $startRow_DetailRS1 = $pageNum_DetailRS1 * $maxRows_DetailRS1;
     
    mysql_select_db($database_PHPMySQLconn, $PHPMySQLconn);
    $recordID = $_GET['recordID'];
    $query_DetailRS1 = "SELECT * FROM appartements WHERE id = $recordID ORDER BY nom ASC";
    $query_limit_DetailRS1 = sprintf("%s LIMIT %d, %d", $query_DetailRS1, $startRow_DetailRS1, $maxRows_DetailRS1);
    $DetailRS1 = mysql_query($query_limit_DetailRS1, $PHPMySQLconn) or die(mysql_error());
    $row_DetailRS1 = mysql_fetch_assoc($DetailRS1);
     
    if (isset($_GET['totalRows_DetailRS1'])) {
      $totalRows_DetailRS1 = $_GET['totalRows_DetailRS1'];
    } else {
      $all_DetailRS1 = mysql_query($query_DetailRS1);
      $totalRows_DetailRS1 = mysql_num_rows($all_DetailRS1);
    }
    $totalPages_DetailRS1 = ceil($totalRows_DetailRS1/$maxRows_DetailRS1)-1;
    ?>

    Merci !

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Il faut que tu fasses des jointures internes pour chaque table, ex :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT appartements.nom, commentaires.auteur, images.plan
    FROM appartements
    INNER JOIN commentaires ON appartements.id = commentaires.id_appart
    INNER JOIN images ON appartements.id = images.id_appart

    le order by et limit servent à rien vu qu'en théorie le champ id est en unique dans ta table.
    Vive les roues en pierre

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 19
    Points
    19
    Par défaut Requête n'affiche qu'un ID au lieu des 4
    Citation Envoyé par Djakisback
    Il faut que tu fasses des jointures internes pour chaque table
    Bonjour Djakisback,

    Merci pour la réponse. J'ai suivi ton conseil. J'arrive maintenant à afficher les données de toutes les tables nécessaires à ma page Master.

    Malheureusement, ma requête n'affiche que les données de ID 3. Les autres ID, 1, 2 et 4 n'apparaissent plus dans la liste de ma page Master. Est-ce qu'un WHERE pourrait me permettre de tout afficher ?

    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
    <?php require_once('../Connections/PHPMySQLconn.php'); ?>
    <?php
    $currentPage = $_SERVER["PHP_SELF"];
     
    $maxRows_rsBisCoordonnees = 4;
    $pageNum_rsBisCoordonnees = 0;
    if (isset($_GET['pageNum_rsBisCoordonnees'])) {
    $pageNum_rsBisCoordonnees = $_GET['pageNum_rsBisCoordonnees'];
    }
    $startRow_rsBisCoordonnees = $pageNum_rsBisCoordonnees * $maxRows_rsBisCoordonnees;
     
    mysql_select_db($database_PHPMySQLconn, $PHPMySQLconn);
    $query_rsBisCoordonnees = "SELECT appartements.id, appartements.nom, appartements.ville, appartements.arrondissement, appartements.quartier, appartements.cote, description.superficie, description.courte_desc, description.description, description.equipement, description.cadre, description.environs, description.transport, description.metro, description.avertissement, commentaires.date, commentaires.titre, commentaires.auteur, commentaires.id_commentaire, commentaires.pays, images.plan, images.thumb1, images.thumb2, images.thumb3, images.thumb4, images.thumb5, images.thumb6, images.thumb7, images.thumb8, images.thumb9, images.thumb10, images.thumb11, images.thumb12, images.thumb13, images.thumb14, images.thumb15, images.photo1, images.photo2, images.photo3, images.photo4, images.photo5, images.photo6, images.photo7, images.photo8, images.photo9, images.photo10, images.photo11, images.photo12, images.photo13, images.photo14, images.photo15, images.flash1, images.flash2, images.flash3, nondispo.res_date_debut, nondispo.res_date_fin, prix_defaut.prix_3j, prix_defaut.prix_sem, prix_defaut.prix_2sem, prix_defaut.prix_mois, prix_saisons.id_saison, prix_saisons.prix_3j, prix_saisons.prix_sem, prix_saisons.prix_2sem, prix_saisons.prix_mois, promotions.id_promo, promotions.prom_date_debut, promotions.prom_date_fin, proprietes.nom_propriete, proprietes.icone1, proprietes.icone2, proprietes.icone3, proprietes.icone4, proprietes.icone5, proprietes.icone6, proprietes.icone7, proprietes.icone8, proprietes.icone9, proprietes.icone10, proprietes.icone11, proprietes.icone12, proprietes.icone13, proprietes.icone14, proprietes.icone15, proprietes_appart.id_propriete FROM appartements INNER JOIN description ON appartements.id = description.id_appart INNER JOIN commentaires ON appartements.id = commentaires.id_appart INNER JOIN images ON appartements.id = images.id_appart INNER JOIN nondispo ON appartements.id = nondispo.id_appart INNER JOIN prix_defaut ON appartements.id = prix_defaut.id_appart INNER JOIN prix_saisons ON appartements.id = prix_saisons.id_appart INNER JOIN promotions ON appartements.id = promotions.id_appart INNER JOIN proprietes ON appartements.id = proprietes.id_appart INNER JOIN proprietes_appart ON appartements.id = proprietes_appart.id_appart";
    $query_limit_rsBisCoordonnees = sprintf("%s LIMIT %d, %d", $query_rsBisCoordonnees, $startRow_rsBisCoordonnees, $maxRows_rsBisCoordonnees);
    $rsBisCoordonnees = mysql_query($query_limit_rsBisCoordonnees, $PHPMySQLconn) or die(mysql_error());
    $row_rsBisCoordonnees = mysql_fetch_assoc($rsBisCoordonnees);
     
    if (isset($_GET['totalRows_rsBisCoordonnees'])) {
    $totalRows_rsBisCoordonnees = $_GET['totalRows_rsBisCoordonnees'];
    } else {
    $all_rsBisCoordonnees = mysql_query($query_rsBisCoordonnees);
    $totalRows_rsBisCoordonnees = mysql_num_rows($all_rsBisCoordonnees);
    }
    $totalPages_rsBisCoordonnees = ceil($totalRows_rsBisCoordonnees/$maxRows_rsBisCoordonnees)-1;
     
    $queryString_rsBisCoordonnees = "";
    if (!empty($_SERVER['QUERY_STRING'])) {
    $params = explode("&", $_SERVER['QUERY_STRING']);
    $newParams = array();
    foreach ($params as $param) {
    if (stristr($param, "pageNum_rsBisCoordonnees") == false && 
    stristr($param, "totalRows_rsBisCoordonnees") == false) {
    array_push($newParams, $param);
    }
    }
    if (count($newParams) != 0) {
    $queryString_rsBisCoordonnees = "&" . htmlentities(implode("&", $newParams));
    }
    }
    $queryString_rsBisCoordonnees = sprintf("&totalRows_rsBisCoordonnees=%d%s", $totalRows_rsBisCoordonnees, $queryString_rsBisCoordonnees);
    ?>

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/07/2014, 12h02
  2. [CRXI 2]Des tableaux toujours les mêmes problèmes (quadrillage)
    Par lazarel dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 24/07/2007, 10h04
  3. [WebForms]Afficher toujours le même URL pour toutes mes pages
    Par Irish dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 15/12/2006, 14h44
  4. [CR9 et VB6] n'affiche pas les nouvelles donnée
    Par moumoule17 dans le forum SDK
    Réponses: 3
    Dernier message: 22/04/2005, 12h03
  5. Réponses: 4
    Dernier message: 12/06/2003, 21h42

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