Partage
  • Partager sur Facebook
  • Partager sur Twitter

in_array

    28 novembre 2005 à 22:12:49

    J'ai vu sur un topic, qu'une des solutions pour savoir si quelque chose était dans sa BDD c'était de compter.

    ex :

    $pseudo = $_POST['pseudo'];
    $brut = mysql_query('SELECT COUNT(*) AS nbr FROM membre where pseudo='"'.$pseudo.'");
    $ret = mysql_fetch_array($brut);
    if ($ret['nbr'] == 0)
    {
    echo 'Vous etes bien enregistrer';
    }
    else
    {
    echo 'Votre pseudo est deja utilisé';
    }


    Enfin un truc dans le genre, mon code est surment foireux mais bon, vous avez compris.

    Peut on utiliser la fonction in_array ??

    Ex:

    $pseudo = $_POST['pseudo'];
    $brut = mysql_query(SELECT * FROM membres);
    $ret = mysql_fetch_array($brut);
    if (in_array($pseudo, $ret)
    {
    ...


    Mon but n'est pas de savoir si ça marche, j'aurai pu tester moi même...
    Mais surtout de savoir quelle est la meilleure solution.
    En termes de rapidité, en termes de codage.
    • Partager sur Facebook
    • Partager sur Twitter
      28 novembre 2005 à 22:16:30

      Personnellement j'utilise encore une autre fonction : mysql_num_rows :p


      $q = mysql_query("SELECT pseudo FROM membre WHERE pseudo='".$pseudo."'") or die (mysql_error());
      if (mysql_num_rows($q) == 1) {
        echo 'Enregistré';
      }
      else {
        echo 'Vous n\'êtes pas enregistré';
      }


      ++
      aimak

      Ps : http://php.net/mysql_num_rows
      • Partager sur Facebook
      • Partager sur Twitter
        28 novembre 2005 à 22:16:43

        Dans le premier tu demandes à mysql de ne te retourner qu'un nombre (0 ou 1), dans le deuxième tu lui demandes de t'envoyer le nom de tous les membres pour aboutir au même résultat.
        D'après toi lequel est le plus rapide? ;)
        • Partager sur Facebook
        • Partager sur Twitter
          28 novembre 2005 à 22:19:17

          D'ailleurs mysql_fetch_assoc est sûrement plus rapide que mysql_fetch_array vu qu'il envoie moitié moins de données, et que la moitié supprimée n'est pas utile à part si on désigne les résultats de la requête par leur clé.
          • Partager sur Facebook
          • Partager sur Twitter
            28 novembre 2005 à 22:21:15

            mysql_fetch_assoc/mysql_fetch_array ne renvoit pas des données mais les trie. Et niveau rapidité d'exécution, c'est kif kif (sauf si t'as requête est pas du tout optimisée et que tu récupère genre 5000 enregistrements)
            • Partager sur Facebook
            • Partager sur Twitter
              28 novembre 2005 à 22:27:19

              Oui mais dans le cas 1, il SQL doit chercher danbs la BDD jusqu'à ce qu'il trouve le pseudo !
              Dans le cas 2, bah c'est pareil, donc je me suis dit que c'était peut etre kif kif, après si la méthode 1 est plus rapi,de bah je l'appliquerai...
              • Partager sur Facebook
              • Partager sur Twitter
                28 novembre 2005 à 22:31:31

                Oui enfin chercher une donnée pour mysql (même si c'est une chaine de caractères), ça lui demande pas trop d'efforts ^^
                Faut pas croire que le contenu de ta table est "rangé" n'importe comment
                Personnellement je me suis jamais amusé à tester sur 1000 itérations pour comparer la vitesse de retour mais de ce que j'ai pu voir en "pratiquant" et en lisant, c'est plus rapide :)
                • Partager sur Facebook
                • Partager sur Twitter
                  29 novembre 2005 à 8:37:50

                  Citation : Ext1cti0n-007

                  J'ai vu sur un topic, qu'une des solutions pour savoir si quelque chose était dans sa BDD c'était de compter.

                  ex :


                  $pseudo = $_POST['pseudo'];
                  $brut = mysql_query('SELECT COUNT(*) AS nbr FROM membre where pseudo='"'.$pseudo.'");
                  $ret = mysql_fetch_array($brut);
                  if ($ret['nbr'] == 0)
                  {
                  echo 'Vous etes bien enregistrer';
                  }
                  else
                  {
                  echo 'Votre pseudo est deja utilisé';
                  }




                  Bien plus rapide et efficace comme ça :

                  $pseudo = $_POST['pseudo'];
                  $brut = mysql_query('SELECT COUNT(*) FROM membre where pseudo='"'.$pseudo.'");
                  $ret = mysql_result($brut,0);
                  if ($ret == 0)
                  {
                  echo 'Pseudo ok';
                  }
                  else
                  {
                  echo 'Pseudo déja utilisé';
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter

                  in_array

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown