IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[FPDF] IF et else pas pris en compte


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut [FPDF] IF et else pas pris en compte
    Bonsoir,

    J'essaie de générer un tableau avec fpdf mais les cellules vide restent visible, et ce malgré mes essais pour les faire disparaitrent avec des conditins IF et ELSE.

    J'ai essayé empty, isset, variable vide, variable pleine mais rien n'y fait... Le code se comporte comme si ils n'y avait pas de conditions.

    code php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $sql_fact = "SELECT * FROM facture WHERE id_client_facture = '".$_POST['modifier_client']."'";
    $sql_fact = mysql_query ($sql_fact) or die (mysql_error()); 
    $data_fact = mysql_fetch_array($sql_fact);
     
    if($_POST['facture1']=="0"){$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);}
    else{$pdf->Cell(120,5,$data_fact['facture_data19'],1,0);$pdf->Cell(20,5,$data_fact['facture_data36'].' '.EURO,1,0,'R');$pdf->Cell(15,5,$data_fact['facture_data54'],1,0,'C');$pdf->Cell(25,5,$data_fact['facture_data1'].' '.EURO,1,1,'R');}
    if($_POST['facture2']=="0"){$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);}
    else{$pdf->Cell(120,5,$data_fact['facture_data20'],1,0);$pdf->Cell(20,5,$data_fact['facture_data37'].' '.EURO,1,0,'R');$pdf->Cell(15,5,$data_fact['facture_data55'],1,0,'C');$pdf->Cell(25,5,$data_fact['facture_data2'].' '.EURO,1,1,'R');}
    if($_POST['facture3']=="0"){$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);}
    else{$pdf->Cell(120,5,$data_fact['facture_data21'],1,0);$pdf->Cell(20,5,$data_fact['facture_data38'].' '.EURO,1,0,'R');$pdf->Cell(15,5,$data_fact['facture_data56'],1,0,'C');$pdf->Cell(25,5,$data_fact['facture_data3'].' '.EURO,1,1,'R');}
    if($_POST['facture4']=="0"){$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);}
    else{$pdf->Cell(120,5,$data_fact['facture_data22'],1,0);$pdf->Cell(20,5,$data_fact['facture_data39'].' '.EURO,1,0,'R');$pdf->Cell(15,5,$data_fact['facture_data57'],1,0,'C');$pdf->Cell(25,5,$data_fact['facture_data4'].' '.EURO,1,1,'R');}
    if($_POST['facture5']=="0"){$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);}
    else{$pdf->Cell(120,5,$data_fact['facture_data23'],1,0);$pdf->Cell(20,5,$data_fact['facture_data40'].' '.EURO,1,0,'R');$pdf->Cell(15,5,$data_fact['facture_data58'],1,0,'C');$pdf->Cell(25,5,$data_fact['facture_data5'].' '.EURO,1,1,'R');}
    if($_POST['facture6']=="0"){$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);}
    else{$pdf->Cell(120,5,$data_fact['facture_data28'],1,0);$pdf->Cell(20,5,$data_fact['facture_data41'].' '.EURO,1,0,'R');$pdf->Cell(15,5,$data_fact['facture_data59'],1,0,'C');$pdf->Cell(25,5,$data_fact['facture_data6'].' '.EURO,1,1,'R');}
    Bon je sait que c'est pas la meilleurs façon de générer un tableau mais c'est la seul façon que je connaisse....

    merci d'avance pour vos réponse.

    Roland

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu veux dire quoi par "restent visibles" ? Tu rentres dans le cas Else ou bien tu as un cellule sans rien dedans ?

    Utilise var_dump() pour voir ce que contient une variable réellement.

    Il faudrait sérieusement penser a faire des boucles et présenter ton code proprement, c'est illisible actuellement.
    Pour cela, pense a utiliser des champs de formulaire en tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="facture_data[36]"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 154
    Points : 282
    Points
    282
    Par défaut
    En dehors de ce qu'à déjà dit Sabotage (tu devrai vraiment écouter ses conseils), moi ce que je ne comprends pas, c'est pourquoi tu te plains d'avoir des cellules vides. C'est exactement ce que tu demande à FPDF:
    Ce code affiche bien une cellule vide. Si tu ne veux pas qu'elle soit visible, je dirai qu'il te suffit de ne pas demander à FPDF de l'afficher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($_POST['facture1']!="0"){
        $pdf->Cell(120,5,$data_fact['facture_data19'],1,0);...
    }
    if($_POST['facture2']!="0"){
        $pdf->Cell(120,5,$data_fact['facture_data20'],1,0);...
    }
    Soit dit en passant -et comme le soulignait Sabotage-, ta syntaxe est absolument immonde.
    Quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $nF=0;//N° de facture (de ligne?)
    while($nF<6){
        $nF++;
        if($_POST['facture'.$nF]!="0"){
            //pour ton cas particulier
            if($nF==6)
                    $pdf->Cell(120,5,$data_fact['facture_data28'],1,0);
            else
                    $pdf->Cell(120,5,$data_fact['facture_data'.($nF+18)],1,0);
            $pdf->Cell(20,5,$data_fact['facture_data'.($nF+35)].' '.EURO,1,0,'R');
            $pdf->Cell(15,5,$data_fact['facture_data'.($nF+53)],1,0,'C');
            $pdf->Cell(25,5,$data_fact['facture_data'.$nF].' '.EURO,1,1,'R');
        }
    }
    serait tout de même beaucoup moins verbeux et beaucoup plus clair. Ce qui n’empêche pas qu'une syntaxe en tableau serait plus appropriée.
    D'une manière générale, on a inventé la machine pour faire les trucs chiants que l'homme n'aimait pas faire (et donc là ou il risquait de faire des erreurs). A fortiori avec l'ordinateur pour faire des calculs (c'est chiant les calculs, moi si tu me dis 12*9=? et bien je prends une calculette). Pourquoi vouloir toi-même faire le boulot chiant (et les erreurs, et d'ailleurs si ton "cas particulier" vu plus haut était une erreur de saisie, ce serait un cas d'école magistral). Soit fainéant, tu vivra longtemps (réfléchit un peu à comment tu peux déléguer le boulot chiant à la machine, en écrire le moins possible). Dis toi que le niveau de compétences d'un développeur est inversement proportionnel à la verbosité de son code, donc proportionnel à la taille du poil qui est dans sa main.
    @+
    Piero

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    Merci pour vos réponses et je prend bonne note de vos conseils.
    Mon pb. est que si j'envoie rien ou un champ vide (sans données quoi...) il ne faut qu'il soit affiché théoriquement...

    exe:
    je post
    cell1:a=1,
    cell2:b=1,
    cell3:c= rien,
    cell4:d=1
    etc...

    donc avec les conditions IF , ELSE, etc je devrais avoir comme résultat :
    cell1:1
    cell2:1
    cell4:1
    (cell3 ne doit pas être visible puisque je n'ai rien envoyé ou du moins ct vide) et bien non... cell3 reste visible quoi que je fasse...
    Mais je continue et je cherche un autre moyen pour générer mon code (plus propre)

    Merci

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est quoi une cellule "pas visible" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 154
    Points : 282
    Points
    282
    Par défaut
    Je comprends rien ou tu as pas lu ma réponse?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Vous n'avez pas compris mon exemple plus haut ?

    Que la variable en post soit 1 ou 0 mon code ne tient pas compte de sa valeur...

    Mais bon... Merci quant même pour vos conseil et je vais appliquer la méthode de BPiero pour construire le tableau.

    Cordialement

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 154
    Points : 282
    Points
    282
    Par défaut non on a pas compris
    C'est pas possible...
    Tu veux donc dire que dans tous les cas ton tableau généré comprends les lignes dont les numéros de facture étaient à 0 en POST?
    Dans ce cas elles devraient être pleines, ou avec un zéro dedans.
    Je pense que c'est toi qui n'a pas bien compris, ni ton propre code, ni mes explications.
    Reprenons:
    Tu gardes ton code du début.
    Tu fait le test suivant: remplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($_POST['facture1']=="0"){$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);$pdf->Cell(0,0,'',0,0);}
    par ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $_POST['facture1']="0";
    if($_POST['facture1']=="0"){
        $pdf->Cell(0,0,'Mon POST est bien à 0',0,0);
        $pdf->Cell(0,0,'Mon POST est bien à 0',0,0);
        $pdf->Cell(0,0,'Mon POST est bien à 0',0,0);
        $pdf->Cell(0,0,'Mon POST est bien à 0',0,0);
    }
    Et tu fais un test
    Puis, tu vire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['facture1']="0";
    Et tu fais un test avec ton formulaire en mettant facture1 à 0 via ton formulaire.
    Et tu me dis ce que ça donne.
    Peut-être que tu vas comprendre.
    @+
    Piero

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    ok merci !
    $_POST['facture1'] à toujours une valeur dedans !!!
    C'est pour ça que mes conditions fonctionnent pas !
    Bon j'ai plus qu'a tout vérifier...
    Je met résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.2] Mon else n'est pas pris en compte
    Par beegees dans le forum Langage
    Réponses: 2
    Dernier message: 14/05/2009, 09h16
  2. getline(cin,s) pas pris en compte ?
    Par FinalSpirit dans le forum SL & STL
    Réponses: 3
    Dernier message: 19/01/2006, 01h18
  3. [Mail] Les sauts de lignes pas pris en compte
    Par Anduriel dans le forum Langage
    Réponses: 15
    Dernier message: 14/12/2005, 19h13
  4. [Plugi][phpeclipse] point d'arrêt pas pris en compte
    Par damjal dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 22/11/2005, 23h58
  5. Mon script cron n'est pas pris en compte
    Par tomnie dans le forum Linux
    Réponses: 11
    Dernier message: 31/03/2004, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo