OVH Cloud OVH Cloud

Debutant Class et mysql

11 réponses
Avatar
Stephane
Bonjour à tous

Je débute en PHP mysql et j'ai un petit souci que je comprends.
Je me suis fait un petit prog qui fait 2 requete sur ma base mysql pour
récupérer le contenu d'une commande. Ca fonctionne.
Je veux faire la meme chose mais en définissant un objet commande avec
des variables et une methode qui permet de lire la commande et là ca va
plus. J'ai pas d'erreur de connexion mais la requete ne renvoit rien.
Exemple du code:

Class CommandeFou
{
var $numCde, $numFour;
var $lEntete, $lesLignes;

// Lit le contenu de la commande
function LireData()
{
$cxn = mysql_connect(HOST,USER,PWD);
$query = str_replace("%NUMERO",$this->numCde,R_ENTETE);
//permet de construire la requete
echo $query;
$test = mysql_query($query);
echo "<br>-".$test[1]."-";
}
}

Je comprends pas ce qu'il se passe pas ?

Merci
Stephane

10 réponses

1 2
Avatar
CrazyCat
Bonjour à tous
Class CommandeFou
{
var $numCde, $numFour;
var $lEntete, $lesLignes;

// Lit le contenu de la commande
function LireData()
{
$cxn = mysql_connect(HOST,USER,PWD);
$query = str_replace("%NUMERO",$this->numCde,R_ENTETE);
//permet de construire la requete
echo $query;
$test = mysql_query($query);
echo "<br>-".$test[1]."-";
}
}


Déjà, est-ce que ton "echo $query" renvoit quelque chose, et si oui, quoi?
Ensuite, un mysql_select_db() pourrait être utile (c'est mon avis).

--
Astuces pour webmasters: http://www.crazycat.info
Tchat francophone: http://www.crazy-irc.net

Avatar
Newsgroups
Bonjour à tous

Je débute en PHP mysql et j'ai un petit souci que je comprends.
Je me suis fait un petit prog qui fait 2 requete sur ma base mysql pour
récupérer le contenu d'une commande. Ca fonctionne.
Je veux faire la meme chose mais en définissant un objet commande avec
des variables et une methode qui permet de lire la commande et là ca va
plus. J'ai pas d'erreur de connexion mais la requete ne renvoit rien.
Exemple du code:

Class CommandeFou
{
var $numCde, $numFour;
var $lEntete, $lesLignes;

// Lit le contenu de la commande
function LireData()
{
$cxn = mysql_connect(HOST,USER,PWD);
$query = str_replace("%NUMERO",$this->numCde,R_ENTETE);
//permet de construire la requete
echo $query;
$test = mysql_query($query);
echo "<br>-".$test[1]."-";
}
}

Je comprends pas ce qu'il se passe pas ?
Je crois qu'il faut que LireData() fasse un "return quelquechose"

Essaye comme cela :

function LireData()
{
$cxn = mysql_connect(HOST,USER,PWD);
$query = str_replace("%NUMERO",$this->numCde,R_ENTETE);
//permet de construire la requete
$out = $query;
$test = mysql_query($query);
$out .= "<br>-".$test[1]."-";
return $out;
}

Et ensuite à l'appel de ta fonction :

$CommandeFou = CommandeFou->new;
print $CommandeFou->LireData();

Avatar
Stephane
Déjà, est-ce que ton "echo $query" renvoit quelque chose, et si oui, quoi?


Oui la requete comme il faut, si j'en fait un copier/coller dans le
requetreur de mysql elle me renvoit ce que je vuex.

Ensuite, un mysql_select_db() pourrait être utile (c'est mon avis).
C'est ce que j'avais fait et dans mon dernier essai je l'avais essayé

sans succès.

@+ Stephane

Avatar
Stephane

Bonjour à tous

Je débute en PHP mysql et j'ai un petit souci que je comprends.


Je crois qu'il faut que LireData() fasse un "return quelquechose"
Essaye comme cela :


Ca m'affiche -- mais rien dedans.

Et ensuite à l'appel de ta fonction :

$CommandeFou = CommandeFou->new;
moi je fais comme ca (c'est bon ?):

$maCommande = New CommandeFou();

@+ Stephane


Avatar
Newsgroups

Bonjour à tous

Je débute en PHP mysql et j'ai un petit souci que je comprends.


Je crois qu'il faut que LireData() fasse un "return quelquechose"
Essaye comme cela :


Ca m'affiche -- mais rien dedans.


Ajoutez global $numCde, comme ceci :

function LireData() {
global $numCde;
... ... ...
... ... ...
}


$CommandeFou = CommandeFou->new;
moi je fais comme ca (c'est bon ?):

$maCommande = New CommandeFou();


Oui, vous avez raison... j'ai l'habitude de coder en Perl ces temps ci..



Avatar
Stephane




Bonjour à tous

Je débute en PHP mysql et j'ai un petit souci que je comprends.


Je crois qu'il faut que LireData() fasse un "return quelquechose"
Essaye comme cela :


Ca m'affiche -- mais rien dedans.



Ajoutez global $numCde, comme ceci :


J'ai remplacé var par global et j'obtiens un joli parse error.

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or
`T_VAR' or `'}'' in c:program fileseasyphp1-8wwwlirecde.php on line 61

Ce qui me permet de préciser que j'utilise esayphp :-))

C'est vraiment bizarre en 'procédural' ca fonctionne et la
transformation en POO ca marche plus et je n'ai pas d'erreur affichée
c'est ca qui m'étonnes le plus.

@+ Stephane




Avatar
Stephane

En utilisant mysql_fetch_array() ca fonctionne:

$this->lEntete = mysql_query($query);
$this->lEntete = mysql_fetch_array($this->lEntete);
echo "<br>-".$this->lEntete[1]."-";

Je vois pas pourquoi ?

@+ Stephane
Avatar
Olivier Miakinen

Ajoutez global $numCde, comme ceci :


J'ai remplacé var par global et j'obtiens un joli parse error.


Euh... « ajouter » ce n'est pas « remplacer ». En plus, Newsgroups avait
donné l'exemple de code.


Avatar
Stephane

Ajoutez global $numCde, comme ceci :


J'ai remplacé var par global et j'obtiens un joli parse error.



Euh... « ajouter » ce n'est pas « remplacer ». En plus, Newsgroups avait
donné l'exemple de code.


Ben oui dans son exemple y'a plus le 'var', mais sinon effectivement
ajouter n'est pas remplacer.

@+ Stephane



Avatar
Calimero
Stephane wrote:

En utilisant mysql_fetch_array() ca fonctionne:

$this->lEntete = mysql_query($query);
$this->lEntete = mysql_fetch_array($this->lEntete);
echo "<br>-".$this->lEntete[1]."-";

Je vois pas pourquoi ?


mysql_query() te retourne une ressource (ou handle, ou pointeur si tu
veux, dans une autre terminologie) vers un jeu de résultats. C'est une
donnée "opaque" non exploitable en l'état. (1)

Il faut donc piocher dans ce "tas de résultats" pour récupérer les
données. C'est là qu'interviennent les fonctions mysql_fetch_*().

L'objet n'a rien à voir avec ton problème. En procédural ou en OO,
essayer de lire ton enregistrement dans le retour de mysql_query est
voué à l'échec.

RTFM, oserais-je ! ;)


(1) je parle du cas d'un SELECT, SHOW... qui n'a pas échoué. Pour les
autres valeurs de retour, voir la doc.

--
@+
Calimero

1 2