[RESOLU] requete avec passage variable url

Eléphant du PHP | 345 Messages

10 déc. 2021, 11:15

Bonjour, je n'arrive pas à passer une variable dans une url
$pdostat = $bdd->prepare("SELECT proprio FROM $nom_ville LEFT JOIN membres ON $nom_ville.pos_x = membres.pos_x_ville AND $nom_ville.pos_y = membres.pos_y_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();  
if (!empty($membreSession )) { 
$proprio = $membreSession['proprio'];
}
$idMembreProprio = !empty($_GET['id']) ? $_GET['id'] : NULL;

// récupération en bdd du membre sélectionné dans l'url
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id = :id AND contenu_batiment = :contenu_batiment");
$pdostat->bindvalue(':id', $idMembreProprio, PDO::PARAM_INT);
$pdostat->bindvalue(':contenu_batiment', $membreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreProprio = $pdostat->fetch();  
----partie html----
<?php if (!$membreProprio) : ?>

    <p>Ce perso n'existe pas.<p>
    

<?php else :
// identifiant du membre sélectionné dans l'url
$idMembreProprio = !empty($_GET['id']) ? $_GET['id'] : NULL;

// récupération en bdd du membre sélectionné dans l'url
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id= :id AND contenu_batiment =:contenu_batiment");
$pdostat->bindvalue(':id', $idMembreProprio, PDO::PARAM_INT);
$pdostat->bindvalue(':contenu_batiment', $membreSession['contenu_batiment'], PDO::PARAM_INT);
$pdostat->execute();
$membreProprio = $pdostat->fetch();
echo '<img src="' . htmlentities($membreProprio['contenu_batiment']) . '">'; 
?>
Il faudrait que $proprio ( qui est un pseudo) passe dans l'url...

Avatar du membre
Mammouth du PHP | 1564 Messages

10 déc. 2021, 12:29


Eléphant du PHP | 345 Messages

10 déc. 2021, 17:40

$pdostat = $bdd->prepare("SELECT proprio FROM $nom_ville LEFT JOIN membres ON $nom_ville.pos_x = membres.pos_x_ville AND $nom_ville.pos_y = membres.pos_y_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();  
if (!empty($membreSession )) { 
$proprio = $membreSession['proprio'];
}
$proprio = !empty($_GET['proprio']) ? $_GET['proprio'] : NULL;

// récupération en bdd du membre sélectionné dans l'url
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id =:id AND contenu_batiment = :contenu_batiment");
$pdostat->bindvalue(':id', $proprio, PDO::PARAM_INT);
$pdostat->bindvalue(':contenu_batiment', $proprio, PDO::PARAM_INT);
$pdostat->execute();
$proprio = $pdostat->fetch();  
J'ai réécris le script ainsi mais je tombe toujours sur "
<p>Ce perso n'existe pas.<p>

Mammouth du PHP | 2703 Messages

10 déc. 2021, 18:16

ce dernier code ne comprend pas : "Ce perso n'existe pas". il ne peut donc pas afficher "Ce perso n'existe pas".
quelle est l'url de la page ?

Eléphant du PHP | 345 Messages

10 déc. 2021, 18:29

C'est parce que je n'ai pas remis ici tout le code :oops:
<?php
session_start();
require_once 'config.php';
$idMembreSession = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;

$pdostat = $bdd->prepare("SELECT nom_ville FROM villes LEFT JOIN membres ON villes.pos_x_map = membres.pos_x_enter_ville AND villes.pos_y_map = membres.pos_y_enter_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();    
if (!empty($membreSession)) { 
$nom_ville = $membreSession['nom_ville'];
}

$pdostat = $bdd->prepare("SELECT proprio FROM $nom_ville LEFT JOIN membres ON $nom_ville.pos_x = membres.pos_x_ville AND $nom_ville.pos_y = membres.pos_y_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();  
if (!empty($membreSession )) { 
$proprio = $membreSession['proprio'];
}
$proprio = !empty($_GET['proprio']) ? $_GET['proprio'] : NULL;
// récupération en bdd du membre sélectionné dans l'url
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id =:id AND contenu_batiment = :contenu_batiment");
$pdostat->bindvalue(':id', $proprio, PDO::PARAM_INT);
$pdostat->bindvalue(':contenu_batiment', $proprio, PDO::PARAM_INT);
$pdostat->execute();
$proprio = $pdostat->fetch();  
partie html
<?php if (!$proprio) : ?>

    <p>Ce perso n'existe pas.<p>
    

<?php else :
// identifiant du membre sélectionné dans l'url
$proprio = !empty($_GET['proprio']) ? $_GET['proprio'] : NULL;

// récupération en bdd du membre sélectionné dans l'url
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id= :id AND contenu_batiment =:contenu_batiment");
$pdostat->bindvalue(':id', $proprio, PDO::PARAM_INT);
$pdostat->bindvalue(':contenu_batiment', $proprio, PDO::PARAM_INT);
$pdostat->execute();
$proprio = $pdostat->fetch();
?>
<br><br>
<table>
<tr><td colspan="3"><b><font size="3">INTERACTIONS</b></font></td></tr>
<tr><td><font size="3"><a href="/voler_stock_batiment_perso_id.php?id=<?php '<img src="' . htmlentities($proprio['contenu_batiment']) . '">'; 
intval($proprio['id']) ?>" title="CAMBRIOLER">CAMBRIOLER</a></td>
</table>
<?php endif; ?>
<br><br><center><a href="/map_detail_lieu.php">Vers la carte de jeu</a></a></center>
</body>
</html>




Mammouth du PHP | 2703 Messages

10 déc. 2021, 18:37

quelle est l'url de la page ?

Eléphant du PHP | 345 Messages

10 déc. 2021, 19:06


Mammouth du PHP | 2703 Messages

10 déc. 2021, 19:18

soit une url sans paramètre.
est-il possible de récupérer le paramètre proprio dans une url qui n'a pas de paramètre ?

Eléphant du PHP | 345 Messages

10 déc. 2021, 19:30

Je pense que non, mais je ne comprends pas comment faire par rapport à:
$proprio = !empty($_GET['proprio']) ? $_GET['proprio'] : NULL;

Mammouth du PHP | 2703 Messages

10 déc. 2021, 19:34

il faut faire les choses dans l'ordre.
il faut commencer par
https://www.farwest1850.net/cambrioler_entrepot.php
comme je doute que ce soit l'utilisateur qui rentre direct cette url, il faut revoir le code qui fait un lien vers cette page et passer le paramètre.

Eléphant du PHP | 345 Messages

10 déc. 2021, 23:47

Ok, dans le script qui appelle le lien, j'ai mis ceci:
<td><b><a href="cambrioler_entrepot.php?id=proprio"></b></a></td>

puis modifié celui qui nous intéresse ainsi: (extrait)
$proprio = !empty($_GET['id']) ? $_GET['id'] : NULL;
// récupération en bdd du membre sélectionné dans l'url
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id =:id AND contenu_batiment = :contenu_batiment");
$pdostat->bindvalue(':id', $proprio, PDO::PARAM_INT);
$pdostat->bindvalue(':contenu_batiment', $proprio, PDO::PARAM_INT);
$pdostat->execute();
$proprio = $pdostat->fetch();  

Mammouth du PHP | 2703 Messages

11 déc. 2021, 00:11

cambrioler_entrepot.php?id=proprio
que vaut $_GET['id'] avec une telle url ?

Eléphant du PHP | 345 Messages

11 déc. 2021, 11:30

proprio...

j'ai remodifié ainsi le lien:
<a href="cambrioler_entrepot.php?id='$proprio'">
puis:
$pdostat = $bdd->prepare("SELECT proprio FROM $nom_ville LEFT JOIN membres ON $nom_ville.pos_x = membres.pos_x_ville AND $nom_ville.pos_y = membres.pos_y_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();  
if (!empty($membreSession )) { 
$proprio = $membreSession['proprio'];
}
$proprio = !empty($_GET['id']) ? $_GET['id'] : NULL;
// récupération en bdd du membre sélectionné dans l'url
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id =:id AND contenu_batiment = :contenu_batiment");
$pdostat->bindvalue(':id', $proprio, PDO::PARAM_INT);
$pdostat->bindvalue(':contenu_batiment', $proprio, PDO::PARAM_INT);
$pdostat->execute();
$proprio = $pdostat->fetch();  





Eléphant du PHP | 345 Messages

14 déc. 2021, 02:27

Alors, comme je ne m'en sortais pas, j'ai modifié le script sans passer par l'url et tout sur la meme page.
$pdostat = $bdd->prepare("SELECT nom_ville FROM villes LEFT JOIN membres ON villes.pos_x_map = membres.pos_x_enter_ville AND villes.pos_y_map = membres.pos_y_enter_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();    
if (!empty($membreSession)) { 
$nom_ville = $membreSession['nom_ville'];
}
$pdostat = $bdd->prepare("SELECT proprio FROM $nom_ville LEFT JOIN membres ON $nom_ville.pos_x = membres.pos_x_ville AND $nom_ville.pos_y = membres.pos_y_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();  
if (!empty($membreSession )) { 
$proprio = $membreSession['proprio'];
}
$idMembreCible = $proprio;
// récupération en bdd du membre sélectionné 
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE pseudo = :pseudo");
$pdostat->bindvalue(':pseudo', $idMembreCible, PDO::PARAM_STR);
$pdostat->execute();
$membreCible = $pdostat->fetch();
if (!empty($membreCible)) { 
$pseudo = $membreCible['pseudo'];
}
puis plus loin, je recupère ce qui m'intéresse.
<?php if (!$membreCible) : ?>

    <p>Ce perso n'existe pas ou n'est plus à proximité.<p>
    

<?php else :
// identifiant du membre déclaré
$idMembreCible = $proprio;

// récupération en bdd du membre déclaré
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE pseudo = :pseudo");
$pdostat->bindvalue(':pseudo', $idMembreCible, PDO::PARAM_STR);
$pdostat->execute();
$membreCible = $pdostat->fetch();
?>
<br>
<table>
<td><?php echo '<img src="' . htmlentities($membreCible['contenu_batiment']) . '">'; ?>
<br><b><font size="2"><?php echo '' . htmlentities($membreCible['qte_batiment']) .''; ?></b></font></td>
</table>
<br>
<table>
<tr><td><font size="3"><a href="/devaliser_stock_batiment_perso_id.php?id=<?php echo intval($membreCible['id']) ?>" title="VOL">FORCER LA PORTE</a></td>
</table>
<?php endif; ?>
C'est un peu tordu, mais ça fonctionne parfaitement.