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 :

Insérer le contenu d'une table dans un tableau [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Insérer le contenu d'une table dans un tableau
    Bonjour à tous,

    Soit une table "produits" possédant une clé primaire ID auto-incrément.
    Il se suivent mais certains manquent: 1,2,3,4,8,10,22 etc...

    Lorsque j'affiche la page du produit 8, par exemple, je voudrais afficher des liens produit précédent || produit suivant.

    Avec MIN et MAX de mysql, je connais le 1er et le dernier ID pour n'afficher que "précédent" ou "suivant" le cas échéant.

    Comme je peux pas linker
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href ="produits.php?id=($id+1)">Suivant</a>"
    à cause des manquants, j'ai eu l'idée de mettre tous les ID de la table dans un tableau php avec une boucle while.

    Puis je voulais positionner le pointeur du tableau sur le ID de la page et me servir de next($tab) et prev($tab)...
    Mais je n'arrive pas à positionner le pointeur sur le ID de la page...
    Quelqu'un connaît une astuce ???
    Merci à lui...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonjour,
    utilisé des clés numériques pour le tableau stockant les ID des produits. Puis récupérez celle du produit en cours et affichez l'ID précédente et suivante grâce à la clés numériques du produit en cours.

    Pour trouver la clé du produit en cours, en ayant la valeur, c'est facile, je ne vais pas l'expliquer ici, au pire foreach($tab as $cle => $valeur) if ($valeur == $id) $idpec= $cle;

    Du reste pour trouver les autres ID.

    Si $idpec (id du produit en cours) = 3 alors $idpp (id du produit précédent) = $tiddp[$idpec-1] (tableau des id de produits) et $idps (id du produit suivant) = $tiddp[$idpec+1].

    Bien sûr, avant de marquer n'importe quoi, il faut vérifié qu'on est pas en debut ou en fin de tableau.

    Si $idpec est == 0 (précédent est disabled) et si $idpec est == count($tiddp)-1 alors (suivant est disabled) ou alors vous faites une boucle dans vos produits et à la place de rendre inaccessible les liens suivants et précédents, vous mettez $tiddp[count($tiddp)-1] et $tiddp[0] pour le dernier lien.

    Cordialement,
    DaRiaN.

    PS: je sais, c'est pas 'trop' clair mais j'ai pas le temps de mettre un exemple.

  3. #3
    Membre chevronné Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Par défaut
    Salut,

    tu peux placer tes id dans un tableau indexé de 0 à n, et au lieu de faire passer l'id tu fais passer l'indice de l'id ainsi l'indice du suivant sera l'indice en cours + 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    $mesId = array(1, 3, 5, 7, 9, 10);
     
    $idEnCours = $mesId[$_GET['indiceID']];
     
    $idSuivant = $mesId[$_GET['indiceID'] + 1];
    $idPrecedent = $mesId[$_GET['indiceID'] - 1];
     
    ...
    ?>

  4. #4
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Merci à vous pour vos réponses....que j'avoue ne pas trop bien capter...
    Voici comment j'ai construit mon tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $sql = mysql_query("SELECT id FROM produits");
    $tab = array();
    $i = 0;
    while($row = mysql_fetch_row($sql)){
    $tab = array_merge($tab,array( $i => $row[0]));
    $i++;
    }
    si je fais un print_r, j'obtiens:

    Array
    (
    [0] => 2
    [1] => 3
    [2] => 4
    [3] => 7
    [4] => 9
    [5] => 10
    [6] => 14
    [7] => 17
    etc...
    )

    J'ai bien mes ID dans un tableau indicé...mais après...ben je ne sais plus trop quoi en faire. Je rappelle que sur chaque fiche prod, je récupère bien l'ID en cours avec $_GET... Mais ce n'est pas possible de positionner le curseur sur la clé correspondant à $val = $id ???

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Non, je ne sais pas si une telle fonction existe, mais on peut facilement en coder une.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      function GetNumKey($id, $tableau)
      {
     
        foreach ($tableau as $cle => $valeur) if ($valeur == $id) return $cle;
     
        return FALSE;
     
      }
    Donc, si vous avez votre tableau avec les ID existantes, il ne vous reste plus qu'à mettre en pratique ce que j'ai indiqué plus haut ou alors suivre le conseil de makmaoui et modifier votre script pour passer les clés numériques dans l'URL, au lieu des index auto_increment de votre table produits.

  6. #6
    Membre chevronné Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Par défaut
    Bonsoir,

    DaRiaN, la fonction existe :
    mixed array_search ( mixed $needle, array $haystack [, bool $strict] )
    array_search() recherche needle dans haystack et retourne la clé associée s'il la trouve, ou FALSE sinon.
    renaud26, tu peux utiliser ce genre de syntaxe, php gère très bien l'incrémentation des tableaux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = mysql_query("SELECT id FROM produits");
    unset $tab;
    while($row = mysql_fetch_row($sql)){
    $tab[] = $row[0];
    }

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Merci, je note ça pour plus tard.

  8. #8
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonjour et merci à vous tous !
    Carrément cool ! Ca fonctionne impec !



    Bonne journée.

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

Discussions similaires

  1. Afficher contenu d'une table dans un tableau
    Par sevy1881 dans le forum Langage
    Réponses: 2
    Dernier message: 13/05/2010, 14h37
  2. Insérer des données d'une table dans un tableau
    Par przvl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/03/2009, 17h56
  3. Insérer le contenu d'une requête dans une table
    Par guadian dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/07/2007, 20h16
  4. [MySQL] Lister le contenu d'une table dans un tableau HTML
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/04/2006, 19h40
  5. Réponses: 2
    Dernier message: 16/02/2006, 09h24

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