Bonjour,
Voila je rencontre un petit problème avec mon code. j'ai un tableau qui m'affiche tout les membres présent dans ma base de donné, et je peux éditer les infos, enfin c'est ce que je voudrais, j'ai fais que pour l'entrée "nomrp", mais ça ne fonctionne pas, le problème semble venir de la balise form qui apperement ne fonctionne pas dans les tableau, je suis coincé depuis ce matin, j'ai essayer dans tout les sens, et je ne trouve pas..
Traitement :
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=forbiddenp', 'root', '');
session_start();
$joueurs = $bdd->query('SELECT * FROM users');
if(isset($_SESSION['admin']) AND $_SESSION['admin'] == 1){
}else{
header("Location: user.php?id=".$_SESSION['id']);
die();
}
if(isset($_POST['nomrp'])) {
$nomrp = htmlspecialchars($_POST['nomrp']);
$getid = intval($_POST['id']);
$insertnomrp = $bdd->prepare("UPDATE users SET nomrp = ? WHERE id = ?");
$insertnomrp->execute(array($nomrp, $getid));
header('Location: table.php');
}
?>
Tableau :
<table class="table table-hover table-striped">
<thead>
<th>ID</th>
<th>Pseudo</th>
<th>Nom RP</th>
<th>Twitch</th>
<th>Youtube</th>
<th>Twitter</th>
<th>Admin</th>
<th>Action</th>
</thead>
<tbody>
<?php while ($j = $joueurs->fetch()) { ?>
<form method="POST" action="" enctype="multipart/form-data">
<tr>
<td><?php echo $j['id']; ?></td>
<td><?php echo $j['pseudo']; ?></td>
<td><input type="text" class="form-control" name="nomrp" placeholder="Nom RP" value="<?php echo $j['nomrp']; ?>"</td>
<td><input type="text" class="form-control" name="twitch" placeholder="Twitch" value="<?php echo $j['twitch']; ?>"</td>
<td><input type="text" class="form-control" name="youtube" placeholder="Youtube" value="<?php echo $j['youtube']; ?>"</td>
<td><input type="text" class="form-control" name="twitter" placeholder="Twitter" value="<?php echo $j['twitter']; ?>"</td>
<td><input type="text" class="form-control" name="admin" placeholder="Admin" value="<?php echo $j['admin']; ?>"</td>
<td><button type="submit" class="btn btn-info btn-fill"><i class="pe-7s-note"></i></button></td>
</tr>
</form>
<?php } ?>
</tbody>
</table>
Je voudrais au final, que quand j'appuye sur le button pour submit, que ma bdd mette bien à jour la valeur
Merci de votre aide
Bonjour.
Ton problème, c'est tout simplement que tu n'as pas refermé les balises de tes inputs, il te faut donc remplacer par exemple :
<td><input type="text" class="form-control" name="nomrp" placeholder="Nom RP" value="<?php echo $j['nomrp']; ?>"</td>
Par :
<td><input type="text" class="form-control" name="nomrp" placeholder="Nom RP" value="<?php echo $j['nomrp']; ?>"></td>
En fait, tu fermes bien les balises PHP, mais pas celle des inputs après avoir fermé celles de PHP.
Je ne comprends pas trop ce que tu veux dire.
Est-ce que tu as ajouté après new PDO(... )
le code que j'ai mis dans mon précédent post ?
Vu que tu fais une redirection vers la page table.php, c'est sur celle-ci que tu verras l'erreur de PDO s'afficher s'il en rencontre une.
Au passage fais un var_dump($_POST);
et un die();
juste en dessous de if(isset($_POST['nomrp'])) {
, en premier lieu pour vérifier si tu rentres bien dans la condition et en second, dans le cas ou tu rentres bien dans la condition pour vérifier que tu as bien les données nécessaires pour la sauvegarde.
Il n'y a pas l'id
dans ce que tu montres alors que c'est nécessaire pour modifier l'enregistrement.
Fais un input de type hidden pour l'id
, comme elle sera bien présente dans le tableau des données postées et le champ ne sera pas affiché.
Pour ce qui concerne le pseudo, tu fais un input de type text et tu lui ajoutes l'attribut readonly, de cette manière l'input sera affiché normalement mais sa valeur ne pourra pas être modifiée, tu peux faire de la même manière pour l'id
si tu veux qu'elle soit affiché comme les autres inputs.
Bien vue, merci, mais sa update toujours pas, surement un soucis je me trompe entre POST et GET, tu pourrais vérifier ? :s je suis vraiment débutant..
L'erreur ne vient pas de là, mais parce que tu as besoin de l'id
, sauf que celle-ci ne se situe pas dans un input.
Il te faut donc par exemple ajouter un champs caché pour l'id
.
Le traitement de ton formulaire et le tableau ne sont pas sur la même page si je ne me trompe pas.
C'est bien ça ?
si ils sont sur la même page voici la page complete
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=forbiddenp', 'root', '');
session_start();
$joueurs = $bdd->query('SELECT * FROM users');
if(isset($_SESSION['admin']) AND $_SESSION['admin'] == 1){
}else{
header("Location: user.php?id=".$_SESSION['id']);
die();
}
if(isset($_POST['nomrp'])) {
$nomrp = htmlspecialchars($_POST['nomrp']);
$getid = intval($_POST['id']);
$insertnomrp = $bdd->prepare("UPDATE users SET nomrp = ? WHERE id = ?");
$insertnomrp->execute(array($nomrp, $getid));
header('Location: table.php');
}
?>
<?php include "assets/php/headerandnav.php"; ?>
<div class="main-panel">
<nav class="navbar navbar-default navbar-fixed">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navigation-example-2">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Gestions membres</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#">
<p>Log out</p>
</a>
</li>
<li class="separator hidden-lg hidden-md"></li>
</ul>
</div>
</div>
</nav>
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="header">
<h4 class="title">Liste des membres</h4>
</div>
<div class="content table-responsive table-full-width">
<table class="table table-hover table-striped">
<thead>
<th>ID</th>
<th>Pseudo</th>
<th>Nom RP</th>
<th>Twitch</th>
<th>Youtube</th>
<th>Twitter</th>
<th>Admin</th>
<th>Action</th>
</thead>
<tbody>
<?php while ($j = $joueurs->fetch()) { ?>
<form method="POST" action="" enctype="multipart/form-data">
<tr>
<td><input type="text" class="form-control" name="id" placeholder="ID" value="<?php echo $j['id']; ?>" disabled></td>
<td><input type="text" class="form-control" name="pseudo" placeholder="Pseudo" value="<?php echo $j['pseudo']; ?>" disabled></td>
<td><input type="text" class="form-control" name="nomrp" placeholder="Nom RP" value="<?php echo $j['nomrp']; ?>"></td>
<td><input type="text" class="form-control" name="twitch" placeholder="Twitch" value="<?php echo $j['twitch']; ?>"></td>
<td><input type="text" class="form-control" name="youtube" placeholder="Youtube" value="<?php echo $j['youtube']; ?>"></td>
<td><input type="text" class="form-control" name="twitter" placeholder="Twitter" value="<?php echo $j['twitter']; ?>"></td>
<td><input type="text" class="form-control" name="admin" placeholder="Admin" value="<?php echo $j['admin']; ?>"></td>
<td><button type="submit" class="btn btn-info btn-fill"><i class="pe-7s-note"></i></button></td>
</tr>
</form>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<?php include "assets/php/footer.php"; ?>
Ok.
Je te conseilles d'ajouter ceci juste après l'initialisation de PDO :
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
Car par défault PDO ne retourne pas d'erreur et comme tu dois avoir une erreur au moment de la requête, tu ne peux pas le savoir, sauf si tu lui indiques de te retourner les erreurs.
Rajoutes donc cette ligne, retentes et si une erreur s'affiche, montres là moi.
Il manque pas une ligne pour afficher sur la page ?, sinon la page ressemble à ça
désolé pour le lien j'ai pas trouvé comment mettre l'image direct..
array(5) { ["nomrp"]=> string(3) "qdd" ["twitch"]=> string(13) "mythixtrinity" ["youtube"]=> string(32) "channel/UCcd54QF3QSMSn9fW10541YQ" ["twitter"]=> string(13) "mythiXTrinity" ["admin"]=> string(1) "0" }
apperement il à bien tout, je comprend pourquoi il m'affiche tout alors que je demande juste nomrp, mais bon du coup sa viendrais de l'envoie qui ce fait pas, j'utilise le même script à quelques choses pret pour l'édition du profil perso, et sa fonctionne niquel..
array(7) { ["id"]=> string(1) "3" ["pseudo"]=> string(12) "LadyAthena" ["nomrp"]=> string(12) "Jade McClain" ["twitch"]=> string(12) "ladyathena" ["youtube"]=> string(32) "channel/UCtc_awxnAyXD-3k6w5ry6CA" ["twitter"]=> string(12) "LadyAthena" ["admin"]=> string(1) "1" }
good car c'était disable
Je t'aime, mddr, mais du coup, tu serais comment faire pour pas qu'on puisse edit id et pseudo ?
Je me permet de remettre un message, serais tu comment faire un "Save all", pour que sa sauvegarde tout le tableau, si on modifie beaucoup de choses au lieu de faire ligne pas ligne?