Problème script PHP/MySQL

Résolu/Fermé
Durst1805 - 23 juil. 2008 à 00:31
 Durst1805 - 24 juil. 2008 à 23:57
Bonjour, j'ai un problème avec mon script PHP, il ne cesse de m'afficher "Le nouvel utilisateur à été créer" lorsque j'accède à ma page, sans que je clique sur le bouton valider du formulaire pour ajouter un nouvel utilisateur.
De plus lorsque je créer un nouvel utilisateur ensuite, il me crée dans ma table "utilisateur" une ligne vide et une autre ligne au dessous avec seulement le champ login complété, mais le champ password reste toujours vide.
Je vous en pris, j'ai absolument besoin de votre aide, étant novice en PHP je n'arrive pas à déceler mes erreurs, pourtant j'ai chercher sur de nombreux forum, mais pas moyen de mettre la main sur une solution.

Voici mon code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Administration</title>
</head>

<body>
<h1>Créer un nouvel utilisateur</h1>
<h3>Informations de connexion</h3>
<form name="creation" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<table>
<tr><td>
	Login : 
    </td>
    <td>
    <input type="text" name="nom" />
</td></tr>
<tr><td>
    Mot de passe :
    </td>
    <td>
    <input type="text" name="motdepasse" />
</td></tr>
<tr><td>
    Table :
    </td>
    <td>
    <input type="text" name="table" />
</td></tr>
    </table>
<h3>Droits d'accès</h3>
<table>
<tr><td>
Supprimer les données :
</td>
<td>
oui <input type="radio" name="suppr" value="oui" />
non <input type="radio" name="suppr" value="non" />
</td></tr>
<tr><td>
Insérer des données :
</td>
<td>
oui <input type="radio" name="inser" value="oui" />
non <input type="radio" name="inser" value="non" />
</td></tr>
<tr><td>
Afficher les données :
</td>
<td>
oui <input type="radio" name="select" value="oui" />
non <input type="radio" name="select" value="non" />
</td></tr>
<tr><td>
Modifier les données :
</td>
<td>
oui <input type="radio" name="updt" value="oui" />
non <input type="radio" name="updt" value="non" />
</td></tr>
</table>
<h1>Supprimer un utilisateur</h1>
<table>
<tr><td>
	Login : 
    </td>
    <td>
    <input type="text" name="nomSup" />
</td></tr>
<tr><td>
    Table associée :
    </td>
    <td>
    <input type="text" name="tableSup" />
</td></tr>
    </table>
    <br />
    <input type="submit" name="valider" value="Valider" />
</form>

<?php

$nom = $_POST[nom];
$motdepasse = $_POST[motdepasse];
$table = $_POST[table];
$suppr = $_POST[suppr];
$inser = $_POST[inser];
$select = $_POST[select];
$updt = $_POST[updt];

//echo $nom.' '.$motdepasse.' '.$suppr.' '.$inser.' '.$select.' '.$updt;

include 'connexion.php';
$nomdelabase = 'mysql';

mysql_select_db($nomdelabase, $connexion);

//creation du nouvel utilisateur
$utilisateur = "CREATE USER '".$nom."'@'localhost' IDENTIFIED BY '".$motdepasse."'";
$acces = "GRANT USAGE TO '".$nom."'@'localhost' ON *.*";
$tabUtilisateur = "INSERT INTO `mabase`.`utilisateur` (`ID`, `login`, `password`) VALUES (NULL, '$nom', '$motdepasse')";

$query = mysql_query($utilisateur, $connexion);
mysql_query($acces, $connexion);
mysql_query($tabUtilisateur, $connexion);


//creation de sa nouvelle table
$creaTable = "CREATE TABLE `mabase`.`".$table."` (
`ID` int( 10 ) unsigned NOT NULL AUTO_INCREMENT ,
`DATE` varchar( 10 ) NOT NULL default '00-00-0000',
`CLIENT` varchar( 90 ) NOT NULL ,
`ADRESSE` varchar( 90 ) NOT NULL ,
`CP` varchar( 5 ) NOT NULL default '00000',
`VILLE` varchar( 90 ) NOT NULL ,
`CODE_PRODUIT` int( 10 ) unsigned NOT NULL ,
`DESIGNATION` varchar( 255 ) NOT NULL ,
`QTE` tinyint( 3 ) unsigned NOT NULL ,
`PRIX_TTC` tinyint( 4 ) NOT NULL ,
PRIMARY KEY ( `ID` )
) ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT =1";

$query2 = mysql_query($creaTable, $connexion);

//confirmation de la creation de l'utilisateur et de la table
if($query == TRUE) {
print ('L\'utilisateur a bien été ajouté');
}
else {
mysql_error();
} 

if($query2 == TRUE) {
print ('<br />La table a bien été créée');
}
else {
mysql_error();
} 


//creation des droits sur la table
$oui = 'oui';

if($suppr == $oui) {
	$fctSuppr = "GRANT DELETE ON `mabase`.`".$table."` TO '".$nom."'@'localhost'";
	mysql_query($fctSuppr, $connexion);
};
if($inser == $oui) {
	$fctInser = "GRANT INSERT ON `mabase`.`".$table."` TO '".$nom."'@'localhost'";
	mysql_query($fctInser, $connexion);
}
if($select == $oui) {
	$fctSelect = "GRANT SELECT ON `mabase`.`".$table."` TO '".$nom."'@'localhost'";
	mysql_query($fctSelect, $connexion);
}
if($updt == $oui) {
	$fctUpdt = "GRANT UPDATE ON `mabase`.`".$table."` TO '".$nom."'@'localhost'";
	mysql_query($fctUpdt, $connexion);
}

//partie suppression
$nomSup = $_POST[nomSup];
$tableSup = $_POST[tableSup];

$nomdelabase = 'mysql';

mysql_select_db($nomdelabase, $connexion);

$supUser = "DROP USER '".$nomSup."'@'localhost'";
$supTable = "DROP TABLE '".$tableSup."'";
mysql_query($supUser, $connexion);
mysql_query($supTable, $connexion);

?>


</body>
</html>


Vous pouvez bien sur copier le script pour le tester (il suffit de créer une base 'mabase' et une table 'utilisateur' pour essayer, et changer les infos de connexion qui se trouvent normalement dans mon fichier "connexion.htm" que j'ai ajouté avec un include.

J'espère de tout coeur que quelqu'un pourra m'aider, car là je désespère vraiment, apparement il n'y a pas d'erreur de syntaxe, mais plutot de logique, et mon niveau ne me permet pas de me corriger moi même.
Merci à tous ceux qui auront la gentillesse de m'aider.
A voir également:

6 réponses

yoann_tux Messages postés 437 Date d'inscription lundi 28 février 2005 Statut Membre Dernière intervention 24 juillet 2008 95
23 juil. 2008 à 00:35
en fait c'est parce que dans tous les cas il execute tout ton code php.

Essaye en mettant uen variable à 0, puis en l'initialisant à 1 par exemple une fois le formulaire validé, (genre une var post) et si cette variable est à 1 ALORS tu execute le php (un gros if) ;)

Je te déconseille de faires des grant si c'est justes des utilisateurs pour une application.
Le grant est pour faire des utlisateurs de la base de données, donc coté administration de la base de données.

Préfère la création d'une table users
1
Merci pour ton aide, en effet le message ne s'affiche plus que lors de la validation dorénavant, mais ca ne résout pas le problème lié à la table utilisateur, le champ password ne se rempli pas !!!
Je n'y comprend vraiment rien, si quelqu'un arrivait à déceler l'erreur ce serait un vrai grand soulagement pour moi.
0
Salut,

je pense que ça vient de ta requête :
$tabUtilisateur = "INSERT INTO `mabase`.`utilisateur` (`ID`, `login`, `password`) VALUES (NULL, '$nom', '$motdepasse')";

Remplace-la par :
$tabUtilisateur = "INSERT INTO `mabase`.`utilisateur` (`ID`, `login`, `password`) VALUES (NULL, '".$nom."', '".$motdepasse."')";

@+
Jérôme
0
Merci Jérôme mais cette solution m'avais déjà été proposée, mais elle n'avait pas fonctionner. Je l'ai réessayé par désespoir mais ça n'a rien donné comme je m'y attendais.
Je me demandais si ce ne serait pas le fait que j'utilise deux fois cette variable $motdepasse qui générerait un problème. Je voulais dire aussi que la première fois quand je l'utilise pour attribuer un mot de passe au nouvel utilisateur, celui-ci s'enregistre dans la base mais sans mot de passe.

Si quelqu'un aurait le temps d'essayer ce script ce serait sympa, car des fois j'ai l'impression que mon pc déconne, et qu'il fait les choses sans que je les voient. Par exemple il m'est arriver de faire des multi-post sur ce forum car quand je postais une réponse elle ne s'affichait pas, même en rafraichissant la page ou en l'ouvrant dans un autre onglet. Les messages que j'avais posté ont fini par s'afficher lorsque j'ai redémarrer l'ordi. Je voudrais pas que mon problème soit similaire : en fait le code marcherait, mais je verrais pas le "vrai" résultat tant que j'aurais pas rebooter la machine. Pour précisions je travaille avec dreamweaver pour tester mes scripts, et il m'est arriver de changer une image d'une page une fois, et que quoi que je fasse elle ne changeais pas, j'ai du redémarrer dreamweaver pour que la modif prenne effet. Bizarre tout ça non ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bon je crois que je vais laisser tomber le php/mysql en fait, ca sera moins compliqué, parce que là j'en ai marre de me prendre la tête pour .... rien !
Merci quand même de votre aide.
0
MDR je suis vraiment un gros noob.
En fait j'avais mis mes paramètres de connexion en include dans mon code, et bien sur y'avait déjà la variable $motdepasse qui permettait de ma connecter à mysql en tant qu'admin. Et ho magie, comme je n'ai pas de mot de passe .... elle était vide !!!! PTDR.
Du coup l'autre variable $motdepasse elle ne pouvait pas marché, puisque une première avait déjà été déclaré.
Je me disais aussi que ma requête INSERT ne pouvais pas bugger, sinon quelqu'un l'aurais déjà signalé.
Merci quand même de votre soutien.
@+
0