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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récupération de données à partir d'une BDD

par ludger » 13 juin 2006, 14:10

Pas de ; apres un while !!!!! :D
Mais, oui........

Rhaa... la boulette... des heures à éssayer de comprendre mon erreur, même à trois dessus on ne l'a pas vue!

Merci beaucoup! un peu de plus vers la fin de mon programme! :wink:

par guilt92 » 13 juin 2006, 14:02

Désolé j avais mal lu tes requetes

mais la bonne nouvelle : j ai trouvé !!!!
while($data = mysql_fetch_assoc($resultat1));  
Pas de ; apres un while !!!!! :D
while($data = mysql_fetch_assoc($resultat1))

par Invité » 13 juin 2006, 13:57

pas de majuscule si il y en a pas dans le nom de la colonne ;), remplace Numero par numero.
Ben ça pourrait être une erreur possible, mais non non, j'ai bien mis un N majuscule dans la colone...

Je ne comprends vraiment pas mon erreur...

par guilt92 » 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.

par Invité » 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.

par iclo » 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.

par ludger » 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...!

par guilt92 » 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...

par Invité » 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.

par iclo » 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.

par ludger » 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());   

par iclo » 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.

par Invité » 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 !

par charabia » 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.

par Moker » 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