Variable en php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Variable en php

Re: Variable en php

par Saian » 06 déc. 2012, 19:15

Je ne comprends pas ce que vous avez cherché à faire avec le bout de code que je vous ai montré.
Dans votre exemple, les tests étaient au niveau du $pdf->Row(), alors pourquoi avoir collé mon bout de code au dessus de la requête ? à moins que ce ne soit pour les titres des colonnes mais dans ce cas pourquoi ne pas avoir reproduit la même chose dans le while ? et puis c'est quoi ce $list2[] = '$list3["'.$_GET[$field].'"]'; quel est le but ?

En situation ça donnerait ceci :
$fields = array('nom', 'adresse', 'etc');

/* ici la requête et le mysql_query puis la boucle juste dessous */
while ($line = mysql_fetch_array($result))
{
  $row = array();
  foreach($fields as $field)
    if(isset($_GET[$field]))
      $row[] = $line[$field];
  
  $pdf->Row($row);
}
Pour éviter de tester si les champs doivent être ajoutés à chaque passage dans la boucle, on pourrait d'abord déterminer les champs à afficher :
$fields = array('nom', 'adresse', 'etc');// liste de toutes les colonnes
$fields_display = array();// on initialise un tableau qui va contenir la liste des colonnes à afficher
foreach($fields as $field)// pour chaque colonne
  if(isset($_GET[$field]))// si la colonne doit être affichée
    $fields_display[] = $field;// ajout du nom de la colonne dans la liste des colonnes à afficher

/* ici la requête et le mysql_query puis la boucle juste dessous */
while ($line = mysql_fetch_array($result))
{
  $row = array();// initialisation du tableau avec les données de la ligne
  foreach($fields_display as $field)// pour chaque colonne à afficher
      $row[] = $line[$field];// ajout de la valeur de la colonne dans la ligne
  
  $pdf->Row($row);// ajout de la ligne dans le pdf
}

Re: Variable en php

par guigui69 » 06 déc. 2012, 17:15

Merci pour votre aide mais il y a un élément que je n'arrive pas a comprendre.


$fields = array('nom', 'adresse', 'date','sexe','datecontrat','emploi','classification','type');
$liste = array();
$list2 = array();
foreach($fields as $field)
{
  if(isset($_GET[$field]))
  {
 // echo $_GET[$field].'<br/>';
    $liste[] = $_GET[$field];
	 $list2[] = '$list3["'.$_GET[$field].'"]';
	 }
	 }

$pdf->Row($liste); ==> Ceci affiche les colonnes dans mon PDF
$sqll2="";
$sqll2 .="
SELECT CONCAT(`nom`,' ',`prenom`) as nom,
DATE_FORMAT(date_naissance,'%d/%m/%Y')as`date`,`sexe`,DATE_FORMAT(date_entree,'%d/%m/%Y') as datecontrat, CONCAT(`adresse`,' ',`ville`) as adresse,
DATE_FORMAT(date_sortie,'%d/%m/%Y') as date_sortie,DATE_FORMAT(date_vm,'%d/%m/%Y') as date_vm,DATE_FORMAT(date_debut,'%d/%m/%Y') as date_debut, 
DATE_FORMAT(date_fin,'%d/%m/%Y') as date_fin,nom_emploi as emploi, nom_classification as classification, nom_echelon, nom_contrat as type
FROM XXXXX
WHERE id_concessions='".valid_data($id_concessions)."'";
if(isset($_GET["datecontratexclure"]))
{
$sqll2 .= " AND date_fin = '0000-00-00' ";
}

$sqll2 .=" ORDER BY nom";

$query2= mysql_query($sqll2) or die('erreur');

while ( $list2 = mysql_fetch_array( $query2 ) ) {

$pdf->Row(array($list2["nom"], $list2["adresse"],$list2["date_naissance"],$list2["sexe"],$list2["date_debut"].'-'.$list2["date_fin"],$list2["nom_emploi"],$list2["nom_classification"].'-'.$list2["nom_echelon"],$list2["nom_contrat"],));

 $pdf->Row($list2);

			
}
Ce que je n'arrive pas à faire c'est pour la partie WHILE car le $pdf->Row() dans le WHILE ,c'est la partie qui va récupéré mes données dans ma base mysql et c'est la que j'arrive pas a dire que je veux telle ou telle colonne

Comment faire?

Merci d'avance pour votre aide

guigui69

Re: Variable en php

par Saian » 29 nov. 2012, 22:32

Grosso merdo oui, mais tu peux l'écrire plus simplement en testant les colonnes dans l'ordre et en les ajoutant au fur et à mesure dans un tableau :
$row = array();
if(isset($_POST["nom"]))
  $row[] = $list2["nom"];
if(isset($_POST["adresse"]))
  $row[] = $list2["adresse"];
// etc
$pdf->Row($row);
Pour éviter la répétition des tests isset, tu pourrais préparer un tableau avec le nom de chacun de tes champs :
$fields = array('nom', 'adresse', 'etc');
$row = array();
foreach($fields as $field)
  if(isset($_POST[$field]))
    $row[] = $list2[$field];
$pdf->Row($row);

Re: Variable en php

par guigui69 » 29 nov. 2012, 20:56

Je suis mal exprimé.

J'ai une page web ou je sélectionne a travers des checkbox les colonne que je veux afficher dans mon fichier pdf.

Dans la page php qui va generer mon PDF, j'ai ceci
$pdf->Row(array($list2["nom"], $list2["adresse"],$list2["date_naissance"],$list2["sexe"],$list2["date_debut"].'-'.$list2["date_fin"],$list2["nom_emploi"],$list2["nom_classification"].'-'.$list2["nom_echelon"],$list2["nom_contrat"],));
Cela affiche l'ensemble des colonnes de ma requete SQL.

Et donc je voudrait quand fonction des checkbox cocher cela affiche ou non telle ou telle colonne.

Par exemple si dans ma page de démarrage je coche nom ,adresse , date de naissance.

Est-ce que la seul solution c'est de faire ca avec des if
if(isset($_POST["nom"]) && isset($_POST["adresse"]) && isset($_POST["naissance"]) )
{
$pdf->Row(array($list2["nom"], $list2["adresse"],$list2["date_naissance"],));
}
elseif(isset($_POST["nom"]) && isset($_POST["adresse"]) )
{
$pdf->Row(array($list2["nom"], $list2["adresse"],));
}
else
{
$pdf->Row(array($list2["nom"], ));
}

guigui69

Re: Variable en php

par Saian » 28 nov. 2012, 16:38

A priori tu peux utiliser l'opérateur ternaire (condition ? true : false) :
isset($_GET["nom"]) ? $_GET["nom"] : $list2["nom"];

Variable en php

par guigui69 » 28 nov. 2012, 16:33

Bonjour,

j'ai un problème que je n'arrive pas à résoudre

Je dispose d'une page PHP qui récupérer les information dans une base de donnée et me génère un fichier PDF.

extrait de mon code que je voudrait modifier.
 
$pdf->Row(array($list2["nom"], $list2["adresse"],$list2["date_naissance"],$list2["sexe"],$list2["date_debut"].'-'.$list2["date_fin"],$list2["nom_emploi"],$list2["nom_classification"].'-'.$list2["nom_echelon"],$list2["nom_contrat"],));
Je voudrait avec une fonction if du style
$pdf->Row(array(if(isset($_GET["nom"])) {$list2["nom"] ';}, $list2["adresse"],$list2["date_naissance"],$list2["sexe"],$list2["date_debut"].'-'.$list2["date_fin"],$list2["nom_emploi"],$list2["nom_classification"].'-'.$list2["nom_echelon"],$list2["nom_contrat"],));
Le but est d'afficher uniquement les donnée qui m’intéresse.

Comment y arriver ?

J’espère être clair dans mes explications, sinon dit le moi

Merci d'avance pour votre aide

guigui69