Mangeur de cigogne Hébergement du site en PHP et Mysql par WDMédia-hébergement
Vous aussi adpotez les éléPHPants de Vincent Pontier !


Rechercher dans le forum

Mots-clés :

Trouver :
un de ces termes tous les termes

Depuis :
7 j 15 j 30 j


Retour à l'index du forum

test d'un login déjà présent

Message original de flattazor

Le : 09/10/2008 à 10:35:27

Dejà lu 2378 fois avant vous

Bonjour à tous,

Je voudrais tester si le login entrer lors de la création d'un compte est déjà existant, donc je lis le champ et je le compare avec mon entrée, mais qd je rentre un login identique j'ai mon méssage d'erreur sql "Erreur SQL !INSERT INTO users(User,passwrd) VALUES('tutu','tutu')
Duplicata du champ 'tutu' pour la clef ", ce que je veux eviter.

voici le code ci-dessous


<?php 
// On commence par récupérer les champs 
if(isset($_POST['login']))      $login=$_POST['login'];
else      
$login="";

if(isset(
$_POST['password']))      $passwd=$_POST['password'];
else      
$passwd="";

if(isset(
$_POST['testpass']))      $testpsw=$_POST['testpass'];
else      
$testpsw="";


// On vérifie si les champs sont vides 
if(empty($login) OR empty($passwd) OR empty($testpsw)) 
    {
         
header('location: index_news.php?page=alert_champ'); 
    } 

// on teste si les champs des mots de passe sont identiques

elseif ($passwd != $testpsw)
    {
         
header('location: index_news.php?page=alert_password');    
    }

else      
    { 
      
// connexion à la base
    
$base mysql_connect('localhost''root'' ')  or die('Erreur de connexion '.mysql_error());
    
mysql_select_db('news'$base) or die('Erreur de selection '.mysql_error());
    
      
//Test si login est déjà présent
    
$req 'SELECT User FROM users';
    
$result mysql_query($req);
      
      while(
$data mysql_fetch_array($result))
        {
        if(
$data['User'] == $login)
            { 
                
header('location: index_news.php?page=existant');
            }
        else
            {
                
// on écrit la requête sql
                
$sql "INSERT INTO users(User,passwrd) VALUES('$login','$passwd')"
     
                
// on insère les informations du formulaire dans la table 
                
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

                
// on affiche le résultat pour le visiteur 
                
header('location: index_news.php?page=ajout_admin');

                
mysql_close();  // on ferme la connexion 
            
}
        }
    }            
  
?>




le problème se situe sur la boucle while, du moins je le pense quelqu'un aurait une idée ou ma bétise que j'aurais faite ?

merci à vous

Re: test d'un login déjà présent

Réponse de Maljuna Kris

Le : 09/10/2008 à 12:03:30

Saluton,
Pourquoi ne testes tu pas la présence de $login et $passwd dans la table via la clause WHERE de ta requête SQL ?
"SELECT User FROM users WHERE $login=User AND $passwd=passwrd"
(attention aux injections SQL)
Si tu as un résultat c'est que l'utilisateur existe déjà avec ce login et donc à toi de voir comment tu traites le cas, sinon, tu peux faire ton INSERT

Re: test d'un login déjà présent

Réponse de flattazor

Le : 09/10/2008 à 18:35:27

bonjour à toi,

je vais étudier ce que tu m'as proposé, mais dans mon code pourquoi le test ne s'effectue pas ?

j'ai testé avec le même login et pourtant il cherche à entrer mon user dans la table alors qu'il est existant d'ou le message d'erreur.

[modéré]Re: test d'un login déjà présent

Réponse de flattazor

Le : 09/10/2008 à 20:14:30

j'ai trouvé ma bétise sur mon code !!


else       
    {  
      // connexion à la base 
    $base = mysql_connect('localhost', 'root', ' ')  or die('Erreur de connexion '.mysql_error()); 
    mysql_select_db('news', $base) or die('Erreur de selection '.mysql_error()); 
     
      //Test si login est déjà présent 
    $req = 'SELECT User FROM users'; 
    $result = mysql_query($req); 
       
      while($data = mysql_fetch_array($result)) 
        { 
        if($data['User'] == $login) 
            {  
                header('location: index_news.php?page=existant'); 
            } 
        else 
            { 
                // on écrit la requête sql 
                $sql = "INSERT INTO users(User,passwrd) VALUES('$login','$passwd')";  
      
                // on insère les informations du formulaire dans la table  
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  

                // on affiche le résultat pour le visiteur  
                header('location: index_news.php?page=ajout_admin'); 

                mysql_close();  // on ferme la connexion  
            } 
        } 
    } 



devient ceci

[code]
else
{
// connexion à la base
ne jamais mettre ses codes de connexion en clair sur un forum
et pour le code, merci de respecter la charte en utilisant le wall
$base = mysql_connect('localhost', '****', '****') or die('Erreur de connexion '.mysql_error());
mysql_select_db('news', $base) or die('Erreur de selection '.mysql_error());

//Test si login est déjà présent
$req = 'SELECT * FROM users';
$result = mysql_query($req);

while($data = mysql_fetch_assoc($result))
{
if($data['User'] == $login)
{
header('location: index_news.php?page=existant');
}
}
// on écrit la requête sql
$sql = "INSERT INTO users(User,passwrd) VALUES('$login','$passwd')";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on affiche le résultat pour le visiteur
header('location: index_news.php?page=ajout_admin');
mysql_close(); // on ferme la connexion
}
[/Code]

Re: test d'un login déjà présent

Réponse de Maljuna Kris

Le : 09/10/2008 à 20:19:19

Je continue de trouver assez ballot de parcourir toute une table pour y vérifier l'absence d'une info.
L'absence c'est NOT présent, donc si je cherche un enregistrement avec un filtre WHERE et que je ne le trouve pas c'est qu'il est absent.

Re: test d'un login déjà présent

Réponse de flattazor

Le : 09/10/2008 à 21:07:02

re,

oui mais je ne vois pas comment traité l'info avec ton code.

Je débute avec php donc au plus simple pour moi

puis il suffit de remplacer " * " par le champ ou rechercher dans mon cas c'est "User"

merci à toi.


Re: test d'un login déjà présent

Réponse de luce

Le : 09/10/2008 à 22:47:55

Salut,

Il y a plein de manière de faire, en voici une :

<?php
$login 
mysql_real_escape_string($login);
$sql "SELECT User FROM users WHERE User = '$login'";
$que mysql_query($sql);
$num mysql_num_rows($que);
if (
$num == '1') {
//user déjà utiliser
} else {
// ton insert
}

Re: test d'un login déjà présent

Réponse de flattazor

Le : 10/10/2008 à 18:00:38

salut,

ton code fonctionne impec (Merci à toi luce), mais avec cette méthode la recherche s'effectue bien dans le champ User comme avec la boucle while. si on a $req = 'SELECT User FROM users'

quelle est la différence entre les deux ?

Re: test d'un login déjà présent

Réponse de luce

Le : 10/10/2008 à 18:13:23

Salut,

Comme MK t'a dit, ce que tu fais, c'est un truc de bourrin.

Tu demandes à mysql de sortir toute la liste des User, puis ensuite tu cherches la présente du pseudo.

En clair, si tu as 5 000 membres, tu vas stocker à chaque fois les 5 000 noms dans la mémoire du serveur.
Est-ce que tu trouves ca intelligent ?

En ajoutant un where, bah tu auras que les réponses correspondante à ton where, donc soit 1 nom soit aucun nom.

Re: test d'un login déjà présent

Réponse de flattazor

Le : 10/10/2008 à 19:54:33

re,

merci pour tes explication, maintenant c'est plus logique... donc je vais adopter votre solution ce qui allégera le serveur.

au plaisir de vous revoir ce qui ne va pas tarder LOL...

++

Re: test d'un login déjà présent

Réponse de vzGmJPXcCmRPBBcJey

Le : 18/06/2009 à 05:28:06

gcvuX0 <a href="http://xyukpkzajaep.com/">xyukpkzajaep</a>, [url=http://msofqnfuuflv.com/]msofqnfuuflv[/url], [link=http://smqydxqedkcz.com/]smqydxqedkcz[/link], http://jjcodmuievqz.com/

Re: test d'un login déjà présent

Réponse de vzGmJPXcCmRPBBcJey

Le : 18/06/2009 à 05:28:09

gcvuX0 <a href="http://xyukpkzajaep.com/">xyukpkzajaep</a>, [url=http://msofqnfuuflv.com/]msofqnfuuflv[/url], [link=http://smqydxqedkcz.com/]smqydxqedkcz[/link], http://jjcodmuievqz.com/

Re: test d'un login déjà présent

Réponse de ROVjKgSnVtp

Le : 11/07/2009 à 09:02:34

f8UGjX <a href="http://kapafgmlnofi.com/">kapafgmlnofi</a>, [url=http://lmaecvunejdr.com/]lmaecvunejdr[/url], [link=http://loinrxlgcijj.com/]loinrxlgcijj[/link], http://bslimflapftu.com/

ltaPBIMmyt

Réponse de ewjawzfcvwn

Le : 20/09/2009 à 13:15:38

IH0Jks <a href="http://whjdnbxpuxmt.com/">whjdnbxpuxmt</a>, [url=http://fqgmruuahjkf.com/]fqgmruuahjkf[/url], [link=http://jjsahkxopyiw.com/]jjsahkxopyiw[/link], http://auyejgxhokcg.com/

Re: test d'un login déjà présent

Réponse de eynyylHCuEIu

Le : 22/10/2009 à 20:24:31

<a href="http://www.eliseogallery.com/Life-Insurance.html">life quotes</a> [url="http://www.eliseogallery.com/Life-Insurance.html"]life quotes[/url] http://www.eliseogallery.com/Life-Insurance.html 638112

Re: test d'un login déjà présent

Réponse de aTJNFvGCpvvkHDYLLC

Le : 22/10/2009 à 23:22:02

<a href="http://www.eliseogallery.com/Home-Insurance.html">homeowners insurance</a> [url="http://www.eliseogallery.com/Home-Insurance.html"]cheap home insurance[/url] http://www.eliseogallery.com/Home-Insurance.html :-[

Re: test d'un login déjà présent

Réponse de OubUAIWWtsfOl

Le : 23/10/2009 à 09:33:33

<a href="http://www.eliseogallery.com/Home-Insurance.html">homeowners insurance</a> [url="http://www.eliseogallery.com/Home-Insurance.html"]cheap home insurance[/url] http://www.eliseogallery.com/Home-Insurance.html 36440

Re: test d'un login déjà présent

Réponse de AfTTOAEgxakyXciV

Le : 23/10/2009 à 12:27:03

<a href="http://www.eliseogallery.com/Life-Insurance.html">life quotes</a> [url="http://www.eliseogallery.com/Life-Insurance.html"]cheap life insurance[/url] http://www.eliseogallery.com/Life-Insurance.html 539

Re: test d'un login déjà présent

Réponse de TNUgEcbbMb

Le : 26/10/2009 à 17:38:22

http://www.arkhamgames.com/viagra.html [url="http://www.arkhamgames.com/viagra.html"]viagra[/url] <a href="http://www.arkhamgames.com/viagra.html">viagra</a> =]]

Re: test d'un login déjà présent

Réponse de FtzmyontRErNiwcyxtE

Le : 05/11/2009 à 08:51:37

<a href="http://www.captainsquartersusvi.com/accutane.htm">buy accutane</a> [url="http://www.captainsquartersusvi.com/accutane.htm"]buy accutane[/url] http://www.captainsquartersusvi.com/accutane.htm jkg <a href="http://www.chrisgiddensrmt.com/xanax.html">xanax</a> [url="http://www.chrisgiddensrmt.com/xanax.html"]xanax[/url] http://www.chrisgiddensrmt.com/xanax.html 06403

Re: test d'un login déjà présent

Réponse de yuvrapzBG

Le : 05/11/2009 à 08:54:21

<a href="http://www.chrisgiddensrmt.com/ambien.html">ambien</a> [url="http://www.chrisgiddensrmt.com/ambien.html"]ambien[/url] http://www.chrisgiddensrmt.com/ambien.html ijg <a href="http://www.captainsquartersusvi.com/propecia.htm">propecia</a> [url="http://www.captainsquartersusvi.com/propecia.htm"]propecia[/url] http://www.captainsquartersusvi.com/propecia.htm =-[[[

Re: test d'un login déjà présent

Réponse de ZUZnXfWsAzB

Le : 05/11/2009 à 10:20:09

<a href="http://www.chrisgiddensrmt.com/ambien.html">ambien</a> [url="http://www.chrisgiddensrmt.com/ambien.html"]ambien[/url] http://www.chrisgiddensrmt.com/ambien.html %-PP <a href="http://www.captainsquartersusvi.com/accutane.htm">accutane</a> [url="http://www.captainsquartersusvi.com/accutane.htm"]accutane[/url] http://www.captainsquartersusvi.com/accutane.htm rjyat

Re: test d'un login déjà présent

Réponse de eMjCmHmeggXIDyy

Le : 05/11/2009 à 15:09:01

<a href="http://www.chrisgiddensrmt.com/levitra.html">levitra</a> [url="http://www.chrisgiddensrmt.com/levitra.html"]levitra[/url] http://www.chrisgiddensrmt.com/levitra.html qzw <a href="http://www.chrisgiddensrmt.com/xanax.html">buy xanax</a> [url="http://www.chrisgiddensrmt.com/xanax.html"]buy xanax[/url] http://www.chrisgiddensrmt.com/xanax.html 02623

zNfGXkTBmhxhkIIKciO

Réponse de ewdwbtlftsa

Le : 02/03/2010 à 18:57:28

Yy3YTc <a href="http://bgzkcjgzmiqf.com/">bgzkcjgzmiqf</a>, [url=http://qrpsfkpbebyo.com/]qrpsfkpbebyo[/url], [link=http://ghtnbfqbuusg.com/]ghtnbfqbuusg[/link], http://udlcblalcdal.com/

Re: test d'un login déjà présent

Réponse de AUHYDLdydCbZDVq

Le : 13/03/2010 à 05:57:31

5G1Zm4 <a href="http://umvarlwklhhy.com/">umvarlwklhhy</a>, [url=http://zhtzmzsofbwt.com/]zhtzmzsofbwt[/url], [link=http://wlwbnnptvjcy.com/]wlwbnnptvjcy[/link], http://mmpwcvvihzgi.com/
Retour à l'index du forum


Ajouter une réponse

Nom :

Email :

Titre :

Message :

Combien font 3 + 4 ?

Mise en forme : gras = [b]...[/b], italic = [i]...[/i], souligné = [u]...[/u], citation = [quote]...[/quote], lien = [url]liens_externe[/url] ou [url nom=texte]liens_externe[/url], code source : [code]...[/code]

Recevoir les réponses par mail :
Oui Non

Mémoriser mon nom et mon email :
Oui Non

 

Charte des forums PHPDébutant

Bienvenue à vous,

Vous voici donc prêt à poster sur les forums de PHPDébutant. Avant toute chose, merci de prendre le temps de lire les quelques lignes qui suivent.

Attention, à partir du moment ou vous postez dans les forums, vous acceptez la présente charte. Si votre message est modéré ou supprimé, vous ne pourrez pas dire que vous n'étiez pas au courant des règles !

Pourquoi une charte

Le but de cette charte est simple : que ces forums restent cordiaux et que les personnes aidant les autres ne se sentent pas lésées, insultées, critiquées. Pour que ces forums fonctionnent, il faut des personnes qui répondent aux questions. Pour que celles ci restent sur le forum, il faut les traiter avec respect, et ne pas les confondre avec des bonnes poires, esclaves, etc...

Mesures de régulation

  • Un nouveau message ne disant pas bonjour, ou insultant, dont le titre est tout en majuscules, pourra être supprimé sans justification (raisons non limitatives).
  • Prenez le temps de vérifier que la question que vous allez poser n'a pas déjà été posée, à l'aide du formulaire de recherche.
  • Prenez également le temps de vérifier que la réponse à votre question ne se trouve pas dans les tutoriaux. Nous ne pouvons pas répeter pour chaque visiteur tous les cours, il sont écrits, profitez-en (dans l'ordre tant qu'à faire) !
  • Nous ne faisons pas de scripts tout prêts. Nous aidons et vous guidons pour que vous puissiez trouver vous même la réponse, ce qui est beaucoup plus formateur.
  • Si vous comptez poster un message publicitaire, abstenez-vous. Au mieux le message sera supprimé, au pire les habitués descendront votre service en flamme.
  • Pour tout message de recrutement, précisez bien votre demande. Inutile de poster pour trouver un développeur pour faire gratuitement votre site de webmastering qui vous rapportera plein de sous. Les seuls coups de mains donnés en développement sont pour des associations ou des sujets passionnant un développeur.
  • Toute personne tenant des propos racistes ou illicites sera bannie et pourra faire l'objet de poursuites.
  • L'humour étant très présent sur ces forums, ne réagissez pas violemment à des propos qui pourraient être à prendre au second degré et avec de l'humour.
  • Attention aux trolls ! Leur multiplication peut entraîner la mort des forums, et sans forum, plus d'aide !
  • Respectez les thèmes des forums. Pensez aussi à vérifier que votre message n'a pas été déplacé si vous le croyez effacé.

Conseils

  • N'oubliez pas que les personnes à qui vous vous adressez sont des bénévoles qui donnent de leur temps pour vous. Si vous êtes méchants avec eux, il n'aideront plus et vous n'aurez plus d'aide !
  • Ne soyez pas pressé. Nous avons une vie aussi, et nous ne sommes par forcément tout le temps disponibles.
  • N'oubliez pas que les smileys sont la pour faire comprendre l'humeur dans laquelle vous rédigez un message. Il est indispensable de mettre des smileys quand vous faites de l'humour, sinon le message pourrait être mal perçu (ca serait quand même idiot de plomber l'ambiance en faisant de l'humour !).
  • Surveillez votre orthographe, nous ne vous demandons pas d'être littéraire, mais que votre message soit au moins compréhensible. Evitez à tout prix le style SMS.
  • Expliquez clairement le problème, ce n'est pas toujours facile, mais mieux vaut essayer de le faire le plus possible.
  • Ne postez pas de questions trop vagues du genre "comment faire un forum". Cela ne sert à rien, cela ne s'explique pas sur un coin de forum.
  • Mettez un titre clair, correspondant au sujet que vous allez poster. A l'aide, au secours, etc... ne sont pas d'une grande utilité pour ceux qui vont vous aider. Parfois nous passons en coup de vent, et si nous ne savons pas ce que va contenir le message, nous ne le regarderons même pas.
  • Ne mettez par [URGENT] ou autre joyeuseté du genre dans vos titres de messages. Cela irrite les gens (il y'a plus urgent dans la vie, pensez aux gens qui meurent de faim ou ayant besoin des pompiers, ça c'est urgent), et vous n'aurez pas votre réponse plus vite pour autant.
  • Si vous connaissez déjà à quel domaine votre question d'adresse (par exemple mysql, html, php, javascript), n'hésitez pas à le marquer au début de votre message, avec un [html] par exemple (notez les minuscules).
  • Ne dites pas "ça marche pas". Il y a toujours des raisons. Je vous invite à consulter le tutorial "ça marche pas" qui vous aidera à mieux expliquer votre problème.
  • Ne postez pas 36000 lignes de code. Sur le forum, le code apparaît non coloré et sans indentation, ce qui est illisible. Au dessus de 5 lignes, plus personne ne lit et vous n'aurez pas de réponse. Utilisez le wall
  • En règle générale restez courtois et clair, n'oubliez pas que la politesse fait partie de la vie courante. Il est de bon ton de dire bonjour même pour une réponse, même plusieurs fois dans la journée (ceux qui vous lisent n'ont pas forcément lu vos autres messsages)

La Fin

Avec tout ces conseils vous augmenterez les chances de réponse, leur pertinence et leur rapidité

Voilà, ça sera tout, bonne écriture :)

Fermer les règles et poster un message


www.phpdebutant.org © 2010 - L'équipe de phpDebutant - Hébergement : WDMédia-hébergement