[PHP/MYSQL] Array en PHP depuis la BD

Résolu/Fermé
edle3 Messages postés 5 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 26 août 2009 - 26 août 2009 à 03:49
Alain_42 Messages postés 5358 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 26 août 2009 à 18:28
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

Alain_42 Messages postés 5358 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 903
26 août 2009 à 13:32
// 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
26 août 2009 à 03:52
0
edle3 Messages postés 5 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 03:58
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 mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
26 août 2009 à 10:43
$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 mercredi 26 août 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 13:07
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 mercredi 26 août 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 14:04
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 mercredi 26 août 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 16:24
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 5358 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 903
26 août 2009 à 18:27
ok mets ton post en résolu
0
Alain_42 Messages postés 5358 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 903
26 août 2009 à 18:28
Houps pardon j'avais pas vu que tu l'avait déja fait
0