Problème pour récupérer la valeur numérique associé à un champ sql

meusanland Messages postés 21 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 6 août 2011 - 6 août 2011 à 02:13
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 6 août 2011 à 14:45
Bonjour,

Je suis en souffrance depuis maintenant deux jours, j'ai un problème avec une requête SQL, je m'explique :

sur un fichier php je me connecte à une base de donnée et je vais chercher dans une table des infos contenu dans plusieurs champs, jusque la pas de soucis, cependant j'ai créer une autre table avec un autre champ, totalement différent des premiers.
Mais je n'arrive pas à récupérer la valeur numérique associé à celle ci.

1 - peu-t-on faire deux requête sql dans un même fichier php?
2 - pourquoi je n'arrive pas a récupéré la valeur de ce champ et que sur les autres cela marche.


je poste mon code php pour être plus complet.

<?php  
session_start();
 //connection au serveur  
$server = "SERVEUR";
$login = "LOGIN";
$pwd = "PWD";
$base = "BASE";
$base = mysql_connect ($server, $login, $pwd);

mysql_select_db ('BASE', $base) ;

$id = $_COOKIE["value_id_joueur"];
$info_joueur = "SELECT  `CHAMP1`, `CHAMP2`, `CHAMP3`, `CHAMP4`, `CHAMP5` FROM  `BASE`.`TABLE1` WHERE `CHAMP2`=".$_COOKIE['value_id_joueur']."";
$req = mysql_query($info_joueur) or die( mysql_error() ) ;


while($data = mysql_fetch_assoc($req)) 
    { 
$email_joueur=$data['CHAMP4'];
$points_joueur=$data['CHAMP1'];

    } 

$code_joueur = "SELECT  `CHAMP1AUTRETABLE` FROM  `BASE`.`TABLE2`";
$reqbis = mysql_query($code_joueur) or die( mysql_error() ) ;

while($data = mysql_fetch_assoc($reqbis)) 
    { 
$code=$data['CHAMP1AUTRETABLE'];


    } 
echo $code;

//////////////////////le reste du code n'est pas très important////////////////////

?>



je voudrais récupéré la valeur numérique du CHAMP1AUTRETABLE, CHAMP1AUTRETABLE=7 dans ma bdd, et affiché cette valeur dans un echo mais cela ne marche pas


HELP help HELP

15 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
6 août 2011 à 09:22
bonjour
essaie voir
j ai mis des '' WHERE `CHAMP2`='". ...

plutôt

info_joueur = "SELECT `CHAMP1`, `CHAMP2`, `CHAMP3`, `CHAMP4`, `CHAMP5` FROM `BASE`.`TABLE1` WHERE `CHAMP2`='".$_COOKIE['value_id_joueur']."' ";

$data = mysql_fetch_row($req);
echo $email_joueur=$data['CHAMP4'];
echo $points_joueur=$data['CHAMP1'];

$code_joueur = "SELECT `CHAMP1AUTRETABLE` FROM `BASE`.`TABLE2`";

$reqbis = mysql_query($code_joueur) or die( mysql_error() ) ;

while($data = mysql_fetch_assoc($reqbis))
{
$code[]=$data['CHAMP1AUTRETABLE'];


}
print_r($code);


Bonne programmation !
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 août 2011 à 10:48
Salut,

mais cela ne marche pas

Qu'est ce que ça veut dire exactement ? Ca n'affiche rien ? une erreur ? autre chose ?


1 - peu-t-on faire deux requête sql dans un même fichier php?

Tu peux en faire 36000 si ça te chante, sur des tables, des bases et des serveurs différents


while($data = mysql_fetch_assoc($reqbis))
{
$code=$data['CHAMP1AUTRETABLE'];


}
echo $code;

Que cherches tu à faire ? récupérer le dernier enregistrement ?
Dans ce cas inutile de faire une boucle sur l'intégralité des données.
Un "ORDER BY CHAMP1AUTRETABLE DESC LIMIT 1" à la fin de la requête serait bien plus adapté et rapide.


`CHAMP2`='".$_COOKIE['value_id_joueur']."'

Il serait sans doute judicieux de traiter ces données avant de les utiliser dans la requête. On attend un nombre, pas une injection SQL.


Cordialement,

Kohntark -
0
meusanland Messages postés 21 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 6 août 2011
6 août 2011 à 11:24
merci de votre aide, j'ai testé avec les modifs de code57, mais rien.

Kohntark :


while($data = mysql_fetch_assoc($reqbis))
{
$code=$data['CHAMP1AUTRETABLE'];


}
echo $code;


Que cherches tu à faire ? récupérer le dernier enregistrement ?
Dans ce cas inutile de faire une boucle sur l'intégralité des données.
Un "ORDER BY CHAMP1AUTRETABLE DESC LIMIT 1" à la fin de la requête serait bien plus adapté et rapide.


je ne cherche qu'a récupéré la valeur numérique associé la mon champ.
et quand je dis que cela n'affiche rien, je n'est rien en echo et je n'ai pas d'erreur
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 août 2011 à 11:48
je ne cherche qu'a récupéré la valeur numérique associé la mon champ.

Je ne comprends pas bien ...

SELECT `CHAMP1AUTRETABLE` FROM `BASE`.`TABLE2`
=> là tu récupères l'intégralité des enregistrements du champ CHAMP1AUTRETABLE
Il n'y a qu'un seul enregistrement dans cette table ??
Si c'est le cas il est inutile de faire un while()
Si ce n'est pas le cas :
$reqbis = mysql_query($code_joueur) or die( mysql_error() ) ;

while($data = mysql_fetch_assoc($reqbis)) { 

        // ici tu ré écris constamment ta variable $code, ce qui 
        // n'a aucun intérêt
$code=$data['CHAMP1AUTRETABLE'];

    } 
echo $code; // $code contient uniquement la dernière valeur de CHAMP1AUTRETABLE

je n'est rien en echo et je n'ai pas d'erreur

... c'est vraisemblablement qu'il n'y a rien à afficher

Quand tu colles la requête directement dans PHPMyAdmin quel résultat obtiens tu ?
Que dis un :
echo 'nb de résultats = '.mysql_num_rows($reqbis);

placé en dessous de "$reqbis = mysql_query(..." ?

Cordialement,

Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
meusanland Messages postés 21 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 6 août 2011
6 août 2011 à 11:54
si je pose echo 'nb de résultats = '.mysql_num_rows($reqbis);
voila le résultat :nb de résultats = 0
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 août 2011 à 12:08
C'est donc ce que je disais : "... c'est vraisemblablement qu'il n'y a rien à afficher"
As tu contrôlé que les noms du champ et de la table sont correctes ?
Quand tu affiches le contenu de ta table dans PHPMyAdmin (ou équivalent) tu as bien des valeurs ?
Quels sont les réels noms des tables, colonnes ?
Quelle est la structure de la table TABLE2 ?


Re :
Quand tu colles la requête directement dans PHPMyAdmin quel résultat obtiens tu ?


Cordialement,

Kohntark -
0
meusanland Messages postés 21 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 6 août 2011
6 août 2011 à 12:19
voila 2 imprimes ecran de la table et du champ.

Table :

Champ :

je ne sais pas comment dans phpmyadmin tester une requête sql
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 août 2011 à 12:26
je ne sais pas comment dans phpmyadmin tester une requête sql

Par l'onglet SQL

Tu as bien des enregistrements dans l'onglet "Afficher" ??



Kohntark -
0
meusanland Messages postés 21 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 6 août 2011
6 août 2011 à 12:33
message : la table semble vide.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 août 2011 à 12:36

message : la table semble vide.


... il faudrait donc la remplir

Cordialement,

Kohntark -
0
meusanland Messages postés 21 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 6 août 2011
6 août 2011 à 12:41
c'est quand même étonnant, j'ai créé une table rap_code, dans celle ci j'ai créé une colonne donc mon champ ccode, type:int valeur:11 Interclassement:rien Attributs:rien Null:rien Défaut:7 Extra: rien Action: primaire

je ne vois pas quoi ajouté
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 août 2011 à 12:55
j'ai créé une colonne donc mon champ ccode

Oui, tu as créé une table avec une colonne, mais tu n'as inséré aucun enregistrement !
(cf onglet "insérer")

J'ai comme l'impression que les notions de base nécessaires à l'utilisation d'une base de données te sont étrangères. Me tromperais je ?

Peut être serait il utile que tu fasses une petite pause "tutos" pour acquérir ces bases et éviter ainsi une perte de temps inutile.
Il faudrait également que tu te familiarises avec PHPMyAdmin.

Cordialement,

Kohntark -
0
meusanland Messages postés 21 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 6 août 2011
6 août 2011 à 13:02
ahaha voila j'ai rempli ccode et voila se que me donne le :
echo 'nb de résultats = '.mysql_num_rows($reqbis);
resultat :nb de résultats = 1

donc le champ est rempli comment puis je récupéré cette valeur alors?
0
meusanland Messages postés 21 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 6 août 2011
6 août 2011 à 14:21
bon j'ai réussi, j'ai créer une condition avec le résultat, sa marche bien mais je souhaiterai à la fin du script updaté une nouvelle valeur dans le champ cependant j'ai cela comme message :

7Mail sentUnknown column 'rap_code' in 'where clause'

voila le code en fin de script :



$mail_sent = @mail( $to, $subject, $message ); 
echo $mail_sent ? "Mail sent" : "Mail failed"; 


if ($mail_sent == "Mail sent" ) {
$points_joueur=($points_joueur-50000);
$code_joueur=($code_joueur-1);
 $sql "UPDATE  `BASE`.`TABLE1` SET  `params`  '',`CHAMP1` =  '$points_joueur' WHERE  `TABLE1`.`CHAMP2` =".$_COOKIE['value_id_joueur'].""; 
 
 $sql2 "UPDATE `BASE`.`TABLE2` SET `params` '',`CHAMPTABLE2` = '$code_joueur' WHERE `TABLE2`"; 
 
$requete = mysql_query($sql) or die( mysql_error() ) ;
$requetebis = mysql_query($sql2) or die( mysql_error() ) ;

}
echo $points_joueur;



0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 août 2011 à 14:45
Unknown column 'rap_code' in 'where clause'

La colonne 'rap_code' n'existe pas dans l'une des 2 requêtes
Pour faciliter les choses fournis les véritables requêtes SQL et indique quelle ligne est concernée par l'erreur.

WHERE `TABLE2`";

Ca n'a pas de sens ! C'est une structure conditionnelle =>
WHERE machin = "truc"

Je l'ai déjà dit précédemment, mais ça :
`TABLE1`.`CHAMP2` =".$_COOKIE['value_id_joueur']

ça t'expose à des problèmes de sécurité.

Tu dois t'assurer que "value_id_joueur" réponde à ce que tu attends avant de l'utiliser dans une requête SQL.


Kohntark -
0
Rejoignez-nous