Récupération de données à partir d'une BDD

Eléphant du PHP | 89 Messages

15 mai 2006, 10:39

Bonjour,

Voici mon souci, je souhaite récupérer les données contenues dans une Base de Données...

Voici comment je m'y prends :
nclude("identifiant.php");

@mysql_connect($hote,$utilisateur,$passwd); //lance la connection
@mysql_select_db($bdd);


$requete1="SELECT `Conseiller` FROM `emploi` WHERE 1 ";

$resultat1=mysql_query($requete1) or die('Erreur de connexion '.mysql_error());
echo $resultat1;
Je devrais donc obtenir ceci : LEON Karine.

Cependant, voici ce que j'obtiens... : Resource id #2

Pourriez-vous m'expliquer pourquoi?

Merci pour votre aide

ViPHP
ViPHP | 3607 Messages

15 mai 2006, 10:46

pour t'expliquer en gros (moi non plus je sais pas vraiment comment ça se passe, mais ce qu'il y a dans $resultat, c'est une ressourceq ui n'est pas traitable directement, il faut faire appel à la fonction my_sql_result() par exemple: voila le code changé
include("identifiant.php");

@mysql_connect($hote,$utilisateur,$passwd); //lance la connection
@mysql_select_db($bdd);


$requete1="SELECT `Conseiller` FROM `emploi` WHERE 1 ";

$resultat1=mysql_query($requete1,$connection) or die('Erreur de connexion '.mysql_error());
for($i=0;$i<mysql_num_rows($resultat1);$i++){
   echo mysql_result($resultat1,$i,'nom_de_la_colonne').mysql_result($resultat1,$i,'nom_de_la_colonne2');
}

Eléphant du PHP | 89 Messages

18 mai 2006, 14:31

Euh... je n'ai pas vraiment bien compris ton code...

Pourrais tu l'expliquer...

Eléphant du PHP | 71 Messages

18 mai 2006, 14:57

ce qu'il y a dans $resultat, c'est une ressource qui n'est pas traitable directement
jojolapine as raison c'est pour cette ca que tu obtiens : Resource id #2

quand tu fait mysql_query(); le resultat est une variable mysql, c'est pourquoi il est necessaire de la transformer en tableaux (array) pour l'utiliser avec php.

la methode qui te permet cette manip est mysql_fetch_assoc, elle transforme ta requete mysql en tableau associatif.

voici le meme code que jojolapine mais sans la boucle for() ce qui posera probleme si tu as plusieur resultat dans ta requete, mais plus simple a comprendre
include("identifiant.php"); 

@mysql_connect($hote,$utilisateur,$passwd); //lance la connection 
@mysql_select_db($bdd); 


$requete1 = mysql_query("SELECT `Conseiller` FROM `emploi` WHERE 1"); 

$resultat1 = mysql_fetch_assoc($requete1);
logiquement dans $resultat1[Conseiller] tu devrait touver les données extraites de ta base.

bon courage

Avatar du membre
ViPHP
ViPHP | 3008 Messages

18 mai 2006, 14:57

Si tu veux afficher un enregistrement, il faut que tu mettes :
echo mysql_result($resultat1,2);
Si je met 2, il retournera le 3è enregistrement.

Alternatives recommandées : mysql_fetch_row , mysql_fetch_array et mysql_fetch_object.

Invité
Invité n'ayant pas de compte PHPfrance

12 juin 2006, 10:56

Bonjour,

J'ai de nouveau des problèmes... Le code marchait, mais j'ai changé le nom d'une variable, et depuis, j'ai ce message d'erreur...
Warning: Unable to jump to row 0 on MySQL result index 2 in /disk1/m/mldijon/public_html/test_bdd/flash_emploi.php on line 40

Je n'arrive pas à savoir pourquoi, la ligne 40 n'ayant pas été modifiée...

$requete1="SELECT `Numero` FROM `emploi` WHERE Numero = $num "; 
$requete2="SELECT `Type_de_contrat` FROM `emploi` WHERE Numero = $num";
$requete3="SELECT `Condition_par` FROM `emploi` WHERE Numero = $num";
$requete4="SELECT `Profil` FROM `emploi` WHERE Numero = $num";
$requete5="SELECT `Formation` FROM `emploi` WHERE Numero = $num";
$requete6="SELECT `Experience` FROM `emploi` WHERE Numero = $num";
$requete7="SELECT `Condition` FROM `emploi` WHERE Numero = $num";
$requete8="SELECT `Lieu_travail` FROM `emploi` WHERE Numero = $num";
$requete9="SELECT `Deplacement` FROM `emploi` WHERE Numero = $num";
$requete10="SELECT `Remuneration` FROM `emploi` WHERE Numero = $num";
$requete11="SELECT `Commentaire` FROM `emploi` WHERE Numero = $num";

$resultat1=mysql_query($requete1) or die('Erreur de connexion '.mysql_error()); 
$resultat2=mysql_query($requete2) or die('Erreur de connexion '.mysql_error()); 
$resultat3=mysql_query($requete3) or die('Erreur de connexion '.mysql_error()); 
$resultat4=mysql_query($requete4) or die('Erreur de connexion '.mysql_error()); 
$resultat5=mysql_query($requete5) or die('Erreur de connexion '.mysql_error()); 
$resultat6=mysql_query($requete6) or die('Erreur de connexion '.mysql_error()); 
$resultat7=mysql_query($requete7) or die('Erreur de connexion '.mysql_error()); 
$resultat8=mysql_query($requete8) or die('Erreur de connexion '.mysql_error()); 
$resultat9=mysql_query($requete9) or die('Erreur de connexion '.mysql_error()); 
$resultat10=mysql_query($requete10) or die('Erreur de connexion '.mysql_error()); 
$resultat11=mysql_query($requete11) or die('Erreur de connexion '.mysql_error()); 

for ($i = 0 ; $i < 1 ; $i++) 
{
$un=mysql_result($resultat1,$i) or die('Erreur de connexion '.mysql_error());  
$deux=mysql_result($resultat2,$i);
$trois=mysql_result($resultat3,$i);
$quatre=mysql_result($resultat4,$i);
$cinq=mysql_result($resultat5,$i);
$six=mysql_result($resultat6,$i);
$sept=mysql_result($resultat7,$i);
$huit=mysql_result($resultat8,$i);
$neuf=mysql_result($resultat9,$i);
$dix=mysql_result($resultat10,$i);
$onze=mysql_result($resultat11,$i);

}
Pourriez-vous m'indiquez mon erreur?

Merci !

ViPHP
ViPHP | 2144 Messages

12 juin 2006, 10:59

HeuHeu, pourquoi faire une requête par champ ?
Il va pas être heureux le serveur mysql....

Ensuite la ligne 40, elle est où ?

Le mieux reste de lire un tutorial sur les accès php à une base de donnée, tu en as un très chouette sur le site.

Eléphant du PHP | 89 Messages

12 juin 2006, 11:04

euh... la ligne 40, c'est celle-ci
$un=mysql_result($resultat1,$i) or die('Erreur de connexion '.mysql_error());   

ViPHP
ViPHP | 2144 Messages

12 juin 2006, 11:12

De toute façon, ll faut que tu fasses une seule requête pour rapatrier tous ces champs, sous peine de quoi, tu vas flanquer le serveur mysql par terre, dès que tu vas commencer à programmer des trucs un peu plus complexes.
Donc commence par lire le tutorial sur le site et si tu as des problèmes après ça, on sera là pour t'aider.

Invité
Invité n'ayant pas de compte PHPfrance

12 juin 2006, 13:36

Alors, après quelques petites corrections, voici mon code :


$requete1="SELECT `Numero`,`Type_de_contrat`,`Condition_par`,`Profil`,`Formation`,`Experience`,`Condition`,`Lieu_travail`,`Deplacement`,`Remuneration`,`Commentaire` FROM `emploi` WHERE Numero = 101 "; 

$resultat1=mysql_query($requete1) or die('Erreur de connexion '.mysql_error()); 

while($data = mysql_fetch_assoc($resultat1));  
	{
	$un = $data['Numero'];
	}

echo "Voici le contenu de la variable un => $un";
J'ai vérifié, la requête dans la base de données, et
 echo "Voici le contenu de la variable un => $un";
devrait me donner :

Voici le conte de la variable un => 101.

Mais cela ne me donne rien... saurais tu m'expliquer pourquoi?

Merci.

Mammouth du PHP | 1353 Messages

12 juin 2006, 13:47

Tu peux essayer directement d'afficher dans la boucle, et je ne suis pas certain de la syntaxe du => pour une variable "de base"
$requete1="SELECT `Numero`,`Type_de_contrat`,`Condition_par`,`Profil`,`Formation`,`Experience`,`Condition`,`Lieu_travail`,`Deplacement`,`Remuneration`,`Commentaire` FROM `emploi` WHERE Numero = 101 "; 

$resultat1=mysql_query($requete1) or die('Erreur de connexion '.mysql_error()); 

while($data = mysql_fetch_assoc($resultat1));   
    { 
    echo "Resultat trouvé : ".$data['Numero']; 
    } 
Sinon essaye aussi de simplifier la requete au début pour voir, jusqu a ce que tu trouves l erreur.

Par exemple commence par :

SELECT numero FROM emploi WHERE numero=101

Et vérifie aussi que les noms de colonnes soient bons (majuscules, minuscules....) et que la valeur 101 existe et soit un entier, pas une chaine de caractere...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 89 Messages

12 juin 2006, 15:38

Sinon essaye aussi de simplifier la requete au début pour voir, jusqu a ce que tu trouves l erreur.

Par exemple commence par :

SELECT numero FROM emploi WHERE numero=101

Et vérifie aussi que les noms de colonnes soient bons (majuscules, minuscules....) et que la valeur 101 existe et soit un entier, pas une chaine de caractere...
J'ai déja pensé à simplifier la reqûete, et rien... toujours pas de résultats... je continue à chercher, mais je ne vois pas...!

ViPHP
ViPHP | 2144 Messages

12 juin 2006, 21:38

Il nous faut plus de détails, "ça n'affiche rien", c'est très vagues, tu n'as pas de messages d'erreur ?
Fait un print de ta requête et fait un copie coller dans phpmyadmin pour voir ce qu'elle donne.

Invité
Invité n'ayant pas de compte PHPfrance

13 juin 2006, 13:28

Alors, dans la base de données, la donnée inscrite dans la base de données sous Numéro est : 1

Le souci, c'est que
echo "Resultat trouvé : ".$data['Numero']; 
ne donne rien... alors qu'on devrait obtenir : Résultat trouvé : 1. Aucun message d'erreur, rien... J'ai vérifié sous phpMyAdmin, le résultat de la requête me donne bien "1".

Et lorsque je remplace le code
while($data = mysql_fetch_assoc($resultat1));    
   { 
   echo "Resultat trouvé : ".$data['Numero']; 
   }
Par celui-ci =>
for ($i = 0 ; $i < 1 ; $i++) 
{
$un=mysql_result($resultat1,$i) or die('Erreur de connexion 1'.mysql_error());
}
et que je fais un echo " Resultat trouvé : $un"; j'obtiens bien Résultat trouvé : 1

Je ne comprends pas pourquoi lorsque j'utilise la première méthode, c'est à dire avec le while etc... je n'obtiens pas le resultat attendu.

Mammouth du PHP | 1353 Messages

13 juin 2006, 13:34

while($data = mysql_fetch_assoc($resultat1));     
   { 
   echo "Resultat trouvé : ".$data['numero']; 
   } 
pas de majuscule si il y en a pas dans le nom de la colonne ;), remplace Numero par numero.
Tell me and I forget. Teach me and I remember. Involve me and I learn.