[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 -
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
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:
- [PHP/MYSQL] Array en PHP depuis la BD
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Scan bd - Forum Loisirs / Divertissements
- Retour a la ligne php ✓ - Forum PHP
- Mysql community server - Télécharger - Bases de données
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 ?
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
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)
$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
--> 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');
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";
}
// 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";
}