JeuWeb - Crée ton jeu par navigateur
Probleme dans une requete MYSQL - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Probleme dans une requete MYSQL (/showthread.php?tid=2763)

Pages : 1 2


Probleme dans une requete MYSQL - Elazael - 15-07-2008

Je fais des tests en POO PHP .Mais j'ai un soucis probablement syntaxique que j'arrive pas résoudre.
Voici le bout de code :

class perso
{
public $pv;
public $force;
public $dexterite;
public $intelligence;
public $sagesse;
public $nom;



function bdd($type)
{
echo "Bonjour ".$type."<br><br>";
mysql_connect("localhost","root","")or die('pas connecte');
mysql_select_db("testjeu")or die('pas acces a la base');

$reponse=mysql_query("SELECT pvs,forcep,dexterite FROM perso WHERE nom LIKE '%$type%' "); // mon probleme se situe la je pense '%$type%'
$donnees = mysql_fetch_array($reponse);
$this->force=$donnees['forcep'];
$this->dexterite=$donnees['dexterite'];
$this->intelligence=$donnees['intelligence'];
$this->sagesse=$donnees['sagesse'];
$this->pv=$donnees['pvs'];
echo "Force ".$type." : ".$this->force."<br><br>";
echo "dexterite ".$type." : ".$this->dexterite."<br><br>";
echo "PV ".$type." : ".$this->pv."<br><br>";
}
public function degatp($force,$armurem,$rand)
{
$this->degat=($force+$rand)-$armurem;
return $this->degat;
}
}

En fait ce code marche quand je fait $perso1=new perso();
$perso1->bdd(nomdejadansmabdd);

Mais j'aimerais faire en sorte de pouvoir faire un $nom=$_POST['name'];
$perso1->bdd($nom);

Et la ça transmet bien ma variable $nom mais ça va pas me chercher les valeurs dans la base de donnée.Ca me retourne aucune erreur j'ai juste genre Force nomdujoueur : et rien du tout.Bien entendu la personne est au prealable inscrite dans ma BDD avec des valeurs pour chaque variable.

Il est probable que mon code soit inutile mais je cherche a manipuler les choses Smile.
Merci a ceux qui se pencherons sur le probleme Smile.


RE: Probleme dans une requete MYSQL - Elazael - 15-07-2008

Ok je recommence Smile

Code PHP :
<?php 
class perso
{
public
$pv;
public
$force;
public
$dexterite;
public
$intelligence;
public
$sagesse;
public
$nom;



function
bdd($type)
{
echo
"Bonjour ".$type."<br><br>";
mysql_connect("localhost","root","")or die('pas connecte');
mysql_select_db("testjeu")or die('pas acces a la base');

$reponse=mysql_query("SELECT pvs,forcep,dexterite FROM perso WHERE nom LIKE '%$type%' "); // mon probleme se situe la je pense '%$type%'
$donnees = mysql_fetch_array($reponse);
$this->force=$donnees['forcep'];
$this->dexterite=$donnees['dexterite'];
$this->intelligence=$donnees['intelligence'];
$this->sagesse=$donnees['sagesse'];
$this->pv=$donnees['pvs'];
echo
"Force ".$type." : ".$this->force."<br><br>";
echo
"dexterite ".$type." : ".$this->dexterite."<br><br>";
echo
"PV ".$type." : ".$this->pv."<br><br>";
}
public function
degatp($force,$armurem,$rand)
{
$this->degat=($force+$rand)-$armurem;
return
$this->degat;
}
}

Par un formulaire j'inscris un perso dans une base de donnée avec ses caracteristiques.
J'aimerais pouvoir passer direct du formulaire a cette page de code la en recuperant le nom du perso via un $_POST['nom'].Et transmettre le contenu du $POST['nom'] dans la fonction bdd de ma classe perso.
De la je peux recuperer les données liées a ce perso et m'amuser a tester des choses avec.

Pour le moment ma variable $POST['nom'] est bien transmise quand je fais
Code PHP :
<?php 
$nom
=$_POST['nom'];
$perso1=new perso();
$perso1->bdd($nom);

Mais ca m'affiche par exmple :
Code PHP :
<?php 
Bonjour Joueur

Force Joueur
:

dexterite Joueur :

PV Joueur :
Donc mon problème doit se situer au niveau de la syntaxe de ma requête SQL juste apres le LIKE je pense.


RE: Probleme dans une requete MYSQL - Elazael - 15-07-2008

Alors avec un or die ça me retourne aucuns problemes .
J'avais deja testé en ecrivant direct un nom de perso deja inscrit
Code PHP :
<?php 
$perso1
->bdd(nomduperso);
Et la ça marchait sans probleme.
C'est quand je veux passer une variable que ça foire.
ET j'avoue que je prefererais que ça marche avec une variable pour pouvoir y stocker n'importe quel nom de perso en utilisant un $_POST['nom'].


RE: Probleme dans une requete MYSQL - Elazael - 15-07-2008

hum.....apparement quand je fais
Code PHP :
<?php 
$nom
=joueur;
$perso1->bdd($nom);


Jobtiens :

Bonjour joueur

Force joueur
:10

dexterite joueur
:8

PV joueur
:40

Mais des que je change par
Code PHP :
<?php 
$nom
=$_POST['nom'];
$perso1->bdd($nom);


J'obtiens :

Bonjour Joueur

Force Joueur :

dexterite Joueur :

PV Joueur :

Donc apparement ma valeur contenu dans $_POST['nom'] est transmise mais pas dans ma requete SQL.





Pour ce qui est de
Code PHP :
<?php 
$this
->dexterite=$donnees['dexterite'];
est dans la requête mais effectivement intelligence et sagesse non,je les ai enlevé ça change rien Smile.


RE: Probleme dans une requete MYSQL - Ter Rowan - 15-07-2008

essaie de remplacer

Code PHP :
<?php 
$reponse
=mysql_query("SELECT pvs,forcep,dexterite FROM perso WHERE nom LIKE '%$type%' ");

par

Code PHP :
<?php 
$reponse
=mysql_query("SELECT pvs,forcep,dexterite FROM perso WHERE nom LIKE '%".$type."%' ");

pas sûr du tout que cela marche mais bon, perso, je ne place jamais ou presque les $var dans des "", toujours en dehors Smile (vieux réflexes d'autres langages)

avec les % avant et après va savoir comment php tente d'interpréter ton affaire Smile


RE: Probleme dans une requete MYSQL - Roworll - 15-07-2008

Joueur (avec un J majuscule) <> joueur (avec un j minuscule)
En fonction des paramètres de ta base de données, il est possible qu'il fasse une distinction dessus.

Essaye les lignes suivantes pour voir
Code PHP :
<?php 
$nom
='joueur';
$perso1->bdd($nom);
$nom='Joueur';
$perso1->bdd($nom);



RE: Probleme dans une requete MYSQL - Elazael - 15-07-2008

quand j'ai un J majuscule c'est que j'ai fait un test avec Joueur et quand j'ai un j minuscule mon teste a été fait avec joueur.

Mais ça change rien dans ma variable puisque mon $_POST contient exactement la valeur de ma variable.Si j'avais mis TEST ou test ou n'importe quoi ça reverrais forcement l'écriture exacte.

Et pour preuve:

Code PHP :
<?php 
$nom
=joueur;
$nom1=Joueur;
$perso1=new perso();
$perso1->bdd($nom);
$perso2=new perso();
$perso2->bdd($nom1);
Donne :

Code PHP :
<?php 
Bonjour joueur

Force joueur
: 10

dexterite joueur
: 8

PV joueur
: 40

Bonjour Joueur

Force Joueur
: 10

dexterite Joueur
: 8

PV Joueur
: 40

Mais ne change rien a mon bug quand j'utilise $_POST Sad


RE: Probleme dans une requete MYSQL - Roworll - 15-07-2008

Bon. Un pas en plus en avant dans le débuggage alors.
Essaye ceci histoire de voir ce qu'exécute ton moteur SQL

Remplace
Code PHP :
<?php 
$reponse
=mysql_query("SELECT pvs,forcep,dexterite FROM perso WHERE nom LIKE '%".$type."%' ");
par
Code PHP :
<?php 
$sql
="SELECT pvs,forcep,dexterite FROM perso WHERE nom LIKE '%".$type."%' ";
echo
$sql;
$reponse=mysql_query($sql);

Comme ça, tu verras la requête qui est lancée.


RE: Probleme dans une requete MYSQL - Elazael - 15-07-2008

ça me dit avec ton truc : Resource id #3

Code PHP :
<?php 
Bonjour joueur

SQL
: Resource id #3

Force joueur : 10

dexterite joueur
: 8

PV joueur
: 40

Bonjour Joueur

SQL
: Resource id #4

Force Joueur : 10

dexterite Joueur
: 8

PV Joueur
: 40

Bonjour

SQL
: Resource id #5

Force :

dexterite :

PV :

pour
Code PHP :
<?php 
$nom
=joueur;
$nom1=Joueur;
$nom2=$_POST['nom'];

$perso1=new perso();
$perso1->bdd($nom);

$perso2=new perso();
$perso2->bdd($nom1);

$perso3=new perso();
$perso3->bdd($nom2);



RE: Probleme dans une requete MYSQL - Elazael - 15-07-2008

Bah ça retourne
Resource id #3
ect