[PHP/MYSQL] Array en PHP depuis la BD

Résolu
edle3 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

9 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
// 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();
4
Utilisateur anonyme
 
0
edle3 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Passarinho44 Messages postés 963 Date d'inscription   Statut Contributeur Dernière intervention  
 
$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)

0

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

Posez votre question
edle3 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
edle3 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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');
0
edle3 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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";
}
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
ok mets ton post en résolu
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Houps pardon j'avais pas vu que tu l'avait déja fait
0