Echange des variable entre deux fonctions

Répondre
farouk
le 16/03/2011 à 16:14
farouk
Bonjour!
J'ai une classe avec deux méthodes qui font des insertions des requetes. Je voudrais recuperé l'id du premiere requete pour l'utiliser sur la 2eme méthode. J'ai declaré une variable globale pour assurer le relai mais cela ne semble pas marché merci de me donner votre avis ou bien de me dire ce qui ne marche pas.
<?php
class Modelsaisie
{
//attributs
public $table;
private $id=0;


//la function qui insert les données sur les tables
public function ajout($num,$fic,$dat,$cli)
{

$sql="INSERT INTO ".$this->table." VALUES ('$num','$fic','$dat','$cli')";
//on ecxecute la requete
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on récupère le dernier numéro inséré
$this->id= mysql_insert_id();
echo $this->id.'<br />'; //je remarque la variable id recupere bien la donnée
}



//la méthode qui insert les données du sous formulaire sur les tables
public function sousformulaire($numl,$nomp,$qte,$pu,$tva)
{

$longueur=count($nomp);
for($i=0; $i<$longueur; $i++)
{

echo $this->id;
/* je voudrais affiché la variable id ici mais il recupere le 0 au lieu du valeur de l'id mysql.*/
}
}
?>
?>
devWeb
moogli
le 16/03/2011 à 16:33
moogli
salut,

je viens de tester ton code, il fonctionne.

est ce que mysql_insert_id retourn quelque chose ?

@+
Il en faut peu pour être heureux !!!!!
farouk
le 16/03/2011 à 17:54
farouk
Oui effectivement mysql_insert_id() recupere l'id qu'on vient d'inserer j'ai fait un echo et il affiche bien l'id. Maintenant je voudrais l'affecté à la variable private $id pour la reutilisé sur l'autre fonction en dessous, mais quand je teste la variable sur la 2eme fonction ça donne rien
echo $this->id
je me rend comte la variable n'est pas transmise.
Merci
devWeb
LA GLOBULE
le 16/03/2011 à 19:17
LA GLOBULE
Montre nous le code qui utilise la classe.

N'initialiserais tu pas 2 objets par hasard ?
farouk
le 16/03/2011 à 20:54
farouk
voila la classe en entier:
<?php  class Modelsaisie
{
//attributs
public $table;
private $id=0;
//la méthode qui insert les données sur les tables
public function ajout($num,$fic,$dat,$cli)
{

$sql="INSERT INTO ".$this->table." VALUES ('$num','$fic','$dat','$cli')";
//on ecxecute la requete
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on récupère le dernier numéro inséré
$this->id= mysql_insert_id();
echo $this->id.'<br />';
}


//la méthode qui insert les données du sous formulaire sur les tables
public function sousformulaire($numl,$nomp,$qte,$pu,$tva)
{

$longueur=count($nomp);
for($i=0; $i<$longueur; $i++)
{
echo $this->id;
}
}
//Une calsse qui permet d'instancier les objets
static function chargement($name)
{
require("$name.php");
return new $name();
}
}
?>

Ensuite on a cette classe
<?php
class ClassFacture extends Modelsaisie
{
var $table='facture';
}
?>


A la fin sur ma page index j'aurai bien cela
$facture=Modelsaisie::chargement(ClassFacture);
devWeb
farouk
le 17/03/2011 à 10:27
farouk
Salut l'équipe!
J'ai réussit à regler mon probleme et merci à vous tous. Au fait il fallait que je recupere ma var au niveau du fichier index où j'instancie mes objets et ensuite la retransmettre en POST vers la 2eme fonction et ça marche nikel.
Je vous aime tous smiley
devWeb
LupusMic
le 18/03/2011 à 01:25
LupusMic
Bon, j'espère que ce n'est pas du code en production que tu nous montre là.

Je pense aux injections SQL possibles (mysqli::real_escape_string est ton amie), et les attaques par injection PHP (require "$variable.php" est ton ennemi).
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours