Bonjour à tous !

Voilà je coince encore pour, j'en suis sur, pas grand chose...

Sur la page où sont affichés les articles je souhaite cliquer dessus et l'ouvrir en popup interne, ça c'est bon.
Seulement je souhaiterais récupérer toutes les variables du produits (ou ne serait-ce que l'id pour faire une requête vers la base de données directement avec l'id correspondant) sur lequel j'éxecute le popup.

J'en suis pas loin car que je fais ?w=500?id=<?= $produit->id; ?> dans le href du html au lieu du #?w=500?id=<?= $produit->id; ?>, je n'ai pas le popup qui s'ouvre mais au moins dans l'url j'ai l'id de l'article sur lequel j'éxecute la requête.
Tandis qu'avec le deuxième, mon popup s'ouvre mais rien ne s'affiche dans l'url donc impossible de récupérer avec un $_GET'id'];

Si je met un simple:
<h1>id=<?= $produit->titre; ?></h1>
dans le popup, ça m'envoi tout simplement l'id du dernier article créé dans la base de données.

Voici le code HTML:

<a href="#?w=500?id=<?= $produit->id; ?>" rel="popup_name" class="poplight" ><img src="<?= $produit->image; ?>" alt="<?= $produit->descr_courte; ?>" class="image_vente" /></a>
    <p class="descr_vente"><?= $produit->titre; ?></p>
    <div class="sous_descr"><?= $produit->descr_courte; ?></div>
    <div class="poids_produit">Poids: <?= $produit->poids; ?></div>
    <div class="prix">Prix unitaire: <?= $produit->prix_ht; ?></div>
    <div class="qte_produit">
    <form method="post" action="addpanier.php?id=<?= $produit->id; ?>" class="addinpanier">
        <input type="image" src="img/plus.png" class="plus_prod" onClick="this.form.nbr_art<?= $produit->id; ?>.value = (parseInt(this.form.nbr_art<?= $produit->id; ?>.value) + 1); return false;" />
        <input type="number" class="nbr_art" name="nbr_art" min="0" max="20" value="1" id="nbr_art<?= $produit->id; ?>" />
        <input type="image" src="img/moins.png" class="moins_prod" onClick="this.form.nbr_art<?= $produit->id; ?>.value = (parseInt(this.form.nbr_art<?= $produit->id; ?>.value) - 1);return false;" />
        <input type="submit" class="add_panier" id="addPanier" value="Ajouter au panier" />
    </form>
</div>

Le code du POPUP:

<div id="popup_name" class="popup_block">
    <p>titre=<?= $_GET'titre']; ?></p>
    <p>id=<?= $_GET'id']; ?></p>
</div>

Celui du JAVASCRIPT:

<script type="text/javascript">
    $(document).ready(function() {
//Lorsque vous cliquez sur un lien de la classe poplight et que le href commence par #
$('a.poplight[href^=#]').click(function() {
    var popID = $(this).attr('rel'); //Trouver la pop-up correspondante
    var popURL = $(this).attr('href'); //Retrouver la largeur dans le href
    //Récupérer les variables depuis le lien
    var query= popURL.split('?');
    var dim= query[1].split('&');
    var popWidth = dim[0].split('=')[1]; //La première valeur du lien
    //Faire apparaitre la pop-up et ajouter le bouton de fermeture
    $('#' + popID).fadeIn().css({
        'width': Number(popWidth)
    })
    .prepend('<a href="#" class="close"><img src="close_pop.png" class="btn_close" title="Fermer" alt="Fermer" /></a>');
    //Récupération du margin, qui permettra de centrer la fenêtre - on ajuste de 80px en conformité avec le CSS
    var popMargTop = ($('#' + popID).height() + 80) / 2;
    var popMargLeft = ($('#' + popID).width() + 80) / 2;
    //On affecte le margin
    $('#' + popID).css({
        'margin-top' : -popMargTop,
        'margin-left' : -popMargLeft
    });
    //Effet fade-in du fond opaque
    $('body').append('<div id="fade"></div>'); //Ajout du fond opaque noir
    //Apparition du fond - .css({'filter' : 'alpha(opacity=80)'}) pour corriger les bogues de IE
    $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();
    return false;
});
//Fermeture de la pop-up et du fond
$('a.close, #fade').live('click', function() { //Au clic sur le bouton ou sur le calque...
    $('#fade , .popup_block').fadeOut(function() {
        $('#fade, a.close').remove(); //...ils disparaissent ensemble
    });
    return false;
});});
</script>

En éspérant pouvoir trouver une solution... A mon avis je cherche trop loin comme d'habitude...

Merci encore pour votre aide !

5 réponses


Soundboy39
Réponse acceptée

C'est quoi ce script de popup ??

C'est toi qui la fait ? Tu la récupérer quelque part ?

Normalement le "href" devrait pouvoir être un lien quelconque, ça te permettrait de passer tes variables en get et d'éviter de perdre en SEO.

Jette un œil à Fancybox, c'est un script de popup modal en jquery qui permet de charger des iframes avec un système de lien "standard".

UP ??

C'est normal que tu ai 2 points d’interrogation dans ton url ??
Et à ta place j'utiliserais une url réelle plutôt qu'un #

Salut soundboy et merci pour ta réponse ;)

Ben en fait c'est ce que j'aimerais faire comme ça je peux récupérer ne serait-ce que l'id avec un $_GET.
Le problème c'est que même le # ne s'affiche pas dans l'url quand je click dessus, j'ai déjà essayé de mettre l'url à la place du # mais ça ne s'affiche pas dans l'url et il ne récupère rien en $_GET.

Tu aurais une idée ?

Encore merci pour ce fabuleux forum et pour tout ceux qui n'hésite pas à prendre de leur temps pour aider des gens comme moi :)

Effectivement ce script je l'ai récupéré sur un site.
Ta méthode fonctionne du tonnerre !!
Je te remercie énormément pour ton aide ;)