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 :

Sélectionner de façon aléatoire une promotion [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Par défaut Sélectionner de façon aléatoire une promotion
    Bonjour à tous,

    J'ai un probleme, mais je ne vois pas du tout pourquoi il me fait ca ....

    alors voici mon code, j'essaye de sélectionner de facon aléatoire les infos d'une promotion....

    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
     
    //sélection dans la table des promo une id de facon aléatoire
    $temp=time();
    $sqlpromotemp="SELECT Produit_id as id FROM mbm_promo WHERE StampDebut<'".$temp."' AND StampFin>'".$temp."' ORDER BY RAND() LIMIT 0,1";
    $reqpromotemp=mysql_query($sqlpromotemp);
    $reppromotemp=mysql_fetch_array($reqpromotemp);
     
    //sélection ensuite des infos du produit pour cet idée
    $sqlpromo = "SELECT pi.produit_image_image,t.taxe_taux,pr.TauxReduc ,p.produit_prix, p.produit_id, p.produit_nom, cat.categorie_nom, cp.categorie_id FROM categorie cat, mbm_promo pr, produit_categorie cp, produit_image pi, produit p, taxe t";
    $sqlpromo.= " WHERE";
    $sqlpromo.= " p.produit_id='".$reppromotemp['id']."'";
    $sqlpromo.= " AND t.taxe_id = p.taxe_id";
    $sqlpromo.= " AND pr.produit_id = p.produit_id";
    $sqlpromo.= " AND pi.produit_id = p.produit_id";
    $sqlpromo.= " AND cp.categorie_id = cat.categorie_id";
    $sqlpromo.= " AND p.produit_id = cp.produit_id";
    $sqlpromo.= " GROUP BY p.produit_id";
    //le die est la uniquement pour voir ma requete vu mon probleme
    die($sqlpromo);
    $result2 = mysql_query($sqlpromo);
    $row2 = mysql_fetch_array($result2);
    Alors voila quand je die les requetes, 1 et 2, j'obtiens des informations qui ne me convienne pas.
    La requete finale me selectionne toujours les infos des produits 529 et 530.

    Alors que si je passe par phpmyadmin, si je fais la premiere requete qui sort en die(), cela me renvoi d'autres id que 529 et 530.... alors que le die de la seconde est toujours l'un des deux avec 529 ou 530 comme id ...

    Je ne comprends pas quelqu'un a une idée ?

    Merci d'avance

    PS : si ce n'est pas clair n'hésitait pas non plus, je suis la tete dans le guidons depuis ce debut d'aprem...

  2. #2
    Invité
    Invité(e)
    Par défaut
    pas de up , si personne ne réponds essaie de reformuler plus clairement peut etre.
    J'ai pas trop compris ton pb a vrai dire.
    Deja je ferais une seul requete au lieu de 2 , ce qui donne
    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
     
    $temp=time();
     
    $sqlpromo = "SELECT pi.produit_image_image,t.taxe_taux,pr.TauxReduc ,p.produit_prix, p.produit_id, p.produit_nom, cat.categorie_nom, cp.categorie_id
    FROM categorie cat, mbm_promo pr, produit_categorie cp, produit_image pi, produit p, taxe t, mbm_promo ";
    $sqlpromo.= " WHERE";
    $sqlpromo.= " mbm_promo.Produit_id = p.produit_id";
    $sqlpromo.= " AND t.taxe_id = p.taxe_id";
    $sqlpromo.= " AND pr.produit_id = p.produit_id";
    $sqlpromo.= " AND pi.produit_id = p.produit_id";
    $sqlpromo.= " AND cp.categorie_id = cat.categorie_id";
    $sqlpromo.= " AND p.produit_id = cp.produit_id";
    $sqlpromo.= " AND mbm_promo.StampDebut<'".$temp."' AND mbm_promo.StampFin>'".$temp."'";
    $sqlpromo.= " ORDER BY RAND()";
    $sqlpromo.= " LIMIT 1";
    $sqlpromo.= " GROUP BY p.produit_id";
    $result2 = mysql_query($sqlpromo);
    $row2 = mysql_fetch_array($result2);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Par défaut
    Bonjour,

    merci pour ta réponse je commencais vraiment à désespéré, d'ou le up (), mais en fait mon probleme est le suivant pour essayer d'etre plus clair :

    J'ai un fichier php ou le code est maintenant le suivant :

    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
    $temp=time();
    $sqlpromo = "SELECT pi.produit_image_image,t.taxe_taux,pr.TauxReduc ,p.produit_prix, p.produit_id, p.produit_nom, cat.categorie_nom, cp.categorie_id";
    $sqlpromo.= " FROM categorie cat, mbm_promo pr, produit_categorie cp, produit_image pi, produit p, taxe t";
    $sqlpromo.= " WHERE";
    //$sqlpromo.= " p.produit_id='".$reppromotemp['id']."'";
    $sqlpromo.= " t.taxe_id = p.taxe_id";
    $sqlpromo.= " AND pr.Produit_id = p.produit_id";
    $sqlpromo.= " AND pi.produit_id = p.produit_id";
    $sqlpromo.= " AND pr.StampDebut<'".$temp."' AND pr.StampFin>'".$temp."'";
    $sqlpromo.= " AND cp.categorie_id = cat.categorie_id";
    $sqlpromo.= " AND p.produit_id = cp.produit_id";
    $sqlpromo.= ' AND pi.produit_image_image != ""';
    $sqlpromo.= " GROUP BY p.produit_id";
    $sqlpromo.= " ORDER BY RAND() LIMIT 0,1";
    die($sqlpromo);
    $result2 = mysql_query($sqlpromo);
    $row2 = mysql_fetch_array($result2);
     
     
    //variables promotions
    $nom_P=transFLA($row2['produit_nom']);
    $nom_img_P=$row2['produit_image_image'];
    $P_Categorie=parseURL($row2['categorie_nom']);
    $P_id_Categorie=$row2['categorie_id'];
    $P_produit=parseURL($row2['produit_nom']);
    $P_id_produit=$row2['produit_id'];
    $P_prix = sprintf('%.2f',$row2['produit_prix']*(1+$row2['taxe_taux']));
    $P_prix_promo = sprintf('%.2f',(($row2['produit_prix']*((100-$row2['TauxReduc'])/100))*(1+$row2['taxe_taux'])));
     
     
    echo "P_produit_nom=$nom_P&P_image=$nom_img_P&P_Categorie=$P_Categorie&P_id_Categorie=$P_id_Categorie&P_produit=$P_produit&P_id_produit=$P_id_produit&P_prix=$P_prix&P_prix_promo=$P_prix_promo&";
    Quand je le up sur mon serveur ftp j'obtiens 2 produits en aléatoire id=529 ou id=530...

    Alors qu'il existe une 30ene de promotions...





    Maintenant, si je vais sur phpMyAdmin, et que je récupere la requete qui me renvoi seulement 2 id aléatoires, avec un die($sqlpromo), j'obtiens correctement toutes les id des produits en promo,...


    Je ne comprends pas pourquoi entre l'execution de la requete ftp et l'execution de la requete sql sur phpmyadmin cela diverge...

    Mais maintenant justement que j'ai réasapté mon code en un seul bloc cela marche, je ne comprend plus rien moi ...

    Merci a toi en tout cas, je ne vois pas de réelle différence, mais c'est cool

  4. #4
    Invité
    Invité(e)
    Par défaut
    honnêtement je n'ai pas le temps pour chercher d'où l'erreur provenait mais l'essentiel c'est que cela fonctionne maintenant.
    Dernière modification par julp ; 11/01/2008 à 18h12.

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

Discussions similaires

  1. Ouverture d'un PDF sur une page précise fonctionne de façon aléatoire
    Par cahnory dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/08/2009, 09h51
  2. selection des enregistrements d'une façon aléatoire
    Par waldoun dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/06/2007, 13h14
  3. Sélectionner 5 tuples aléatoirement dans une table
    Par subhuman dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/11/2005, 15h18
  4. Réponses: 3
    Dernier message: 05/10/2005, 18h33
  5. Pré-sélectionner un élément d'une combobox
    Par delphim dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/06/2003, 15h26

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