Problème de class en php - PHP - Programmation
Marsh Posté le 01-12-2005 à 17:56:16
je n'ai rien changé, c'est juste pour que ce soit plus clair
edit: c'est du php4 ou php5 ?
Code :
|
Marsh Posté le 01-12-2005 à 18:04:16
ok, alors pour info le constructeur se fait avec function __construct en php5
ps: pour ton problème, mon cerveau refuse de lire le code, il me dit qu'il faut dormir
pps: ca bizarre de voir des echo'<form>' dans tes méthodes (enfin je crois, d'après ma grande expérience de 3 femto secondes en POO)
Marsh Posté le 01-12-2005 à 18:31:27
"(valeurs inconnues)" j'adore les documentations traduites .... mais j'aime pas me prendre la tête pendant des heures pour savoir à quel message de php correspond une traduction donnée.
sebphp > Serait il possible d'avoir le message d'erreur ou d'alerte exact que php t'as affiché?
Marsh Posté le 01-12-2005 à 21:05:14
voici les Warning :
Warning: Missing argument 1 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Warning: Missing argument 2 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Warning: Missing argument 3 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Warning: Missing argument 4 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Warning: Missing argument 5 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Warning: Missing argument 6 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Warning: Missing argument 7 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Warning: Missing argument 8 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Warning: Missing argument 9 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Warning: Missing argument 10 for user() in c:\program files\easyphp1-7\www\tfe\class\class_user.inc.php on line 8
Marsh Posté le 01-12-2005 à 23:47:18
Citation : Création de l'objet avant l'apple de la fonction maj_user($mail) : |
Il est là le problème. La méthode user est considérée (par compatibilité avec PHP 4) comme le constructeur car elle porte le même nom que la class. Elle est donc automatiquement appelée et comme elle a des arguments impératifs, y a problème.
Marsh Posté le 01-12-2005 à 23:51:37
C'est parce que tu ne peux pas appeller le contructeur sans lui donner les paramètres requis. Genre :
class Pouet { |
Si tu l'appelles avec :
$pouet = new Pouet() |
C'est normal qu'il fasse un warning (il devrait même faire une erreur fatale), vu qu'il faut y passer obligatoirement la valeur de $tagada.
Solution, mettre une valeur par défaut :
function Pouet($tagada = NULL) |
Et là plus de warning, vu que tu files pas de valeur il va prendre la valeur par défaut spécifiée (ici NULL).
Marsh Posté le 02-12-2005 à 01:08:44
art_dupond a écrit : ok, alors pour info le constructeur se fait avec function __construct en php5 |
youp,
j'aimerais avoir un avis sur ca (parce que je n'en sais rien en fait mais je trouve ca "moche" )
merci
Marsh Posté le 02-12-2005 à 01:42:05
art_dupond a écrit : youp, |
Mon avis: le traitement c'est le traitement, l'affichage c'est l'affichage... Et une classe sauf si justement elle gère l'affichage, ou qu'une méthode gère l'affichage de la classe, en effet c'est laid.
Mais au final pas plus que les 80% de prog en php de la part de gens qui profitent de la simplicité sans être capable de structurer même un poil de cul la prog
Même avec un seul fichier unique les echo de partout c'est caca pour moi... Et en plus v'la la performance du machin, si certains ont besoin de preuves pas de souci
C'est tellement plus propre d'avoir une chaine et de la vider après... Et puis les tampons c'est une autre histoire mais ça empêche pas de coder proprement
edit: c'est comme, un fichier il a une extension mais au delà de ça un but Donc les fichier mi php mi html beurk...
Si y'a besoin de html on include, sinon c'est que y'a un souci de conception...
Marsh Posté le 02-12-2005 à 08:51:07
function Pouet($tagada = NULL) |
Merci bcp FlorentG, ca fonctionne!!!
Je vois que mes "echo '<FORM>'" vous n'aimez pas...comment puis-je pour utiliser votre méthode?
Marsh Posté le 02-12-2005 à 19:36:56
sebphp a écrit :
|
Bah tu utilises une chaine que tu construis au fur et à mesure
Tu vides à l'affichage au dernier moment Pas par morceau, sur juste de l'affichage ça change rien sauf que c'est pas lisible et l'éventuel débogage bonjour...
Marsh Posté le 02-12-2005 à 23:14:58
function maj_user ($mail)
{
//premet de mettre à jour la db
if (!isset ($_POST["update"]))
---------ici, il ne connait pas le $_POST
function maj_user ($mail,$array_post)
{
....
}
$utilisateur = new user ($mail,$_POST);
il manque la partie qui vérifie les variables NULL,
Marsh Posté le 01-12-2005 à 17:48:27
Bonjour à tous!!
je suis en train de réaliser un site de e-commerce en php. J'utilise donc des class mais je ne m'aîtrise pas encore bien la POO.
Voici ma class user :
<?
class user
{
//attribut
var $nom,$prenom,$adresse,$num,$bp,$cp,$ville,$pays,$mail,$pswd;
//constructeur
function user ($nom,$prenom,$adresse,$num,$bp,$cp,$ville,$pays,$mail,$pswd)
{
$this->nom = $nom;
$this->prenom = $prenom;
$this->adresse = $adresse;
$this->num = $num;
$this->bp = $bp;
$this->cp = $cp;
$this->ville = $ville;
$this->pays = $pays;
$this->mail = $mail;
$this->pswd = $pswd;
}
//méthode
function ajout()
{
//premet d'ajouter un utilisateur dans la db
mysql_query ("INSERT INTO db_users (Nom,Prenom,Adresse,Numero,BP,CP,Ville,Pays,Mail,Pswd) VALUES ('$this->nom','$this->prenom','$this->adresse','$this->num','$this->bp','$this->cp','$this->ville','$this->pays','$this->mail','$this->pswd')" );
}
function mailto()
{
$mail = $this->mail;
$msg = 'Inscription';
$corps = "Vos coordonées :"."\n\n".$this->nom." ".$this->prenom."\n".$this->adresse." ".$this->num." ".$this->bp."\n".$this->cp." ".$this->ville."\n".$this->pays."\n\n"."Votre e-mail : ".$this->mail."\n\n"."Votre mot de passe : ".$this->pswd;
$entete ='Vos données de l\'inscription au site de commerce';
mail ($mail, $msg, $corps, $entete);
}
function maj_user ($mail)
{
//premet de mettre à jour la db
if (!isset ($_POST["update"]))
{
echo "<FORM method = \"POST\" action = \"maj_user.php\">";
echo "Page de mise à jour de vos données<BR><BR>";
$sql = "SELECT * FROM db_users WHERE Mail='$mail'";
$result = mysql_query ($sql);
$row = mysql_fetch_row($result);
for ($i=1;$i!=11;$i++)
{
echo "<input type =\"text\" name = \"$i\" value = \"$row[$i]\"><BR>";
}
echo "<BR><input type = \"submit\" name = \"update\" value = \"Update\">";
echo "</FORM>";
}
else
{
$nom = $_POST['1'];
$prenom = $_POST['2'];
$adresse = $_POST['3'];
$num = $_POST['4'];
$bp = $_POST['5'];
$cp = $_POST['6'];
$ville = $_POST['7'];
$pays = $_POST['8'];
$mail = $_POST['9'];
$pswd = $_POST['10'];
//mise à jour de la db avec les nouvelles valeurs utilisateur
$sql = "UPDATE db_users SET Nom='$nom', Prenom='$prenom', Adresse='$adresse', Numero='$num', BP='$bp', CP='$cp', Ville='$ville', Pays='$pays', Mail='$mail', Pswd='$pswd' WHERE Mail='$mail'";
mysql_query ($sql);
echo "Vos données ont été mise à jour...";
}
}
function sup_user ()
{
//permet de supprimer un utilisateur
}
}
?>
les fonction ajout() et mailto() fonctionne parfaitement le problème se trouve lors de l'utilisation de maj_user($mail), j'ai une erreur à la ligne 8 (valeurs inconnues) mais je ne vois pas comment resoudre le problème...
Création de l'objet avant l'appel de la fonction ajout :
$utilisateur = new user($nom,$prenom,$adresse,$num,$bp,$cp,$ville,$pays,$mail,$pswd);
Création de l'objet avant l'apple de la fonction maj_user($mail) :
$utilisateur = new user ();
Merci de votre aide!