Bonjour,
Je rencontre un léger problème, je m'explique:
J'ai 1 class POO (APIMembre) et 2 fonctions (SwitchStatus & delete), au début de ma page j'ai:

require('apimembre.class.php');
$APIMembre = new APIMembre;

Dans un href je met ensuite:

$APIMembre->switchStatus('test123');

Tout est parfait, la fonction execute bien mon script, mais le problème se pose quand a côté j'ai un autre href avec la fonction delete ce qui donne au total:

<td>
    <a href="<?php $apiMembre->delete('test123'); ?>"><span class="label label-danger"><i class="fa fa-times"></i></span></a>
    <a href="<?php $apiMembre->switchStatus('test123'); ?>"><span class="label label-primary"><i class="fa fa-lock"></i></span></a>
</td>

A ce moment la quand je clique sur le <a href> qui doit faire switchStatus(), il execute delete() et supprime la ligne dans la bdd (je crois), voici ma class:

<?php
class APIMembre {
    function switchStatus($apikey) {
        $host = '127.0.0.1';
        $db = 'api4game';
        $user = 'root';
        $password = null;
        $connexion = new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

        $APIKEY = $apikey;
        # Search API in database and look actual ID
        # Update API Status

        $req_selectAPI = $connexion->prepare('SELECT * FROM api WHERE apikey= :apikey');
        $req_selectAPI->execute(array(
           'apikey' => $APIKEY 
        ));
        $nbr_selectAPI = $req_selectAPI->rowCount();
        if($nbr_selectAPI > 0) {
            $selectAPI = $req_selectAPI->fetch();
            $ACTUAL_ID = $selectAPI['status'];   
            if($ACTUAL_ID == 1) {
                $NEW_ID = 2;
            } elseif($ACTUAL_ID == 2) {
                $NEW_ID = 1;
            }
            $updateAPI = $connexion->prepare('UPDATE api SET status= :status WHERE apikey= :apikey');
            $updateAPI->execute(array(
               'status' => $NEW_ID ,
               'apikey' => $APIKEY
            ));   
        }

    }

    function delete($apikey) {
        $host = '127.0.0.1';
        $db = 'api4game';
        $user = 'root';
        $password = null;
        $connexion = new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

        $APIKEY = $apikey;
        #Search API in database and delete

        $deleteAPI = $connexion->prepare('DELETE FROM api WHERE apikey= :apikey');
        $deleteAPI->execute(array(
           'apikey' => $APIKEY 
        ));
    }

}

?>

2 réponses


Tes méthodes sont appelées quand la page est chargée, pas quand tu cliques sur le bouton. Tu dois mettre en href une page qui exécute le bout de code si tu veux que ça marche.

Cobryn
Auteur

Salut,

Merci de la réponse, j'ai contourner le problème, en appellant une autre page.

Mais il n'y à vraiment aucun moyens d'éviter tout ça ?