Pb foreach avec classe ( prog objet )

Résolu
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006 - 13 févr. 2006 à 14:34
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 13 févr. 2006 à 22:59
Bonjour j'ai un probleme pour metre a jour mon objet afin de faire un update dur ma table avec des données recupéré d'un formulaire en methode post.

( mon formulaire reprend tout les elements de mon objet )

$update_user = new user(@$_GET['id_user']);

echo form($actions, $update_user);


foreach($_POST as $key => $value)
{
$update_user->$key=$value;
}
$update_user->modification();

ps : voici le resultat d'un print_r appres un new :

<!--StartFragment --> Objet user retourne : user Object ( [id] => 6 [Nom] => [Prenom] => [login] => 6 [pass] => 6 [mail] => 6 [langage] => 0 [group_id] => 2 [societe] => 6 [tarif] => 0 [remise] => 0 )

merci de votre aide !!

vive PHP !!!, vive la prog !!!

13 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 févr. 2006 à 16:51
Je comprends rien lol...

Bon...

<?php

class Foo {

private $aBar = array (
'bar_id' => 0,
'bar_nom' => '',
'bar_prenom' => ''
);

public function __construct ($barId) {
$this -> aBar['bar_id'] ) $barId;
}

public function setPrivate($aBar) {
foreach ($aBar as $clef => $val) {
if (array_key_exists ($clef, $this -> aBar))
$this -> aBar[$clef] = $val;
}
}
}
3
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
13 févr. 2006 à 17:46
"voici le print_r de mon objet a l''instanciation :

Objet user retourne : user Object ( [id] = > 6 [Nom] => [Prenom] => [login] => 6 [pass] => 6 [mail] => 6 [langage] => 0 [group_id] => 2 [societe] => 6 [tarif] => 0 [remise] => 0 )"

Pas normal. Ta classe doit être construite sur ce modèle :

class user {

public $id;
public $login;
public $prenom;
public $pass; // etc...

public function __construct($id=NULL) {
$this->id = $id;
}

public function update() {
$query = 'UPDATE.....';
mysql_query($query);
}

}

Et hop :
$user = new user;
if ( isset($_POST['id']) ) {
$user->id = $_POST['id'];
$user->login = $_POST['login'];
// etc...
$user->update();
}

Et ca marche. Attention, la classe n'est pas gardé à ton changement de page !
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
13 févr. 2006 à 15:16
Salut,

$update_user = new user(@$_GET['id_user']);

hum, if(isset($_GET['id_user']))
{
//ok sinon tu l'as dans l'os
}

Ensuite "voici le resultat d'un print_r" > print_r de quel tableau ? sois plus précis stp

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
13 févr. 2006 à 15:48
Escusez-moi de ne pas avoir été précis !!


Je me re-explique.





Lorsque je fais L'instanciation de ma classe grâce au constructeur de ma classe :




$update_user = new user($îd_user);



Ce qui me renvoie toutes les information sur l’utilisateur en fonction de son id dans un objet.


Le print_r de mon instanciation me donne :




Objet user retourne : user Object ( [id] => 6 [Nom] => [Prenom] => [login] => 6 [pass] => 6 [mail] => 6 [langage] => 0 [group_id] => 2 [societe] => 6 [tarif] => 0 [remise] => 0 )




J’ai un formulairede mise a jour qui affiche toutes ces information, qui son pour certaine ou toutes modifier et renvoyer a la même page par la méthode post.




Ce que je voudraisfaire, c’es demettre a jour mon instanciation afin de retourné mon objet mise a jour a ma classe qui exécuteras la requête de mise a jour.




J’ai procédé de la manière suivante avec une boucle foreach:




// Je récupère toutes les variables post et les insère dans mon objet




foreach ($_POST as $key => $value)


{


$update_user->$$key = addslashes(trim($value));


}






// Puis j’envoie l’objet ainsi modifier a ma fonction modification qui ce chargera de l’insertion en //base




$update_user->modification ();








Voila j’espère avoir été plus claire je débute en prog objet

vive PHP !!!, vive la prog !!!
0

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

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 févr. 2006 à 16:14
Hello,

c'est dangereux ça...
ceci dit, ça va marchouiller. Mais tu ne dis pas quel est ton problème, au juste...?
0
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
13 févr. 2006 à 16:35
et bien, je n'arrive a recupéré dans mon objet $update_user les valeur les valeur a mettre a jour, car le but es de de mettre a jour ma base.

donc je dois revoyé mon objet avec toutes les nouvelles valleurs pour que la fonction modification de ma classe puissent executé correctement ca requette de mise a jour UPDATE.

voila un exemple :
voici le print_r de mon objet a l''instanciation :

Objet user retourne : user Object ( [id] = > 6 [Nom] => [Prenom] => [login] => 6 [pass] = > 6 [mail] => 6 [langage] => 0 [group_id] => 2 [societe] => 6 [tarif] => 0 [remise] => 0 )

l'utilisateur dans le formulaire met a jiur le prenom et le login ( par exemple ) ce squi me donnerais :

Objet user retourne : user Object ( [id] => 6 [Nom] => [Prenom] => frederic
[login] => fred [pass] => 6 [mail] => 6 [langage] => 0 [group_id] => 2 [societe] => 6 [tarif] => 0 [remise] => 0 )

je vous met ma fonction cette objet ainssi modifier et renvoyé la fonction de ma classse pirras mettre a jour ma base.

je vous met ma fonction modification de ma classe au cas ou :

function modification()
{
$querry "UPDATE user SET Nom'".$this->Nom."',Prenom ='".$this->Prenom."', login ='".$this->login."', pass ='".$this->pass."', mail ='".$this->mail."', Societe ='".$this->societe."' where id='".$this->id."'";
$result = querry($querry);

}

et ma foonction querry qui gere la connexion et l'execution de la requette :
function querry ($querry)
{
$host = "localhost";
$base = "base";
$user = "root";
$pwd = "";

$connexion = mysql_connect($host,$user, $pwd);
$db = mysql_select_db($base, $connexion);
$result = mysql_query($querry);
mysql_close($connexion);

return $result;

}

ps : pk dite-vous que cela es dangereux ??

vive PHP !!!, vive la prog !!!
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
13 févr. 2006 à 18:01
Où est l'intérêt d'une prog objet là dedans ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
13 févr. 2006 à 18:21
Aucun ici.
L'utilité d'une classe comme ca est inutile car mal exploitée !

La vraie utilité serait de faire quelque chose comme ca :
http://www.phpcs.com/tutoriaux/GESTION-UTILISATEUR-MEMBRE-VERSION-OBJET_344.aspx
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
13 févr. 2006 à 18:30
Heu... c'est bien codé mais inutile à mon sens de faire de l'objet pour ça ;-) ça ralentit tout inutilement, m'enfin pourquoi pas...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
13 févr. 2006 à 18:43
Personne a dit que l'objet optimisé tout :)

Cependant, c'est bien plus structuré et plus facile niveau maintenabilité !
Après c'est qu'une question de point de vue... et moi j'ai adhéré à l'objet depuis un bon moment :)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
13 févr. 2006 à 18:46
C'est sûr, c'est pas mon cas ^^

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
13 févr. 2006 à 22:48
C'est parce que t'as pas encore vu toutes les possibilités objet, c'est pour ca :)

Ca viendra peut-être un jour lol =)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
13 févr. 2006 à 22:59
Non c'est parce que je ne cède pas à une mode lente et inutile dans mon cas ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0