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

Signaler
Messages postés
21
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
6 août 2011
-
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
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

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
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 !
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -
Messages postés
21
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
6 août 2011

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
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -
Messages postés
21
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
6 août 2011

si je pose echo 'nb de résultats = '.mysql_num_rows($reqbis);
voila le résultat :nb de résultats = 0
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -
Messages postés
21
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
6 août 2011

voila 2 imprimes ecran de la table et du champ.

Table :

Champ :

je ne sais pas comment dans phpmyadmin tester une requête sql
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -
Messages postés
21
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
6 août 2011

message : la table semble vide.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27

message : la table semble vide.


... il faudrait donc la remplir

Cordialement,

Kohntark -
Messages postés
21
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
6 août 2011

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é
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -
Messages postés
21
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
6 août 2011

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?
Messages postés
21
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
6 août 2011

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;



Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -