[PHP/MYSQL] Array en PHP depuis la BD
Résolu
edle3
Messages postés
5
Statut
Membre
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
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
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
-
// 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(); -
-
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 -
$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)
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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'); -
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";
} -
-
Houps pardon j'avais pas vu que tu l'avait déja fait