Bonjour a tous, je voudrai savoir, sur mon site donc je voulait savoir comment je pouvais faire (la phrase) pour que quand j'écrit un pseudo sur mon site et que j'appuie sur press sa met admin le mec, en GROS

Je voudrai faire une textbox avec un bouton ou quand j'écrit le nom du mec inscrit sur phpmyadmin (dans la colone username) et que j'appuie sur press sa modifie la valeurs ID et au lieu de 2 sa passe a 1.

Merci beaucoup, cordialement

15 réponses


Bonsoir.

la valeurs ID et au lieu de 2 sa passe a 1

Si le champ id est en auto-incrément, tu ne pourras pas en changer la valeur et c'est une mauvaise idée de vouloir modifier la valeur d'une clé primaire.

bykertix
Auteur

Je me suis tromper c'est role_id que je veut changer, c'est une colonne que j'ai fait moi qui n'as pas été generer

bykertix
Auteur

En gros si tu veut je voudrai qu'en php quand j'écris l'username d'un membre sa le selectionne dans la bdd et que quand j'appuie sur le bouton a côté de la textbox sa le met admin en gros sa change la valeurs de la colonne role_id que j'ai mis

bykertix
Auteur

comme ici

C'est fait très rapidement mais l'idée est là, après sans code de ta part, c'est difficile, genre j'ai pas pu adapter le code à savoir si tu utilises mysqli ou pdo, etc.. mais c'est ça :

<?php

if(isset($_GET['pseudo']) && !empty($_GET['pseudo'])):
    $pseudo = htmlspecialchars($_GET['pseudo']); // Pas sécurisé faute de savoir ce que tu utilises comme méthode
    // Ta requête UPDATE ici du genre "UPDATE users SET role_id = 1 WHERE pseudo = '" . $pseudo . "'" ;
    // Après tu peux vérifier si le pseudo existe bien dans ta base avant pour éviter toutes erreurs
    if($requete) // On vérifie que la requête est bien passée
        echo ($pseudo .' est maintenant admin');
    else
        echo ('Echec, '. $pseudo .' n\'est pas admin');
endif;

?>

<form method="get">
    <label for="pseudo">Pseudo :</label>
    <input type="text" id="pseudo" name="pseudo" />
    <input type="submit" />
</form>
bykertix
Auteur

Ok merci :) je vais voir tout sa et je n'utilise pas mysql car il est périmé

bykertix
Auteur
<?php $Auth->allow('admin'); ?>
<?php require 'inc/db.php'; ?>
<?php

$bdd = new PDO("mysql:host=localhost;dbname=cris*_*****;charset=utf8", "cris******", "C!t*****");

if(isset($_POST['username']) AND isset ($_POST['role_id'])AND isset ($_POST['address']))
{
    $requete = $bdd->prepare("UPDATE users SET role_id = ?, address = ? WHERE username = ?");
    $requete->execute(array($_POST['role_id'], $_POST['address'], $_POST['username']));
}

?>
<html>
<head>
    <title>insertion de données en PHP :: partie 1</title>
</head>
<body>
<form method="get">
    <label for="username">Pseudo :</label>
    <input type="text" id="username" name="username" />
    <label for="role_id">role :</label>
    <input type="text" id="role_id" name="role_id" />
    <label for="address">Badge :</label>
    <input type="text" id="address" name="address" />
    <input type="submit" />
</form>
</body>
</html>

Voila tout mon code entier mais sa ne marche toujours pas !!

Bon là, première chose qui me frappe, c'est la method get dans le form et post dans le php.

<?php

    $Auth->allow('admin');
    require 'inc/db.php';

    $bdd = new PDO("mysql:host=localhost;dbname=cris*_*****;charset=utf8", "cris******", "C!t*****");

    if (isset($_POST['username']) && isset($_POST['role_id']) && isset($_POST['address'])) {
        $requete = $bdd->prepare("UPDATE users SET role_id = ?, address = ? WHERE username = ?");
        $requete->execute(array($_POST['role_id'], $_POST['address'], $_POST['username']));
    }

?>
<html>
<head>
    <title>insertion de données en PHP :: partie 1</title>
</head>
<body>
<form method="post">
    <label for="username">Pseudo :</label>
    <input type="text" id="username" name="username"/>
    <label for="role_id">role :</label>
    <input type="text" id="role_id" name="role_id"/>
    <label for="address">Badge :</label>
    <input type="text" id="address" name="address"/>
    <input type="submit"/>
</form>
</body>
</html>

Et j'ai dit mysqli, pas mysql, mysql est obsolète oui, mais pas mysqli ;)

bykertix
Auteur

Ah oui j'avais pas vu le petit i ^^ mais ducoup j'ai fait les modifs necessaire mais sa ne fonctionne toujours pas :)

Qu'est ce que je hais PDO, je dois être le seul mec au monde à utiliser mysqli, c'est ouf. Bref, là ça me saute pas aux yeux donc on va y aller étape par étape.

remplace ta requête par les vérifs de routine histoire d'éliminer le plus évident :

if (isset($_POST['username']) && isset($_POST['role_id']) && isset($_POST['address'])) {
        // $requete = $bdd->prepare("UPDATE users SET role_id = ?, address = ? WHERE username = ?");
        // $requete->execute(array($_POST['role_id'], $_POST['address'], $_POST['username']));
        echo 'Pseudo : '. $_POST['username'] .'<br />Adresse : '. $_POST['address'] .'<br />Rôle : '. $_POST['role_id'];
    }

Si ça fonctionne tu sauras que le problème vient de la requête

bykertix
Auteur

ok donc c'est bon j'ai mis j'ai une erreur Parse error: syntax error, unexpected 'if' (T_IF) in /home/cristalh/public_html/bykertix/admin.php on line 6

Et il y a quoi à ta ligne 6 ?

Tu dois avoir une erreur de parenthèse, de point virgule ou autre avant ton if

bykertix
Auteur

Ah oui j'avais une erreur c'est bon je l'ai corriger, mais maintenant dès que je rentre les infos et que je clique sur validé sa me dit sa:
Fatal error: Call to a member function prepare() on null in /home/cristalh/public_html/bykertix/admin.php on line 6

Edit: c'est regler j'ai remplacer bdd par pdo

Edit2: sa fonctionne ! :p avec la requette aussi

Edit3: mais je voudrai savoir comment je peut avoir la listes des utilisateurs directement sur le site

Avec un select tout simplement.

Je ne pourrais que te conseiller de te former à php et mysql, tu sembles manquer de formation ;)

Après je te conseille aussi de t'entraîner comme tu fais, mais c'est en cherchant seul qu'on progresse le mieux ;)

bykertix
Auteur

SquallX J'en prend note pour la prochaine fois :) merci du conseil