Page 1 sur 1
mon test ne marche pas
Posté : 24 août 2006, 14:29
par towogy
Hello =)
Ca fait deux jours que je suis sur un test tout simple qui me prend le chou d'une force ....
Je voudrai tout simplement finir mon stage avec tous mes cheveux sur le crane.
Si vous avez une soluce ...
Ma fonction de test
function testFormatEmail(){
$req="select * from newsletter";
$connexion=connexionBD("mgotowy_bd");
$res=mysql_query($req,$connexion) or die (mysql_error());
while($ligne=mysql_fetch_object($res)){
$this->format=$ligne->format;
}
if($this->format=="texte"){//echo "format texte ";
return false;}
if($this->format=="html"){ //echo " format html ";
return true;}
}
Mon index ou je teste le renvoi de ma fonction
$P =& new Newsletter($_POST["idEmail"], array());
$requete="select * from Films where statut='enLigne'";
if($P->testFormatEmail()==false){
$F=& new GalerieNewsTexte($requete,$zone);
$contenu=$F->contenuEmailTexte();
echo "TEXTE";
$c = $P->envoimail($contenu);
}
else{
$F=& new GalerieNewsHtml($requete,$zone);
$contenu=$F->contenuEmailHtml();
echo "HTML";
$c = $P->envoimail($contenu);
}
Merci d'avance =)
Posté : 24 août 2006, 14:49
par iclo
Dis-nous ce qui ne fonctionne pas : résultat attendu et ce que tu obtiens, messages d'erreurs, etc...
Posté : 24 août 2006, 14:50
par @rthur
Bonjour,
Tu as oublié de dire quel est le problème, l'éventuel message d'erreur, etc...
Posté : 24 août 2006, 14:54
par towogy
En fait, c'est une newsletter ...
Dans ma fonction tesFormatEmail, je teste le format voulu par l'abonné. Ensuite dans mon index, je teste le renvoi de la fonction pour envoyer l'email en mode texte ou en mode html.
Malheuresement, l'envoi ne se fait qu'en html.
Il ne prend pas du tout en compte les abonnés en mode texte (et pourtant j'en ai!).
Sinon aucun message d'erreur, il ne rentre pas dans le test de ma fonction, mais pkoi?
Si vous comprenez tout à ce que je raconte ... n'hesitez pas =)
Posté : 24 août 2006, 15:26
par zigz4g
Salut.
Le petit truc qui me surprend c'est la façon de coder. On t'a interdit d'utiliser la touche espace de ton clavier ???
La prochaine fois fait tout ton code en une ligne sans coloration syntaxique, tu comprendra de quoi je parle.
Pour ton problème, il faut que tu regarde la sortie de ta fonction testFormatEmail(). Tu peux faire un var_dump(testFormatEmail()) pour connaitre la bonne valeur de retour.
C'est étonnant mais peut être que tu n'a pas tout mis de ton code.
Tu fais $P->testFormatEmail() mais est-ce que c'est bien un méthode d'un objet ??? Ou est-ce juste une fonction ???
Posté : 24 août 2006, 15:50
par towogy
Euh ... je vois pas ce que tu veux dire, je comprends rien du tout d'ailleurs (des espaces?!).
Sinon des var_dump j'en ai partout... et celui de ma fonction testFormatEmail - dont j'instancie un objet juste au dessus ($P=new newsletter ...) - me renvoie true évidemment.
C'est pour ça que je pense que le probleme se trouve plutot dans ma fonction et non ds mon index ...
Mais bon, après tout je ne suis que debutante (c pour ça que je suis ds ce forom ^^)
Posté : 24 août 2006, 16:33
par zigz4g
Aller voici le petit coup de pouce

Pour les espaces tu vas comprendre avec ce que je vais faire de ton code (cela s'appelle la norme

)
<?php
function testFormatEmail() {
$req = "select * from newsletter";
$connexion = connexionBD("mgotowy_bd");
$res = mysql_query($req, $connexion) or die (mysql_error());
while($ligne = mysql_fetch_object($res)) {
$this->format = $ligne->format;
}
if ($this->format == "texte") { //echo "format texte ";
return false;
}
//--> else if ou else serait mieux, tu choisi.
if ($this->format == "html") { //echo " format html ";
return true;
}
/*
if ($this->format == "texte") {
return false;
}
else {
return true;
}
*/
}
Ne trouve tu pas ton code plus lisible avec des espaces. Je pense que personne ne lisais ton post a cause de la lisibilité de ton code.
Posté : 24 août 2006, 16:40
par towogy
Mmh moui ... surement , j'en suis convaincue. Je code façon crade mais je m'y retrouve a peu pres en general =)
Mais bon, ça resout pas mon probleme ^^
aaaaaaaaaahhhhhhhh, je veux une reponse euh

Posté : 24 août 2006, 16:53
par zigz4g
while($ligne = mysql_fetch_object($res)) {
$this->format = $ligne->format;
}
Avec cette boucle, tu obtiendras toujours que la derniere ligne de tes enregistrements de ta BDD.
Si tu as une table qui contient des newsletters ("select * from newsletter"; )
tu vas boucler jusqu'a la fin et ton $this->format aura seulement le dernier enregistrement.
Fait peut etre autrement ou essaye avec ce petit bout de code A ADAPTER :
function testFormatEmail($id_user) {
$req = "select * from newsletter where id_user = ".$id_user;
$connexion = connexionBD("mgotowy_bd");
$res = mysql_query($req, $connexion) or die (mysql_error());
while($ligne = mysql_fetch_object($res)) {
$this->format = $ligne->format;
}
if ($this->format == "texte") {
return false;
}
else {
return true;
}
}
Posté : 24 août 2006, 16:54
par zigz4g
aaaaaaaaaahhhhhhhh, je veux une reponse euh Crying or Very sad

Posté : 24 août 2006, 17:16
par towogy
Merci (d'etre patient).
Re-mon code, qui me renvoie toujours la valeur de ma derniere ligne (en effet ct ça)
function testFormatEmail(){
$req="select * from newsletter";
$connexion=connexionBD("mgotowy_bd");
$res=mysql_query($req,$connexion) or die (mysql_error());
while($ligne=mysql_fetch_object($res)){
$this->idEmail=$ligne->idEmail;
$this->email=$ligne->email;
var_dump($this->idEmail);
$req2="select * from newsletter where idEmail='{$this->idEmail}'";
$res2=mysql_query($req2,$connexion) or die (mysql_error());
while($ligne=mysql_fetch_object($res2)){
$this->format=$ligne->format;
var_dump($this->format);
}
}
if($this->format=="texte"){echo "format texte ";
$retour="texte"; return $retour;
}
elseif($this->format=="html"){ echo " format html ";
$retour2="html"; return $retour;
}
(en esperant que le code soit pas pourri =)
J'ai fait une première requete pour obtenir le idEmail, puis une autre pour boucler sur tous mes abonnés, mais rien n'y fait, il me renvoie toujours "html" (valeur du format de mon dernier abonné enregistré).

Posté : 29 août 2006, 15:10
par zigz4g
Je ne comprend pas trop ton obsession de vouloir garder ton code.
Tu fais une boucle sur tes clients et tu essaye TOUJOURS de garder la dernière valeur de ta boucle. Quel est l'intéret ?
Je te proposais de faire une petite fonction qui te disais si oui ou non ton client voulais une newsletter en html ou texte.
Il ne te manquais plus qu'a faire une boucle dans une fonction style
ou dedans tu boucle sur les id des clients.
<?php
function testFormatEmail($id_user) {
$req = "select * from newsletter where id_user = ".$id_user;
$connexion = connexionBD("mgotowy_bd");
$res = mysql_query($req, $connexion) or die (mysql_error());
while($ligne = mysql_fetch_object($res)) {
$this->format = $ligne->format;
}
if ($this->format == "texte") {
return false;
}
else {
return true;
}
}
public function sendMail()
{
$req = "select * from newsletter";
$connexion = connexionBD("mgotowy_bd");
$res = mysql_query($req, $connexion) or die (mysql_error());
while($client = mysql_fetch_object($res)) {
if (testFormatEmail($client->id_client)) {
echo 'J\'envois le mail en HTML';
}
else {
echo 'Mail texte';
}
}
}
?>
Bon j'utilise rarement mysql_fetch_object() donc verifi comment acceder a ton id_client.
En esperant te donner un nouveau depart ou une solution.
Attention aussi a se code car il n'est pas optimise.