Bonjour/Bonsoir.
Je vous explique mon problème ci-dessous :
Enfaîte dans mon administration j'ai une page pour gérer mes membres et dans cette page j'ai un tableau avec les Pseudo, Rôle (ex: Admin) et les Options (Bannir & OP), quand je veux op un membre il me op tout les autres membres avec.
Mon code ci-dessous :
<?php
require_once('../includes/config/bdd.php');
require_once('../includes/config/config_jsonapi.php');
$reqM = $bdd->query('SELECT * FROM users WHERE id');
$nbrM = $reqM->rowCount();
if($nbrM > 0){
while ($selectUsers = $reqM->fetch()) {
if($_GET['op'] == 1){
$opPlayer = $api->call('opPlayer', array($selectUsers['realname']));
}
?>
<!DOCTYPE html>
<html>
<head>
<title>HighLobby | Administration</title>
<meta charset="utf-8">
</head>
<body>
<div class="tab_members">
<center>
<table>
<tr>
<th>Pseudo</th>
<th>Rôle</th>
<th>Options</th>
</tr>
<tr>
<td><?php echo $selectUsers['realname']; ?></td>
<td><?php if($selectUsers['rang'] == 3){ echo "Administrateur";
}elseif ($selectUsers['rang'] == 2) {echo "Modérateur";
}else{echo "Membres";} ?></td>
<td><a href="manage_members.php?id=<?php echo $selectUsers['id']; ?>&ban=1">Bannir</a> | <a href="manage_members.php?op=1">OP</a></td>
</tr>
</table>
</center>
<?php }} ?>
</div>
</body>
</html>
Puis j'ai une petit erreur en php mais sa rien à voir c'est : Undefined index op.
Je vous remercie d'avance, bonne journée/soirée.
Cordialement, Siak.
En gros, sur une seule page tu veux :
C'est bien ça ? Alors rien de plus simple :
fichier manage_members.php
<?php
// pour récupérer TOUS les utilisateurs, et les afficher, avec un lien permettant de bannir tel ou tel utilisateur :
$allPlayers = $bdd->query('SELECT * FROM authme');
while ($player = $allPlayers->fetch()):?>
<tr>
<td><?php echo $player['nom']; ?></td>
<td><?php echo $player['rang']; ?></td>
....
<td> <a href="manage_members.php?action=op&id=<?php echo $player['id']; ?>">OP ce membre</a> </td>
<?php endwhile;?>
<?php
// pour bannir / op un utilisateur spécifique après l'ouverture du lien çi dessus :
if(isset($_GET['action')){
if($_GET['action'] == "op"){
if(!empty($_GET['id'])){
$ip_to_ban = $_GET['id'];
$api->call('opPlayer', array($selectUsers['realname'], $ip_to_ban)); // en toute logique, là tu appelles l'api ,et plus particulièrement la methode "opPlayer" et tu lui transmet l'ID de l'utilisateur à bannir/op
}
}
}
?>
Bonjour,
SI je peux me permettre, il me semble que la methode opPlayer demande le 'realname' et l'id.
Je pense que comme ca, le code de cid5420 doit marcher correctement.
<?php
// pour récupérer TOUS les utilisateurs, et les afficher, avec un lien permettant de bannir tel ou tel utilisateur :
$allPlayers = $bdd->query('SELECT * FROM authme');
while ($player = $allPlayers->fetch()):?>
<tr>
<td><?php echo $player['nom']; ?></td>
<td><?php echo $player['rang']; ?></td>
....
<td> <a href="manage_members.php?action=op&id=<?php echo $player['id']; ?>&realname=<?php echo $player['realname']; ?>">OP ce membre</a> </td>
<td> <a href="manage_members.php?action=ban&id=<?php echo $player['id']; ?>&realname=<?php echo $player['realname']; ?>">BAN ce membre</a> </td>
<?php endwhile;?>
<?php
// pour bannir / op un utilisateur spécifique après l'ouverture du lien çi dessus :
if(isset($_GET['action')){
if($_GET['action'] == "op"){
if(!empty($_GET['id']) && !empty($_GET['realname'])){
$id = $_GET['id'];
$realname = $_GET['realname'];
$api->call('opPlayer', array($realname, $id)); // en toute logique, là tu appelles l'api ,et plus particulièrement la methode "opPlayer" et tu lui transmet l'ID de l'utilisateur à bannir/op
}
}
else if($_GET['action'] == "ban"){
if(!empty($_GET['id']) && !empty($_GET['realname'])){
$id = $_GET['id'];
$realname = $_GET['realname'];
// tu n'as pas appelé l'api pour ban un joueur sur le code au départ donc je ne sais pas quoi mettre ici.
}
}
}
?>
il ne reste plus qu'à ajouter l'action ban (tu ne la pas mis sur le code au debut).
Edit : oups j'ai pas vu ton message Benjamin mais bon, maintenant qu'il est fait ...
$reqM = $bdd->query('SELECT * FROM users WHERE id');
Déjà ici ta requête est problématique, car tu n'appose aucune condition (ex : where id = $variable).
Ensuite dans ton liens :
<a href="manage_members.php?id=<?php echo $selectUsers['id']; ?>&ban=1">Bannir</a> | <a href="manage_members.php?op=1">OP</
Le script pour op pointe vers aucun utilisateur ... Il faudrait faire ça :
<a href="manage_members.php?op=1&id=<?= $selectUsers['id']; =?>">OP</a>
Bah tu as un lien du type
<a href="manage_members.php?op=1&id=<?= $selectUsers['id']; ?>">OP</a>
Donc sur la page cible, tu récupère $_GET['id'], ce qui correspond à ta variable !
Pour info si tu mets WHERE dans ta requête, tu es obligé de donner une condition, WHERE id ne veut rien dire !
(selectionne tout dans la table users quand id)??????
Autre remarque, tu arrive a voir tout les utilisateurs avec ce code? Il manque un bout de code non???
C'est moi ou tu n'a déjà aucune boucle pour afficher les utilisateurs ?
Ensuite, comme on te l'a dit, si tu veux envoyer bannir (ou autre fonction) un utilisateur il te faut son id , ex :
function delete($id)
{
$api->delete($id);
}
Donc tu dois avoir un lien un peu comme ça : <a href="script.php?action=delete&id=54">Bannir le membre 54</a>
.
Et coté serveur, tu vérifies si l'action est passée (en GET), et qu'elle n'est pas vide, puis tu vérifies si l'id est aussi passée (en GET toujours) et voilà :)
J'ai fait quelques changement, maintenant il me op que la personne choisis mais parcontre il ne m'affiche plus les membres..
Pour tant j'ai juste défini id et changer ma requête
Nouveau code :
<?php
require_once('../includes/config/bdd.php');
require_once('../includes/config/config_jsonapi.php');
if(isset($_GET['id']) AND $_GET['id'] > 0){
$getid = intval($_GET['id']);
$reqM = $bdd->prepare('SELECT * FROM authme WHERE id = ?');
$reqM->execute(array($getid));
$nbrM = $reqM->rowCount();
if($nbrM > 0){
while ($selectUsers = $reqM->fetch()) {
if($_GET['op'] == 1){
$opPlayer = $api->call('opPlayer', array($selectUsers['realname'], $selectUsers['id']));
}
?>
<!DOCTYPE html>
<html>
<head>
<title>HighLobby | Administration</title>
<meta charset="utf-8">
</head>
<body>
<div class="tab_members">
<center>
<table>
<tr>
<th>Pseudo</th>
<th>Rôle</th>
<th>Options</th>
</tr>
<tr>
<td><?php echo $selectUsers['realname']; ?></td>
<td><?php if($selectUsers['rang'] == 3){ echo "Administrateur";
}elseif ($selectUsers['rang'] == 2) {echo "Modérateur";
}else{echo "Membres";} ?></td>
<td><a href="manage_members.php?id=<?php echo $selectUsers['id']; ?>&ban=1">Bannir</a> | <a href="manage_members.php?id=<?php echo $selectUsers['id']; ?>&op=1">OP</a></td>
</tr>
</table>
</center>
<?php }}} ?>
</div>
</body>
</html>
Le code est bon sauf que quand je clique sur op le realname est en null alors que avant il y avait le pseudo qui était là...
euhhh comment ça tu veux enregistrer le pseudo ? ou c'est pour l'affichage ? j'ai un peut du mal a suivre !!!
Enfaîte je sais pas si tu connais Minecraft son mode de fonctionnement, la je veux aussi afficher les pseudo donc sa c'est bon mais enfaîte quand je clique sur op j'ai un message dans ma console de minecraft de jsonapi me disant que l'id celle-ci est bon mais pour ce qui est du pseudo il est en null @cid5420
Non je ne connais pas ! si tu as l'id de l'utilisateur, tu fais une requete pour chercher l'utilisateur avec l'id ! et ensuite tu pourras afficher le pseudo
Dahael, les codes que cid5420 et moi même t'avons donnés sont correctes, on t'a largement donné la piste, maintenant relis ton code à tête reposée et tu comprendra d'où viens ton erreur.
Sinon je t'invite à relire le chapitre sur les variables $_GET .