Auteur Sujet: Lister Une Base  (Lu 7846 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #15 le: 06 avril 2005 à 19:29:51 »
La requete est alors, dans le cas du code de smilynet:
$sql="SELECT pseudo, equipe, url, valide FROM utilisateurs";

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #16 le: 06 avril 2005 à 21:02:59 »
Vous êtes des perles les gars, merci d'avoir la patience d'aider un p'tit noob débutant du PHP...

Ca marche impec vos codes !

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #17 le: 06 avril 2005 à 22:03:23 »
Plus rapide , à partir du code de départ :
$sql="SELECT pseudo, equipe, url FROM utilisateurs WHERE valide=1";Un gain de vitesse assez important si tu as bcp d'utilisateurs :)
« Modifié: 06 avril 2005 à 22:04:42 par Ice »

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #18 le: 06 avril 2005 à 22:05:29 »
En fait ca n'irait pas car en bah de ma page j'affiche tous les joueurs dont le compte n'est pas validé.

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #19 le: 09 avril 2005 à 10:22:50 »
Je suis à nouveau confronté à un problème.

C'est au sujet de la partie du code qui traitre l'enregistrement d'un membre.

Le code du formulaire est le suivant :
<FORM METHOD="POST" ACTION="?page=etape03">
<input class="form" name="login" type="text" size="30"> Pseudo<br>
<input class="form" name="mdp" type="text" size="30"> Mot de passe<br>
<input class="form" name="mel" type="text" size="30"> Adresse Mél<br>
<input class="form" name="msn" type="text" size="30"> Adresse MSN Messenger<br>
select class="form" name="faction">
      <option>Ancienne R&eacute;publique</option>
      <option>Consortium Imp&eacute;rial</option>
      <option>Empire Galactique</option>
      <option>Nouvelle R&eacute;publique</option>
    </select> Faction<br>
<select class="form" name="equipe">
      <option>Neutre</option>
      <option>En attente</option>
      <option>Cr&eacute;er une &eacute;quipe</option>
        </select> Rejoindre une &eacute;quipe<p>
<INPUT class="form" TYPE="submit" VALUE="&lt;--Valider--&gt;">
</FORM>


Jusque là tout va bien.


Le code de la page "?page=etape03" :
<?php
// on se connecte à MySQL
$db = mysql_connect('xxx', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxx',$db);

// on crée la requête SQL
$sql = 'SELECT pseudo FROM utilisateurs';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// Récupération des champs formulaires
$login=$_POST["login"];
$mdp=$_POST["mdp"];
$mel=$_POST["mel"];
$msn=$_POST["msn"];
$faction=$_POST["faction"];
$equipe=$_POST["equipe"];

// Vérification validité du mél
$mel = $_POST['mel'];
$point = strpos($mel,".");
$aroba = strpos($mel,"@");

if($point=='') { echo "Votre email doit comporter un <b>point</b>"; }
elseif($aroba=='') { echo "Votre email doit comporter un <b>'@'</b>"; }

// Envoi des informations vers la BDD si tout est bon
else{
$table="utilisateurs";
$sql="INSERT INTO $table(id, pseudo, mdp, mel, msn, faction, equipe)
       VALUES('', '$login', '$mdp', '$mel', '$msn', '$faction', '$equipe')";
if(!mysql_query($sql,$db)){
print "erreur $sql <br>";
}

// Affichage d'information
echo "<p>
<i><b>Important :</b></i><br>
Le message suivant n'est valide que si il n'y a aucun message d'erreur ci-dessus.<p>
Votre inscription a bien &eacute;t&eacute; r&eacute;alis&eacute;e. Vous devriez normallement voir votre pseudo dans la liste des membres &quot;A valider&quot; dans la page &quot;Membres&quot;.<br>
Si ce n'est pas le cas, contacter le Ma&icirc;tre du Jeu, NE SURTOUT PAS refaire votre inscription.<p>
Il vous sera envoyé dans les heures à venir une confirmation par mél de votre inscription par le Président du Sénat avec toutes les informations nécessaires à la gestion de votre compte.
";
}
mysql_close($db);
?>


Jusque là ca fonctionne encore à merveille, mais dans ce code je voudrais vérifier si le pseudo que veut le joueur n'existe pas déjà dans la base de données.

J'avais pensé au code :
// Récupération des pseudos
while($data = mysql_fetch_assoc($req))
{
if($val["pseudo"]=="$login") { echo "Le pseudo que vous est demandé est déjà pris, veuillez en choisir un autre"; }
}

Mais ca merde à un niveau, surement avec le if où à moins que je ne le code soit pas du tout adapté à la situation.

J'ai mis dans le code en haut, déjà les informations pour récupérer les pseudos de la BDD :
// on crée la requête SQL
$sql = 'SELECT pseudo FROM utilisateurs';


Si je commence ) vous enkikinet, n'hésitez pas à me le dire  :unsure:
« Modifié: 09 avril 2005 à 10:23:18 par jppj »

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #20 le: 09 avril 2005 à 10:39:39 »
<?php
// on se connecte à MySQL
$db = mysql_connect('xxx', 'xxx', 'xxx');

// on sélectionne la base
mysql_select_db('xxx',$db);

// on crée la requête SQL
$sql = 'SELECT pseudo FROM utilisateurs';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// Récupération des champs formulaires
$login=$_POST["login"];
$mdp=$_POST["mdp"];
$mel=$_POST["mel"];
$msn=$_POST["msn"];
$faction=$_POST["faction"];
$equipe=$_POST["equipe"];

// Vérification validité du mél
$mel = $_POST['mel'];
$point = strpos($mel,".");
$aroba = strpos($mel,"@");

$test_pseudo = "SELECT id from utilisateurs WHERE pseudo='$login'";
$result_pseudo = mysql_query($test_pseudo);
$nb_pseudo = mysql_num_rows($result_pseudo);

if($point=='') { echo "Votre email doit comporter un <b>point</b>"; }
elseif($aroba=='') { echo "Votre email doit comporter un <b>'@'</b>"; }
elseif ($nb_pseudo>0) { echo "Le pseudo que vous est demandé est déjà pris, veuillez en choisir un autre"; }

// Envoi des informations vers la BDD si tout est bon
else{
$table="utilisateurs";
$sql="INSERT INTO $table(id, pseudo, mdp, mel, msn, faction, equipe)
      VALUES('', '$login', '$mdp', '$mel', '$msn', '$faction', '$equipe')";
if(!mysql_query($sql,$db)){
print "erreur $sql <br>";
}

// Affichage d'information
echo "<p>
<i><b>Important :</b></i><br>
Le message suivant n'est valide que si il n'y a aucun message d'erreur ci-dessus.<p>
Votre inscription a bien &eacute;t&eacute; r&eacute;alis&eacute;e. Vous devriez normallement voir votre pseudo dans la liste des membres &quot;A valider&quot; dans la page &quot;Membres&quot;.<br>
Si ce n'est pas le cas, contacter le Ma&icirc;tre du Jeu, NE SURTOUT PAS refaire votre inscription.<p>
Il vous sera envoyé dans les heures à venir une confirmation par mél de votre inscription par le Président du Sénat avec toutes les informations nécessaires à la gestion de votre compte.
";
}
mysql_close($db);
?>

« Modifié: 09 avril 2005 à 10:40:16 par Ice »

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #21 le: 09 avril 2005 à 10:47:34 »
Merci de ta patience, ca fonctionne à merveille.

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #22 le: 09 avril 2005 à 10:53:03 »
Pour revenir à ton formulaire , pour la ligne :
<input class="form" name="mdp" type="text" size="30"> Mot de passe<br>Il serait ptet mieux que le mot de passe soit caché :)
<input class="form" name="mdp" type="password" size="30"> Mot de passe<br>

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #23 le: 09 avril 2005 à 11:52:51 »
Yep, je comptais le faire lorsque je finaliserai le site mais en même temps Je pense que mettrai aussi tapper deux fois le mot de passe pour être certain que les membres ne fassent pas d'erreur.

Côté sécurité ca suffira ?

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #24 le: 09 avril 2005 à 12:18:44 »
Pour les mots de passe oui...
Apres , faut voir niveau sécurité quand tu fais : ?page=etape03

et si tu fais : include $page.".php";
Et si tu fais ca , je crois que c pas tres sécurisé
« Modifié: 09 avril 2005 à 12:19:07 par Ice »

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #25 le: 25 avril 2005 à 13:48:53 »
J'ai le droit à la traduction pour débutant de ce que tu viens de dire ?  :huh:

J'utilise des pseudos frame avec les "case", comme indique sur le site de phpdubutant.

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #26 le: 25 avril 2005 à 20:51:55 »
ok, avec des Case , c'est mieux :)

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #27 le: 25 avril 2005 à 23:17:03 »
On m'avait rabaché d'utiliser des Cases, vu que le site que je fais est petit je peux sans problème utiliser les pseudos frames type Case.

Je vous monterai le résultat quand ca sera fini, mais pour le moment ca s'annonce plutot pas mal !


Bon, j'ai voulu régler cette histoire de mot de passe, donc mon formulaire j'ai mis :
 <tr>
    <td><input class="form" name="mdp" type="password" size="30"></td>
    <td>Mot de passe</td>
  </tr>
  <tr>
    <td><input class="form" name="mdp2"  type="password" size="30"></td>
    <td>Mot de passe (v&eacute;rification) </td>
  </tr>

J'ai bien mis dans la récupération des données du formulaire :
$mdp=$_POST["mdp"];
$mdp2=$_POST["mdp2"];

Ensuite dans la partie qui vérifie toutes les erreurs possibles j'ai ajouté le code :
elseif ($mdp <> $mdp2) { echo "Vous avez entré deux mots de passe différents, veuillez recommencer votre inscription."; }
Quand je valide le formulaire j'ai le droit à l'erreur :
Citer
Erreur SQL !

Query was empty

10 contre 1 que je me suis glandé quelque part  :(  
« Modifié: 26 avril 2005 à 00:13:44 par jppj »

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Lister Une Base
« Réponse #28 le: 26 avril 2005 à 08:20:59 »
Ton code semble correct.
Mais tu as une erreur sql, et dans ce que tu nous montres, il n'y a pas de sql.

D'apres ton erreur, tu dois surement faire un mysql_query de qq chose qui n'existe pas.

Hors ligne jppj

  • Habitué
  • **
  • Messages: 168
    • Holonet-System
Lister Une Base
« Réponse #29 le: 26 avril 2005 à 09:24:14 »
J'avoue que je ne comprend pas trop, je viens de faire un copier collé du code que tu m'avais donné avant, j'ai rerajouté les infos pour la vérification du mot de passe est ca marche impec...

Surement un petit truc qui s'était modifié.

Désolé du dérangement...