2017-09-30 1 views
2

Utilisation d'un function Je peux créer des paramètres pour afficher et masquer certaines choses.Comment afficher le lien de téléchargement d'un produit souscrit?

function loggedin(){ 
    return (isset($_SESSION['UserId'])) ? true : false; 
} 

if (loggedin() === true){ 
    echo"Welcome $name"; 
} else { 
    echo"<a href="access.php">Log in</a>"; 
} 

Une autre façon de cacher le contenu d'un utilisateur est la suivante:

if (loggedin() === false) 

Comment puis-je faire un paramètre similaire à cacher et afficher les données d'un produit par un utilisateur souscrit?

C'est à dire lorsque vous vous connectez un utilisateur qui a acquis ou qui a procédé à souscrire à un produit et si l'état du produit est complete cacher le prix (ou masquer une partie du contenu) et au lieu du prix montre le lien de téléchargement du fichier du produit.

Comment la consultation doit-elle être considérée et montrer les résultats?

J'ai le tableau suivant appelé souscrit cette est en forme de cette façon

id_subscribed | id_product | UserId | number_facture | status | date | 
    1    5   2   4562344  complete null 
    2    5   9   4562345  incomplete null 

Le tableau des produits

id_product | product | price | archive | 
    5   null  40.00 data.zip 

Le tableau Utilisateurs

UserId | name | last_name | usuername | email | password 
    2  Juan  null  juan10 @... q1dxe333f 
    9  Pedro  null  pedro1 @... wfrf653gg 

Répondre

1

Vous pouvez créer une fonction (ou une méthode dans les utilisateurs ou la classe de produit) qui vérifient la relation entre le produit et l'utilisateur dans "s'abonner d "tableau.

utilisant AOP:

 /** 
    * Check if the relationship between product and user 
    * has status completed. 
    * 
    * @param int $id_product 
    * @param int $UserId 
    * @return boolean 
    */ 
    function checkSubscribeComplete($id_product, $UserId = 1) 
    { 
     global $pdo; // using PDO 
     $res = FALSE; // the default result 

     /* Just concat the SQL string. 
     * can do directly in $pdo->prepare 
     */ 
     $qString = "SELECT status FROM subscribed"; 
     $qString .= " WHERE "; 
     $qString .= "id_product = :product"; 
     $qString .= " AND "; 
     $qString .= "UserId = :user"; 
     $qString .= " AND "; 
     $qString .= "status = 'complete';"; 

     $query = $pdo->prepare($qString); 

     /* bindValue from PDO, 
     * can use directly if injection was not a problem 
     */ 
     $query->bindValue(':product', $id_product, PDO::PARAM_INT);  
     $query->bindValue(':user', $UserId, PDO::PARAM_INT); 

     // Here exec the query 
     $query->execute(); 

     // $result is an array of columns 
     $result = $query->fetch(PDO::FETCH_ASSOC); 

     // if complete is true we expect to have one column. 
     if (count($result) > 0) $res = TRUE; 

     return $res; 
    } 

Utilisation MySQLi:

/*Not sure if it's works*/ 
    /** 
    * Check if the relationship between product and user 
    * has status completed. 
    * Using MySQLi instead of PDO 
    * 
    * @param int $id_product 
    * @param int $UserId 
    * @return boolean 
    */ 
    function checkSubscribeCompleteMI($id_product, $UserId = 1) 
    { 
     global $con; // using MySQLI, $con is the connection created before 
     $res = FALSE; // the default result 

     /* Just concat the SQL string. 
     */ 
     $qString = "SELECT status FROM subscribed"; 
     $qString .= " WHERE "; 
     $qString .= "id_product = '".$id_product."'"; 
     $qString .= " AND "; 
     $qString .= "UserId = '".$UserId."'"; 
     $qString .= " AND "; 
     $qString .= "status = 'complete';"; 

     // exec the query and get the result 
     $result = mysqli_query($con, $qString); 

     // count the number of rows in the result 
     $total = mysqli_num_rows($result); // return int 

     // if "complete" is true we expect to have one row. 
     if ($total > 0) $res = TRUE; 

     return $res; 
    } 

espoir que cela vous aide.

Je ne sais pas si vous utilisez déjà AOP, de toute façon, vérifier PHP Database Access: Are You Doing It Correctly? si vous voulez en savoir plus sur ce

+0

L'exemple est parfait grâce, vous pouvez faire le même exemple dans l'objet mysqli orienté. – Oscar

+0

Vous pouvez publier dans la même réponse une deuxième version dans mysqli orienté objet, c'est que mes projets sont dans mysqli oreintada aux objets. :) – Oscar

+0

Bien sûr, maintenant il y a un exemple de MySQLi. :) –