[PHP/MYSQL] Array en PHP depuis la BD

Résolu
Bonjour,

Je suis débute en PHP & je me demandais comment avoir un résultat d'une requête mysql,
(sous forme de variable en php)

..Je m'explique (c'est peut être vraiment très simple mais je n'y parviens pas) :

Je suis entrain de mettre en place une page en php pour la vérification des erreurs, ni connaissant pas grand chose j'ai utilisé divers tutoriaux & ressources trouvés sur internet dont des forums de commentcamarche.net.

Si quelqu'un pouvais m'aider à traduire et à résoudre le problème ça m'aiderais beaucoup!

Le script où je bloque :

$username = $_POST["username"];
function verifDispoUsername($username) {

// tableau de données qui simule une table contenant des noms d'utilisateurs
// dans un cas réel il y aurait vérification dans la base de données via une requete MySQL

$pseudo_existant = array("aguillem", "zen", "audrey", "test", "stephane");

// verifie si le pseudo existe dans le tableau
if (!in_array(strtolower($username), $pseudo_existant)) {
$dispo = true;
}
else {
$dispo = false;
}
return $dispo;
}

Merci d'avance

9 réponses

  1. // dans un cas réel il y aurait vérification dans la base de données via une requete MySQL

    donc ce que tu veux c'est vérifier si un pseudo $usernane existe déjà dans ta table ?

    <?php
    $dispo = false;
    $usernane=mysql_escape_string(trim($_POST['usernane'])); //la je part du principe que tu récupères le pseudo d'un formulaire d'inscription
    //on eleve les espaces debut et fin et on protege par rapport a mysql
    
    // Connexion à la base et choix de la base de données (à ne faire qu'une fois par page mais sur chaque page où tu utilises la base de données)
    mysql_connexion('localhost', 'root', ''); //a adapter
    mysql_select_db('ta_base');//a adapter
    
    // Initialisation de la requête (permet de l'afficher et de la lancer dans phpmyadmin en cas de problème)
    $requete = "SELECT pseudo FROM users WHERE pseudo='".$usernane."'";
    // Execution de la requete
    $result=mysql_query($requete) or die ("Pb requette ".mysql_error());
    // On  regarde combien trouvé
    if(mysql_num_rows($result)>0){
    	$dispo = false; //existe dèja
    }else{
    	$dispo = true;
    }
    
    // On ferme la connexion
    mysql_close();
    1. merci d'avoir répondu aussi vite ! malheureusement j'ai déjà parcouru ce site & beaucoup d'autre, je ne parviens pas à comprendre comment parvenir à avoir cette requête sql..

      Le script actuel que j'ai montré fonctionne (d'ailleurs il n'y a que comme ça qu'il fonctionne, j'ai essayé les fetch_array, fetch_assoc, while, mais rien n'y fait --> !in_array(strtolower($username), $pseudo_existant) ne reconnais pas quand je change le code actuel
      1. Contributeur
        $pseudo_existant = array("aguillem", "zen", "audrey", "test", "stephane");
        $dispo = false;

        // Connexion à la base et choix de la base de données (à ne faire qu'une fois par page mais sur chaque page où tu utilises la base de données)
        mysql_connexion('localhost', 'root', '');
        mysql_select_db('ta_base');

        // Initialisation de la requête (permet de l'afficher et de la lancer dans phpmyadmin en cas de problème)
        $requete = "SELECT pseudo FROM users";
        // Execution de la requete
        $result=mysql_query($requete);
        // On parcourt le résultat
        while ( $data = mysql_fetch_array($result)) {
        $username = $datat['pseudo'];
        // verifie si le pseudo existe dans le tableau
        if (!in_array(strtolower($username), $pseudo_existant)) {
        $dispo = true;
        }
        }
        // On ferme la connexion
        mysql_close();
        return $dispo;
        }

        Voilà ta petite fonction (mais faite à la volée donc non testée, hésite pas à revenir s'il y a un problème)

        1. Merci Passarinho44 pour cette réponse plus complète, j'avais déjà essayé cette fonction..

          --> Mais sans mette "dispo = false;" en dehors de la fonction alors j'ai essayé avec ta manière mais cela ne fonctionne pas non plus..

          --> peut être que cela peut aider à comprendre la suite, cette fonction cherche si le pseudo existe dans la base de donnée, et renvoi dispo = true; s'il n'est pas déjà utilisé, alors la fonction
          "function verifDispoUsername($username)" renvoi la réponse par xhttprequest pour signaler à la personne qui s'inscrit que le pseudo peut être utilisé ou pas.

          La fonction originale fonctionne mais elle ne contient pas tout les pseudo de ma base de donnée..
          (uniquement : "aguillem", "zen", "audrey", "test", "stephane")

          Si vous connaissez une autre façon de procéder pour signaler à la personne qui s'inscrit que le pseudo peut être utilisé ou pas (ajax) en fonction des pseudo déjà existant sur la base de donnée cela irais très bien !

          Encore merci d'essayer de m'aider à résoudre ce problème
          1. Il me semble que pour que la requête ajax fonctionne il faut que les résultats soient déjà générés (par exemple dans un fichier xml ou sur la page en php elle-même, c'est la raison pour laquelle la fonction de base fonctionne et celle qui va demander à la base de donnée non)

            fichier function.js :

            function init() {
            // on recupere chaque champ a verifier
            var username = document.getElementById('username');
            var password = document.getElementById('password');
            var email = document.getElementById('email');

            // initialise l'appel aux fonctions pour chaque champ
            // il y a des différences de traitement DOM entre IE et Firefox, notamment pour l'affectation d'évenement
            // pour IE
            if (window.attachEvent) {
            username.onkeyup = function() { verifUsername(username); };
            password.onkeyup = function() { verifpassword(password); };
            email.onkeyup = function() { verifEmail(email); };
            }
            // pour Firefox
            else {
            username.setAttribute('onKeyUp', 'verifUsername(username)');
            password.setAttribute('onKeyUp', 'verifpassword(password)');
            email.setAttribute('onKeyUp', 'verifEmail(email)');
            }
            }

            function verifUsername(username) {
            var XHR = new XHRConnection();
            XHR.appendData("username", username.value);
            XHR.sendAndLoad("verifUsername.php", "POST", afficheDispo);
            }

            function verifpassword(password) {
            motDepassworde = password.value;
            password_alert = document.getElementById('password_alert');
            // suppression du texte existant
            while(password_alert.firstChild != null) {
            password_alert.removeChild(password_alert.firstChild);
            }
            // creation du message suivant le cas
            if(motDepassworde.length < 6) {
            var texte = document.createTextNode("Niveau faible");
            }
            if(motDepassworde.length >= 6 && motDepassworde.length < 8) {
            var texte = document.createTextNode("Niveau correct");
            }
            if(motDepassworde.length >= 8) {
            var texte = document.createTextNode("Niveau élevé");
            }
            password_alert.appendChild(texte);
            }

            function verifEmail(email) {
            adresse = email.value;
            email_alert = document.getElementById('email_alert');
            // suppression du texte existant
            while(email_alert.firstChild != null) {
            email_alert.removeChild(email_alert.firstChild);
            }
            // creation du message suivant le cas
            if (!checkEmail(adresse)) {
            var texte = document.createTextNode("Adresse incorrecte");
            email_alert.appendChild(texte);
            } else {
            var texte = document.createTextNode("Adresse correcte");
            email_alert.appendChild(texte);
            }
            }

            function checkEmail(email) {
            var arobase = email.indexOf("@");
            var point = email.lastIndexOf(".");
            if((arobase < 3) || (point + 3 > email.length) || (point < arobase+3)) {
            return false;
            }
            return true;
            }

            function afficheDispo(obj) {
            username_alert = document.getElementById('username_alert');
            // suppression du texte existant
            while(username_alert.firstChild != null) {
            username_alert.removeChild(username_alert.firstChild);
            }

            // Construction des noeuds
            var tabResult = obj.responseXML.getElementsByTagName('resultat');
            var resultat = tabResult.item(0);
            var dispo = resultat.getAttribute('dispo');

            // creation du message suivant le cas
            if (dispo == "true") {
            var texte = document.createTextNode("Le nom d'utilisateur est disponible");
            username_alert.appendChild(texte);
            } else {
            if (dispo == "false") {
            var texte = document.createTextNode("Le nom d'utilisateur n'est pas disponible");
            username_alert.appendChild(texte);
            }
            }
            }

            fichier verifUsername.php :

            <?php

            // celui-ci fonctionne----------------------------------------------------

            $username=mysql_escape_string(trim($_POST['username']));

            $pseudo_existant = array("aguillem", "zen", "audrey", "test", "stephane");

            // verifie si le pseudo existe dans le tableau
            if (!in_array(strtolower($username), $pseudo_existant)) {
            $dispoUsername = "true";
            } else {
            $dispoUsername = "false";
            }

            // celui-ci fonctionne----------------------------------------------------

            // celui-ci ne fonctionne pas----------------------------------------------------

            $requete = "SELECT pseudo FROM users WHERE pseudo='".$username."'";
            // Execution de la requete
            $result=mysql_query($requete) or die ("Pb requette ".mysql_error());
            // On regarde combien trouvé
            if(mysql_num_rows($result) > 0){
            $dispoUsername = "true";
            } else {
            $dispoUsername = "false";
            }

            // celui-ci ne fonctionne pas----------------------------------------------------

            // on cree une feuille xml
            header('Content-type: text/xml');
            // on retourne le resultat sous format xml
            $xml = '<resultats>';
            $xml .= '<resultat dispo="'.$dispoUsername.'" />';
            $xml .= '</resultats>';
            print $xml;
            ?>

            fichier form.php (la partie du input uniquement) :

            <p>
            <label>Nom d'utilisateur : </label>
            <input type="text" id="username" name="username" value="<?php print $_POST["username"];?>" />
            <span id="username_alert"><?php print $message["username"];?></span>
            </p>

            voila, j'ai essayé d'autre script en effectuant des recherches sur google mais ils proposent tous la même formule : (exemple venant d'un autre site)

            //this variable contains the array of existing users
            $existing_users=array('roshan','mike','jason');
            1. Miraaacle!! Alors, je ne sais pas si cela pourra aider d'autres personnes que moi néanmoins je tient à remercier Alain_42 car j'ai simplement adapté sa fonction, il semble que mysql_connexion ne fonctionnais pas.

              // celui-ci fonctionne----------------------------------------------------
              mysql_connect('localhost', 'root', '');
              mysql_select_db('ta_base');

              $username=$_POST['username'];
              $query=("Select * from table_membre where pseudo='$username'");

              $result= mysql_query($query);
              $num=mysql_num_rows($result);
              if ($num > 0) {//Username already exist
              $dispoUsername = "false";
              } else {
              $dispoUsername = "true";
              }