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

Langage PHP Discussion :

Retroanalyse : identification d'un array pour générer un csv


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Mut
    Mut est déconnecté
    Membre éprouvé Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Par défaut Retroanalyse : identification d'un array pour générer un csv
    Bonjour,

    Je dois générer un fichier csv à partir du résultat d'une requête et je ne retrouve pas dans le code ci-dessous la variable de type array que je pourrais utiliser pour générer mon csv via la fonction "fputcsv" :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    $query = "SELECT * FROM stock_livraison ".$innerjoin." WHERE 1=1 ".$where_recipient." ".$where_like." ".$where_date." ".$groupby." ORDER BY date_note DESC, loga_ref = REPLACE (loga_ref,'/','1') ASC";
    $tot_enregistrement=$sql->QueryItem("SELECT count(1) FROM stock_livraison ".$innerjoin." WHERE 1=1 ".$where_recipient." ".$where_like." ".$where_date." ORDER BY date_note DESC, loga_ref = REPLACE (ref,'/','1') ASC");
    $query.=" LIMIT ".$limit_deb.",".$nb_affichage_par_page."";
    if($sql->Exists($query)){
    	$sql->Query($query);
    	for ($i=0; $i<$sql->rows; $i++){
    		$sql->GetRow($i);
    		$sql->data=clean_affich($sql->data);
    		$sql->data['loga_ref']=str_replace("-","/",$sql->data['loga_ref']);
    		if($i%2 == 0)
    			$sql->data['class']="paire";
    		else
    			$sql->data['class']="impaire";			
    		//Status
    		$query2="SELECT * FROM stockr WHERE id_stock='".$sql->data['id_stock']."'";
    		if($sql2->Exists($query2)){
    			$sql2->Query($query2);
    			for ($j=0; $j<$sql2->rows; $j++){
    				$sql2->GetRow($j);
    				$sql2->=clean_affich($sql2->data);
    				if($sql2->data['status']=='1'){
    					$sql->data['status_image']="green";
    					$sql->data['awb']=$sql2->data['awb'];
    					$sql->data['hawb']=$sql2->data['hawb'];
     
    				}
    				else{
    					$sql->data['status_image']="red";
    					$sql->data['awb']="EN ATTENTE";
    				}	
    			}
    		}
    		//colis
    		$query2="SELECT * FROM stock_colis WHERE id_stock='".$sql->data['id_stock']."'";
    		if($sql2->Exists($query2)){
    			$sql2->Query($query2);
    			for ($j=0; $j<$sql2->rows; $j++){
    				$sql2->GetRow($j);
    				$sql2->data=clean_affich($sql2->data);
    				$sql->data['number']=$sql2->data['number'];
    				$colis = explode("-", $sql2->data['parcel_no']);
    				if(count($colis)<=16)
    					$parse_parcel_id_view_more=0;	
    				else
    					$parse_parcel_id_view_more=1;	
    				for($jj=0;$jj<count($colis);$jj=$jj+4){
    					if($jj<=15){
    						if(isset($colis[$jj]) && isset($colis[$jj+1]) && isset($colis[$jj+2]) && isset($colis[$jj+3]))
    							$sql->data['no_affich'].=$colis[$jj]." - ".$colis[$jj+1]." - ".$colis[$jj+2]." - ".$colis[$jj+3]."<br>";
    						elseif(isset($colis[$jj]) && isset($colis[$jj+1]) && isset($colis[$j+2]) && !isset($colis[$jj+3]))
    							$sql->data['no_affich'].=$colis[$jj]." - ".$colis[$jj+1]." - ".$colis[$jj+2]."<br>";
    						elseif(isset($colis[$jj]) && isset($colis[$jj+1]) && !isset($colis[$j+2]))
    							$sql->data['no_affich'].=$colis[$jj]." - ".$colis[$jj+1]."<br>";
    						elseif(isset($colis[$jj]) && !isset($colis[$jj+1]))
    							$sql->data['no_affich'].=$colis[$jj]."<br>";
    					}
    				}
    			}
    			$sql->data['id']=$sql->data['no_affich'];
    		}
     
    		//AFFICHAGE 
    		$xtpl2->assign("DATA", $sql->data);
    		if(!empty($parse_parcel_id_view_more)) $xtpl2->parse("main.table_result.ligne.parcel_id_view_more");		
    		$xtpl2->parse("main.table_result.ligne");
    	}
     
    }
    La fonction assign se présente comme ça :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    public function assign ($name, $val = '', $reset_array = true) {
     
            if (is_array($name)) {
     
                foreach ($name as $k => $v) {
     
                    $this->vars[$k] = $v;
                }
            } elseif (is_array($val)) {
     
                // Clear the existing values
                if ($reset_array) {
                    $this->vars[$name] = array();
                }
     
                foreach ($val as $k => $v) {
     
                    $this->vars[$name][$k] = $v;
                }
     
            } else {
     
                $this->vars[$name] = $val;
            }
        }
    Mon but étant de générer ce tableau en fichier csv également...

    Si quelqu'un a une idée...

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    ton tableau est la variable $vars de la classe.

  3. #3
    Mut
    Mut est déconnecté
    Membre éprouvé Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Par défaut
    Bonsoir Tsilefy,

    Merci de ta réponse.

    J'ai donc suivi tes conseils et essayer de sortir mon csv via ce tableau mais sans succès :

    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
    18
    19
     
     
    $chemin = 'fichier.csv';
    $delimiteur = ';'; // Pour une tabulation, utiliser $delimiteur = "t";
     
    $fichier_csv = fopen($chemin, 'w+');
    fprintf($fichier_csv, chr(0xEF).chr(0xBB).chr(0xBF));
     
    // Boucle foreach 
    foreach(array($vars) as $ligne){
     
    	fputcsv($fichier_csv, $ligne, $delimiteur);
     
    }
     
    // fermeture du fichier csv
    fclose($fichier_csv);
     
    ?>
    La variable $vars semble vide alors que j'ai des données retournées par la requête.
    Effectivement, j'ai bien une variable public $vars dans la classe "xtemplate" définie ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        public $vars = array();
    J'ai du louper quelque chose...?

    Merci

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Tu dois donc utiliser et pas $var

  5. #5
    Mut
    Mut est déconnecté
    Membre éprouvé Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($xtpl2->vars) as $ligne){
     
    	fputcsv($fichier_csv, $ligne, $delimiteur);
     
    }
    ne me renvoie rien non plus... J'arrive à afficher quelque chose quand je passe directement par la requête, mais cela ne correspond pas tout à fait à l'affichage du tableau final.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    - Avant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xtpl2->assign("DATA", $sql->data);
    , teste la valeur de $sql->data avec var_dump() pour voir s'il y a quelque chose dans cette variable.

    - Que fait la méthode parse()? Est-ce qu'elle est susceptible de modifier $xtpl2->vars ? Je vois qu'elle est appelée deux fois après assign()

Discussions similaires

  1. Importation de base access pour générer un csv
    Par jmlabatut dans le forum VBA Access
    Réponses: 0
    Dernier message: 19/11/2009, 17h03
  2. [CSV] Code PHP pour générer un CSV
    Par Décibel dans le forum Langage
    Réponses: 4
    Dernier message: 16/05/2009, 20h18
  3. Librairies gratuites pour générer du PDF
    Par Noxexplorer dans le forum ASP
    Réponses: 2
    Dernier message: 02/05/2005, 20h18
  4. Quel outil UML (industriel) pour générer du code C# ?
    Par matsri2003 dans le forum Outils
    Réponses: 3
    Dernier message: 17/01/2005, 13h45

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