Après 4 ou 5 heure de recherche je bloque sur la fonction $_GET'identifiant'] !.

Pour le bouton c'est bon :

<a href="profil-public.php?identifiant=<?php echo $row'identifiant']; ?>"><?php echo $row'identifiant']; ?></a>

Mais pour la fonction pour récupérer la variable c'est une catastrophe impossible de mettre la main sur un tutoriel expliquant les démarche à faire !.

J'ai donc essayer sa mai sans succès apparent !.

<?php 
if (empty($_GET'identifiant'])) 
{
    }

if(isset($_GET'identifiant']) && empty($_GET'identifiant']) === false) {
    } 

    $stmt = $cnx->prepare("SELECT * FROM me_utilisateur");
    $stmt->bindParam(':identifiant', $identifiant, PDO::PARAM_INT);
    $stmt->execute($_GET'identifiant']);
    $result = $stmt->fetchAll();
    ?>

Merci de votre aide !.

9 réponses


Chokkan Web
Réponse acceptée

Salut,

Le mieux, plutôt que de se perdre à ajouter/supprimer des lignes jusqu'à ce que ça fonctionne, est de reprendre depuis le début.

À priori, ta requête ne va retourner qu'un seul enregistrement, dans ce cas, le mieux et de faire :

$stmt = $cnx->prepare("SELECT * FROM me_utilisateur WHERE identifiant = :identifiant");
$stmt->execute(array(':identifiant' => $_GET'identifiant']));
$result = $stmt->fetch();

Pourquoi faire un fetchAll, s'il n'y a qu'une seule ligne à retourner ? Un fetch() est suffisant.

Ensuite, $result est une Array (un tableau), et en php, faire un echo Array(); n'affiche rien.
Il faut aller chercher l'information dans ton $result.

Ici l'information est un CHAMP SQL.

Pour afficher l'adresse email il te suffit de faire :

echo $result'email'];

Enfin, tu t'emmêles les pinceaux dans ce qu'est $_GET, mais également dans tes if.

$_GET n'est pas une fonction, mais une variable globale qui te permet de récupérer les paramètres passées dans une url.
A titre d'exemple, $_GET'id_article'] permet de récupérer le paramètre id_article de l'url article.php?id_article=12.
Ici echo $_GET'id_article']; affichera 12.

Si tu veux passer plusieurs paramètres dans ton url, le premier paramètre sera toujours précédé de "?" mais les paramètres suivants seront précédés de "&", par exemple : categories.php?id_cat=12&tri=nom_article&page=2

Pour tes conditions if, c'est simplement mal syntaxé.

Au final, ton bout de code devra ressembler à ça

if(!empty($_GET'identifiant']))
{
$stmt = $cnx->prepare("SELECT * FROM me_utilisateur WHERE identifiant = :identifiant");
$stmt->execute(array(':identifiant' => $_GET'identifiant']));
$result = $stmt->fetch();
echo 'Email : '.$result'email'];
}
else
{
    echo 'Identifiant manquant';
}

Et pour terminer :

Isset permet de savoir si une variable est définie
Empty permet de savoir si une variable est définie ET teste si cette variable n'est pas vide.

Donc nul besoin de faire un isset() s'il précède un empty().

Bisous

pcinfo-72
Auteur
Réponse acceptée

Merci à vous voici un exemple fonctionnel j'ai mis 50 secondes pour en être sur !. -> PDO PHP

<?php
session_start();
require ('auth.php');
require_once 'cnx.php';
  $inactive = 50;
  $session_life = time() - $_SESSION'timeout'];
  if($session_life > $inactive) { 
     session_destroy(); 
     header("Location: logout.php"); 
  }
  $_SESSION'timeout']=time();
?>
if(isset($_GET'identifiant']) && !empty($_GET'identifiant']))
{
    $stmt = $cnx->prepare("SELECT * FROM me_utilisateur WHERE id = ?");
    $stmt->execute(array($_GET'identifiant']));
    $result = $stmt->fetchAll();
}

Pourquoi faire un === false? $_GET'identifiant'] n'est pas un bool, mais un int (je suppose)

Je ne pence que cela ne marche pas

<?php echo $result'identifiant']; ?>

ou

<?php echo $result'id']; ?>

J'ai essayer sa rien à en tirer :(

while ($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
    echo $row;
}

J'ai essayer sa sa m'affiche l'identifiant mai rien d'autre :

if(isset($_GET'identifiant']) && !empty($_GET'identifiant'])) /ne marche pas non plus

if ( !empty($_POST"identifiant"]) ) $identifiant = $_POST"identifiant"]; else $identifiant = $_GET"identifiant"]; 
{
    $stmt = $cnx->prepare("SELECT * FROM me_utilisateur WHERE identifiant = ?"); //ou identifiant = ". $_GET"identifiant"] ."
    $stmt->execute(array($_GET'identifiant'], $_GET'email']));
    $result = $stmt->fetchAll();
}

<?php echo $identifiant; ?>

<a href="profil-public.php?identifiant=<?php echo $_POST'identifiant']; ?>"><?php echo $row'identifiant']; ?></a>

L'erreur provient d'ici http://egyptus.fr/tuto/profil-public.php?identifiant=leforgeur72

il prend que l'identifiant pour l'email il faudrait faire

L'erreur provient d'ici http://egyptus.fr/tuto/profil-public.php?identifiant=leforgeur72?email=email

moi je ne veut pas justement sa serait trop long

Grand merci tu et mignon :)

J'ai une dernière question

Voila j'ai essayer jusqu’à 2 heure du matin hier soir pour en faire une requête qui permet après une inactivée à 5 minute faire une $_SESSION = array(); session_destroy();

J'ai donc utilisée plusieurs méthodes trouver sur internet mai mon compte ne veut plus se connecter tu aurais une idée de comment faire

Bonjour,

Le plus simple serais qu'a chaque page chargé, tu enregistre dans une variable session ou dans un cookie l'heure actuel. Ainsi, a chaque recharge de la page, tu vérifie l'heure dans la session/cookie avec l'heure actuel (si moins de 5min, tu ecrase la valeur par l'heure actuel sinon session_destroy() )

Si tu as accès au php.ini, le plus simple est de modifier la valeur de session.gc_maxlifetime.