Résolu GET ID dans un modal

JustForGamingCom

Développeur WEB / Fondateur : JustForModding.com
Premium
Inscription
25 Février 2013
Messages
1 854
Réactions
988
Points
10 106
RGCoins
50
Hey ! :) J'avais réeussi avant mais j'ai un trou de mémoire, je ne me souviens plus comment faire x)

Voici mon problème :

4 Blocs sont affichés sur la page à l'aide de ce code :

PHP:
  <?php
                  $SQLGetApps = $odb -> prepare("SELECT * FROM `coins` WHERE payment = :payment ORDER BY `ID` ASC LIMIT 0, 4");
            $SQLGetApps -> execute(array(':payment' => 'starpass'));
            while ($getInfo = $SQLGetApps -> fetch(PDO::FETCH_ASSOC))
                {
                    $id = $getInfo['ID'];
                    $name = $getInfo['name'];
                    $price = $getInfo['price'];
                    $image = $getInfo['image'];
                    $nbr_codes = $getInfo['nbr_codes'];
                    echo '


<div class="col-lg-3">
<div class="store-paymentblock">
<a href="#" data-target="#modal-header-primary" data-toggle="modal">
<h3>Payment Mobile</h3>
<img src="'.$image.'">
<div class="store-paymentblock-offer">'.$name.' coins ~ '.$price.'$</div>
</a>
<a href="#" data-target="#modal-header-primary" data-toggle="modal" class="store-paymentblock-button">Buy</a>
</div>  </div>
'; } ?>

Et lorsque l'on clique sur le bouton buy :



Le modal s'affiche :

Sauf que lorsque l'on clique sur le bouton buy du modal 2,3,4 c'est les informations du modal 1 qui s'affichent et non les informations corrects.


J'aimerais donc que le modals prennent les bonnes informations requises.

Voici le code complet de l'affichage en SQL avec le modal :

PHP:
  <?php
                  $SQLGetApps = $odb -> prepare("SELECT * FROM `coins` WHERE payment = :payment ORDER BY `ID` ASC LIMIT 0, 4");
            $SQLGetApps -> execute(array(':payment' => 'starpass'));
            while ($getInfo = $SQLGetApps -> fetch(PDO::FETCH_ASSOC))
                {
                    $id = $getInfo['ID'];
                    $name = $getInfo['name'];
                    $price = $getInfo['price'];
                    $image = $getInfo['image'];
                    $nbr_codes = $getInfo['nbr_codes'];
                    echo '


<div class="col-lg-3">
<div class="store-paymentblock">
<a href="#" data-target="#modal-header-primary" data-toggle="modal">
<h3>Payment Mobile</h3>
<img src="'.$image.'">
<div class="store-paymentblock-offer">'.$name.' coins ~ '.$price.'$</div>
</a>
<a href="#" data-target="#modal-header-primary" data-toggle="modal" class="store-paymentblock-button">Buy</a>
</div>  </div>

<div id="modal-header-primary" tabindex="-1" role="dialog" aria-labelledby="modal-header-primary-label" aria-hidden="true" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header modal-header-primary">
<button type="button" data-dismiss="modal" aria-hidden="true" class="close">&times;</button>
<h4 id="modal-header-primary-label" class="modal-title"><center>Payment Mobile - Buy '.$name.' coins ~ '.$price.'$</center></h4></div>
<div class="modal-body">';

if ($nbr_codes == 1){ echo'<div id="starpass_326336"></div><script type="text/javascript" src="http://script.starpass.fr/script.php?idd=326336&amp;theme=pink_salmon"></script><noscript>Veuillez activer le Javascript de votre navigateur s\'il vous pla&icirc;t.<br /><a href="http://www.starpass.fr/">Micropaiement StarPass</a></noscript>'; }

echo'</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-primary">Close</button></div></div></div></div>

'; } ?>
 
Humm tu as pas oublier
PHP:
if ($nbr_codes === 2){ echo'<div id="starpass_326336"></div><script type="text/javascript" src="http://script.starpass.fr/script.php?idd=326336&amp;theme=pink_salmon"></script><noscript>Veuillez activer le Javascript de votre navigateur s\'il vous pla&icirc;t.<br /><a href="http://www.starpass.fr/">Micropaiement StarPass</a></noscript>'; }
if ($nbr_codes === 3){ echo'<div id="starpass_326336"></div><script type="text/javascript" src="http://script.starpass.fr/script.php?idd=326336&amp;theme=pink_salmon"></script><noscript>Veuillez activer le Javascript de votre navigateur s\'il vous pla&icirc;t.<br /><a href="http://www.starpass.fr/">Micropaiement StarPass</a></noscript>'; }
if ($nbr_codes === 4){ echo'<div id="starpass_326336"></div><script type="text/javascript" src="http://script.starpass.fr/script.php?idd=326336&amp;theme=pink_salmon"></script><noscript>Veuillez activer le Javascript de votre navigateur s\'il vous pla&icirc;t.<br /><a href="http://www.starpass.fr/">Micropaiement StarPass</a></noscript>'; }

D'ailleurs mais === est pas ==
 
Humm tu as pas oublier
PHP:
if ($nbr_codes === 2){ echo'<div id="starpass_326336"></div><script type="text/javascript" src="http://script.starpass.fr/script.php?idd=326336&amp;theme=pink_salmon"></script><noscript>Veuillez activer le Javascript de votre navigateur s\'il vous pla&icirc;t.<br /><a href="http://www.starpass.fr/">Micropaiement StarPass</a></noscript>'; }
if ($nbr_codes === 3){ echo'<div id="starpass_326336"></div><script type="text/javascript" src="http://script.starpass.fr/script.php?idd=326336&amp;theme=pink_salmon"></script><noscript>Veuillez activer le Javascript de votre navigateur s\'il vous pla&icirc;t.<br /><a href="http://www.starpass.fr/">Micropaiement StarPass</a></noscript>'; }
if ($nbr_codes === 4){ echo'<div id="starpass_326336"></div><script type="text/javascript" src="http://script.starpass.fr/script.php?idd=326336&amp;theme=pink_salmon"></script><noscript>Veuillez activer le Javascript de votre navigateur s\'il vous pla&icirc;t.<br /><a href="http://www.starpass.fr/">Micropaiement StarPass</a></noscript>'; }

D'ailleurs mais === est pas ==

Non t'inquiète pas pour sa c'est bon ^^ C'est juste que sa affiche toujours le nom et le prix de l'offre 1 et pas de l'offre concerné

@Rivals @Snake's @-Unknauwn- @Baptiste

up
 
Dernière édition par un modérateur:
Yop, comme tu n'as visiblement toujours pas ta réponse, je t'éxplique, c'est très simple tu te demanderas pq tu n'y a pas pensé plus tôt.
Voici ton code (la partie qui ne va pas)
PHP:
<?php
 $SQLGetApps = $odb -> prepare("SELECT * FROM `coins` WHERE payment = :payment ORDER BY `ID` ASC LIMIT 0, 4");
 $SQLGetApps -> execute(array(':payment' => 'starpass'));
 while ($getInfo = $SQLGetApps -> fetch(PDO::FETCH_ASSOC))
 {
 $id = $getInfo['ID'];
 $name = $getInfo['name'];
 $price = $getInfo['price'];
 $image = $getInfo['image'];
 $nbr_codes = $getInfo['nbr_codes'];
 echo '


<div class="col-lg-3">
<div class="store-paymentblock">
<a href="#" data-target="#modal-header-primary" data-toggle="modal">
<h3>Payment Mobile</h3>
<img src="'.$image.'">
<div class="store-paymentblock-offer">'.$name.' coins ~ '.$price.'$</div>
</a>
<a href="#" data-target="#modal-header-primary" data-toggle="modal" class="store-paymentblock-button">Buy</a>
</div> </div>
'; } ?>

Dans la première balise <a> tu as "data-target="
Dans la première div de ta modal tu as "id="

Pour faire simple, le data-target, doit correspondre à l'id de la modal que tu veux afficher, comme tu le vois dans ton code, il correspond, mais, il faut que tu le modifie à chaque fois que t'affiche une nouvelle offre de payement.

pour faire court, voici le code qu'il te faut mettre à la place de celui que je t'ai montré plus haut :
PHP:
<?php
    $SQLGetApps = $odb->prepare("SELECT * FROM coins WHERE payment = :payment ORDER BY ID ASC LIMIT 0, 4", array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
    $SQLGetApps->bindValue('payment', 'starpass');
    $SQLGetApps->execute();
    while ($getInfo = $SQLGetApps->fetch(PDO::FETCH_ASSOC)) {
        $id = $getInfo['ID'];
        $name = $getInfo['name'];
        $price = $getInfo['price'];
        $image = $getInfo['image'];
        $nbr_codes = $getInfo['nbr_codes'];

        $new_modal_id = strtolower(str_replace(' ', '', $name) . '-' $id  . '-' . $price);

        echo '<div class="col-lg-3">
                <div class="store-paymentblock">
                <a href="#" data-target="#modal-header-primary" data-toggle="modal">
                <h3>Payment Mobile</h3>
                <img src="'.$image.'">
                <div class="store-paymentblock-offer">'.$name.' coins ~ '.$price.'$</div>
                </a>
                <a href="#" data-target="#'. $new_modal_id .'" data-toggle="modal" class="store-paymentblock-button">Buy</a>
              </div> </div>
              <div id="'. $new_modal_id .'" tabindex="-1" role="dialog" aria-labelledby="modal-header-primary-label" aria-hidden="true" class="modal fade">';
    }
?>

J'éspère t'avoir, aidé, si tu as d'autres problèmes n'hésite pas à poster en me citant!
 
Yop, comme tu n'as visiblement toujours pas ta réponse, je t'éxplique, c'est très simple tu te demanderas pq tu n'y a pas pensé plus tôt.
Voici ton code (la partie qui ne va pas)
PHP:
<?php
$SQLGetApps = $odb -> prepare("SELECT * FROM `coins` WHERE payment = :payment ORDER BY `ID` ASC LIMIT 0, 4");
$SQLGetApps -> execute(array(':payment' => 'starpass'));
while ($getInfo = $SQLGetApps -> fetch(PDO::FETCH_ASSOC))
{
$id = $getInfo['ID'];
$name = $getInfo['name'];
$price = $getInfo['price'];
$image = $getInfo['image'];
$nbr_codes = $getInfo['nbr_codes'];
echo '


<div class="col-lg-3">
<div class="store-paymentblock">
<a href="#" data-target="#modal-header-primary" data-toggle="modal">
<h3>Payment Mobile</h3>
<img src="'.$image.'">
<div class="store-paymentblock-offer">'.$name.' coins ~ '.$price.'$</div>
</a>
<a href="#" data-target="#modal-header-primary" data-toggle="modal" class="store-paymentblock-button">Buy</a>
</div> </div>
'; } ?>

Dans la première balise <a> tu as "data-target="
Dans la première div de ta modal tu as "id="

Pour faire simple, le data-target, doit correspondre à l'id de la modal que tu veux afficher, comme tu le vois dans ton code, il correspond, mais, il faut que tu le modifie à chaque fois que t'affiche une nouvelle offre de payement.

pour faire court, voici le code qu'il te faut mettre à la place de celui que je t'ai montré plus haut :
PHP:
<?php
    $SQLGetApps = $odb->prepare("SELECT * FROM coins WHERE payment = :payment ORDER BY ID ASC LIMIT 0, 4", array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
    $SQLGetApps->bindValue('payment', 'starpass');
    $SQLGetApps->execute();
    while ($getInfo = $SQLGetApps->fetch(PDO::FETCH_ASSOC)) {
        $id = $getInfo['ID'];
        $name = $getInfo['name'];
        $price = $getInfo['price'];
        $image = $getInfo['image'];
        $nbr_codes = $getInfo['nbr_codes'];

        $new_modal_id = strtolower(str_replace(' ', '', $name) . '-' $id  . '-' . $price);

        echo '<div class="col-lg-3">
                <div class="store-paymentblock">
                <a href="#" data-target="#modal-header-primary" data-toggle="modal">
                <h3>Payment Mobile</h3>
                <img src="'.$image.'">
                <div class="store-paymentblock-offer">'.$name.' coins ~ '.$price.'$</div>
                </a>
                <a href="#" data-target="#'. $new_modal_id .'" data-toggle="modal" class="store-paymentblock-button">Buy</a>
              </div> </div>
              <div id="'. $new_modal_id .'" tabindex="-1" role="dialog" aria-labelledby="modal-header-primary-label" aria-hidden="true" class="modal fade">';
    }
?>

J'éspère t'avoir, aidé, si tu as d'autres problèmes n'hésite pas à poster en me citant!

Merci, sauf que tu as oublié un point sur cette ligne avant le $id et ceci provoquait une erreur de variable : $new_modal_id = strtolower(str_replace(' ', '', $name) . '-' . $id . '-' . $price);

par contre maintenant le modal ne s'ouvre plus .. je t'ai MP
 
D'accord, tu peux me redonner le code avec ma partie modifiée en entier s'il te plaît ?
Je regarde ce qui cloche et après cette vérif ça devrait être bon
Essaye ça peut être
PHP:
<?php
    $SQLGetApps = $odb->prepare("SELECT * FROM coins WHERE payment = :payment ORDER BY ID ASC LIMIT 0, 4", array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
    $SQLGetApps->bindValue('payment', 'starpass');
    $SQLGetApps->execute();
    while ($getInfo = $SQLGetApps->fetch(PDO::FETCH_ASSOC)) {
        $id = $getInfo['ID'];
        $name = $getInfo['name'];
        $price = $getInfo['price'];
        $image = $getInfo['image'];
        $nbr_codes = $getInfo['nbr_codes'];

        $new_modal_id = strtolower(str_replace(' ', '', $name) . '-' . $id  . '-' . $price);

        echo '<div class="col-lg-3">
                <div class="store-paymentblock">
                <a href="#" data-target="#modal-header-primary" data-toggle="modal">
                <h3>Payment Mobile</h3>
                <img src="'.$image.'">
                <div class="store-paymentblock-offer">'.$name.' coins ~ '.$price.'$</div>
                </a>
                <a href="#" data-target="#'. $new_modal_id .'" data-toggle="modal" class="store-paymentblock-button">Buy</a>
              </div> </div>
              <div id="'. $new_modal_id .'" tabindex="-1" role="dialog" aria-labelledby="modal-header-primary-label" aria-hidden="true" class="modal fade">
              <div class="modal-dialog">
                <div class="modal-content">
                <div class="modal-header modal-header-primary">
                    <button type="button" data-dismiss="modal" aria-hidden="true" class="close">&times;</button>
                    <h4 id="modal-header-primary-label" class="modal-title"><center>Payment Mobile - Buy '.$name.' coins ~ '.$price.'$</center></h4></div>
                    <div class="modal-body">';
                if ($nbr_codes == 1){ echo'<div id="starpass_326336"></div><script type="text/javascript" src="http://script.starpass.fr/script.php?idd=326336&amp;theme=pink_salmon"></script><noscript>Veuillez activer le Javascript de votre navigateur s\'il vous pla&icirc;t.<br /><a href="http://www.starpass.fr/">Micropaiement StarPass</a></noscript>'; }
        echo'       </div>
                        <div class="modal-footer">
                            <button type="button" data-dismiss="modal" class="btn btn-primary">Close</button>
                        </div>
                    </div>
                </div>
            </div>';
    }
?>
 
Dernière édition:
Cette réponse a aidé l'auteur de cette discussion !
Retour
Haut