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 un enregistrement spécifique après requête via Get sur URL


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Afficher un enregistrement spécifique après requête via Get sur URL
    Bonjour,

    Pas certaine que le titre de mon post soit très explicite.... Mais c'est pas évident de synthétiser en 1 ligne mon soucis...

    Grosso modo, je m'essaye au php en créant une vitrine de produits.
    ma page fiche.php affiche mes fiches produits, les requêtes se font selon mon url type : http://localhost/.../fiche.php?menu=...eference=26357

    mon script ne pose aucun problème avec les variables issues de ?menu= et ?rubrique=

    Par contre, je suis incapable d'afficher la fiche.php?reference=

    Je ne veux pas passer par WHERE pdt.Ref ='$Refer'
    parce que je souhaite pouvoir afficher grâce à des boutons next et back les autres références de la rubrique, or si j'utilise Where, seule la fiche avec ma référence ressort de la requête (logique....)

    Bref, comment faire pour que la 1er fiche qui ressorte de ma requête corresponde à celle dans la référence = '$Refer' ?
    et que mes boutons next et back affichent les autres référence de mon menu ou de ma rubrique ?


    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
    <?php require_once('Connections/webalix.php'); ?>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
     
     
    <?php
     
    // récup des $var dans url
    if (isset($_GET['menu']) || isset($_GET['rubrique']) || isset($_GET['reference'])) {
    	$ID_Rub = mysql_real_escape_string($_GET['menu']);
    	$ID_Srub = mysql_real_escape_string($_GET['rubrique']);
    	$Refer = mysql_real_escape_string($_GET['reference']);
    } else {
    	$ID_Rub = "1";
    	$ID_Srub = "0";
    	$Refer = "0";
    }
    //echo $ID_Rub;
    //echo $ID_Srub;
    //echo $Refer;
     
    ?>
     
     
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      if (PHP_VERSION < 6) {
        $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      }
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
    ?>
     
    <?php
    $currentPage = $_SERVER["PHP_SELF"];
     
    //param des affichages
    $maxRows_rs_Pdt = 1;
    $pageNum_rs_Pdt = 0;
    if (isset($_GET['pageNum_rs_Pdt'])) {
      $pageNum_rs_Pdt = $_GET['pageNum_rs_Pdt'];
    }
    $startRow_rs_Pdt = $pageNum_rs_Pdt * $maxRows_rs_Pdt;
     
     
     
    // REQUETE
     
    mysql_select_db($database_webalix, $webalix);
     
    //Si la variable est vide 
    if($ID_Rub != 0 && $ID_Srub == 0) 
    { 
    $query_rs_Pdt = "SELECT pdt.`Ref`, pdt.Int_Prod, pdt.Descr, pdt.ID_Rub, pdt.picto, pdt.ID_Srub, pdt.V1, pdt.V2, pdt.V3, pdt.Z1, pdt.Z2, pdt.Z3, rub.Int_Rub, srub.Int_Srub FROM pdt LEFT JOIN rub ON rub.ID_Rub = pdt.ID_Rub LEFT JOIN srub ON srub.ID_Srub = pdt.ID_Srub WHERE pdt.ID_Rub = '$ID_Rub'";
    }
    //Sinon si la Rub n'est pas vide et Srub n'est pas vide
    else if($ID_Rub != 0 && $ID_Srub != 0) 
    {
    $query_rs_Pdt = "SELECT pdt.`Ref`, pdt.Int_Prod, pdt.Descr, pdt.ID_Rub, pdt.picto, pdt.ID_Srub, pdt.V1, pdt.V2, pdt.V3, pdt.Z1, pdt.Z2, pdt.Z3, rub.Int_Rub, srub.Int_Srub FROM pdt LEFT JOIN rub ON rub.ID_Rub = pdt.ID_Rub LEFT JOIN srub ON srub.ID_Srub = pdt.ID_Srub WHERE pdt.ID_Rub ='$ID_Rub' AND pdt.ID_Srub ='$ID_Srub'";
    }
     
    $rs_Pdt = mysql_query($query_rs_Pdt, $webalix) or die(mysql_error());
    $row_rs_Pdt = mysql_fetch_assoc($rs_Pdt);
    $totalRows_rs_Pdt = mysql_num_rows($rs_Pdt);
     
    ?>
     
     
    <?php
    $query_limit_rs_Pdt = sprintf("%s LIMIT %d, %d", $query_rs_Pdt, $startRow_rs_Pdt, $maxRows_rs_Pdt);
    $rs_Pdt = mysql_query($query_limit_rs_Pdt, $webalix) or die(mysql_error());
    $row_rs_Pdt = mysql_fetch_assoc($rs_Pdt);
     
    if (isset($_GET['totalRows_rs_Pdt'])) {
      $totalRows_rs_Pdt = $_GET['totalRows_rs_Pdt'];
    } else {
      $all_rs_Pdt = mysql_query($query_rs_Pdt);
      $totalRows_rs_Pdt = mysql_num_rows($all_rs_Pdt);
    }
    $totalPages_rs_Pdt = ceil($totalRows_rs_Pdt/$maxRows_rs_Pdt)-1;
     
    $queryString_rs_Pdt = "";
    if (!empty($_SERVER['QUERY_STRING'])) {
      $params = explode("&", $_SERVER['QUERY_STRING']);
      $newParams = array();
      foreach ($params as $param) {
        if (stristr($param, "pageNum_rs_Pdt") == false && 
            stristr($param, "totalRows_rs_Pdt") == false) {
          array_push($newParams, $param);
        }
      }
      if (count($newParams) != 0) {
        $queryString_rs_Pdt = "&" . htmlentities(implode("&", $newParams));
      }
    }
    $queryString_rs_Pdt = sprintf("&totalRows_rs_Pdt=%d%s", $totalRows_rs_Pdt, $queryString_rs_Pdt);
    ?>
     
    <div id="resultats">   
    	<div id="fiche">
    		<div id="texte">
                <div>
                    <img src="images/<?php echo $row_rs_Pdt['picto']; ?>.png" />
                    <a href="liste.php?menu=<?php echo $ID_Rub ?>&amp;rubrique=<?php echo $ID_Srub ?>" Onclick="javascript:window.history.go(0)" title="Rubrique" class="couleur<?php echo $ID_Rub ?>" style="font-size:12px; float:right; margin:10px;" ><br /><br />Liste de la rubrique</a><br /><br />
                </div>
                <div style="padding:10px;">
                    <span class="couleur<?php echo $ID_Rub ?>"><strong>R&eacute;f : <?php echo $row_rs_Pdt['Ref']; ?><br /></strong></span>
                    <span class="couleur<?php echo $ID_Rub ?>" style="display:block;"><strong><?php echo $row_rs_Pdt['Int_Prod']; ?></strong></span>
                </div>
                    <p class="texte"><?php echo $row_rs_Pdt['Descr']; ?></p>
            </div>
     
            <div id="vignettes">
            	<?php if ($row_rs_Pdt['Z1']!=NULL) { ?>
                	<a onMouseOver="update('images/produits/<?php echo $row_rs_Pdt['Z1']; ?>', 0, false); return false;">
                    <img class="vignette<?php echo $ID_Rub ?>" src="images/produits/<?php echo $row_rs_Pdt['V1']; ?>" /></a>
    			<?php } else { echo "" ?>
     
    			<?php } ?>
            	<?php if ($row_rs_Pdt['Z2']!=NULL) { ?>
                	<a onMouseOver="update('images/produits/<?php echo $row_rs_Pdt['Z2']; ?>', 0, false); return false;">
                    <img class="vignette<?php echo $ID_Rub ?>" src="images/produits/<?php if ($row_rs_Pdt['Z2']) echo $row_rs_Pdt['V2']; ?>" /></a>
    			<?php } else { echo "" ?>
     
    			<?php } ?>        
            	<?php if ($row_rs_Pdt['Z3']!=NULL) { ?>
                	<a onMouseOver="update('images/produits/<?php echo $row_rs_Pdt['Z3']; ?>', 0, false); return false;">
                    <img class="vignette<?php echo $ID_Rub ?>" src="images/produits/<?php if($row_rs_Pdt['Z3']) echo $row_rs_Pdt['V3']; ?>" /></a>
    			<?php } else { echo "" ?>
     
    			<?php } ?>               
            </div>
            <div align="center">
    			<?php if ($pageNum_rs_Pdt > 0) { // Show if not first page ?>
    				<a href="<?php printf("%s?pageNum_rs_Pdt=%d%s", $currentPage, max(0, $pageNum_rs_Pdt - 1), $queryString_rs_Pdt); ?>">
    				<img src="images/bt_back<?php echo $ID_Rub ?>.png" border="none /></a>
    				<?php } // Show if not first page ?>
    			<?php if ($pageNum_rs_Pdt < $totalPages_rs_Pdt) { // Show if not last page ?>
    				<a href="<?php printf("%s?pageNum_rs_Pdt=%d%s", $currentPage, min($totalPages_rs_Pdt, $pageNum_rs_Pdt + 1), $queryString_rs_Pdt); ?>">
    				<img src="images/bt_next<?php echo $ID_Rub ?>.png" border="none" /></a>
    				<?php } // Show if not last page ?>
            </div>        
        </div>
        <div id="separation" style="float:left;"></div>
    	<div style="background-color:#FFF; float:right; width:600px; height:600px;"><img src="images/produits/<?php echo $row_rs_Pdt['Z1']; ?>" name="zoom"></div>  
    </div>
     
    <?php mysql_free_result($rs_Pdt);?>
    Vous parlez de vacances, je m'arrache les cheveux à 5h40 du mat pour trouver la réponse à mon problème !
    Merci par avance à toutes les réponses !

    Par avance,
    un peu d'indulgence, je découvre à peine le php et travaille avec DW
    Si par contre en lisant mon code vous voyez des énormités ou des optimisations possibles, je suis preneuse, et, là pour apprendre...

  2. #2
    Candidat au Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    oups... ligne 160 il manque 1 " au border...
    Mais cela ne change en rien ma question
    Encore merci par avance !

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    salut, tu peux faire un schéma de ce que tu aimerais avoir ?

  4. #4
    Candidat au Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    @ heretik25 merci pour ton intéret
    oulà ! faire un schéma....

    fiche.php (#1) ---> liste.php --->fiche.php (#2)

    fiche.php (#1)
    ------------

    - Affiche une fiche produit selon Rubrique et sous rubrique sélectionnés via menu
    - Les boutons next et Back permettent d'afficher les autres fiches produit
    dans la même Rubrique et sous Rub.
    - bouton liste envoi vers liste.php


    liste.php
    ---------

    - Affiche la liste des références dans la rubrique et sous rubrique
    - Les Références en Hypertext envoient vers la fiche.php (#2) de la référence sélectionnée


    fiche.php (#2)
    ---------------

    - Affiche la fiche de la Réf. sélectionnée dans liste.php
    - Les boutons next et back permettent d'afficher les autres fiches produit dans la même rubrique et sous rubrique



    NB :
    - Les rubrique, sous rubrique et références sont transmises via url et récupérées via un GET

    Mon problème c'est :
    comment, après avoir cliqué sur une référence (n°3 par exemple ) dans liste.php, afficher dans fiche.php cette référence en 1er et que le bouton next envoi vers la fiche ref n°4 et le bouton back vers la ref n°2 ?
    (ces références faisant partit de la même rubrique et sous rubrique)

    (à noter que j'ai nommé les ref. n°2 - 3 -4... à titre d'exemple, en réalité mes valeur références n'ont pas d'ordre chronologique et sont de type 45238)

    Aujourd'hui, si je clique dans liste.php sur une référence, fiche.php affiche la 1er référence de la rubrique / sous rubrique mais pas la référence sélectionnée
    Je souhaiterai qu'elle affiche en 1er la ref. sélectionnée

    J'espère que mes explications t'aiguilleront...
    Encore merci pour ton intérêt

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Si j'ai bien compris, il faut que tu ajoutes dans ta table qui liste les références, un champs "ordre_affichage".

    Ex :

    ordre_affichage || num_ref
    1 || f542d
    2 || f565d
    3 || 5fdds
    4 || f4555

    Ensuite, tu fais en sorte de récupérer le numéro d'ordre de la référence avec une requête ou dans une variable GET.

    Sur tes deux boutons, le next récupérera et affichera (via une requête dynamique) la référence du numéro d'ordre + 1 et le bouton back récupérera et affichera la référence du numéro d'ordre -1.

    *La requête dynamique devra comporter un WHERE et sûrement deux AND

    Après rien ne t'empêchera de créer un script qui permettra à l'utilisateur de gérer le numéro d'ordre des références.

    En espérant ne pas avoir répondu à côté de la plaque

  6. #6
    Candidat au Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci pour ton idée
    je vais essayer d'appliquer ça au plus vite !

    je te tiens au courant dès que possible

Discussions similaires

  1. [AC-2007] retour à un enregistrement spécifique après suppression d'un filtre
    Par gerarddurand dans le forum VBA Access
    Réponses: 5
    Dernier message: 01/02/2011, 13h16
  2. Réponses: 10
    Dernier message: 11/07/2007, 13h06
  3. Réponses: 2
    Dernier message: 22/03/2007, 23h55
  4. Réponses: 7
    Dernier message: 02/03/2006, 13h04
  5. Réponses: 4
    Dernier message: 17/10/2005, 16h05

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