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

PHP & Base de données Discussion :

impossible décrire dans un fichier en php


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    intégrateur
    Inscrit en
    Janvier 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : intégrateur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 20
    Par défaut impossible décrire dans un fichier en php
    Bonjour,

    je crée un fichier depuis mon code en php et ensuite je souhaite écrire dans ce fichier le résultat d'une requête sql. Mon fichier reste désespérant vide. J'ai l'impression que c'est un problème de droit sur le fichier qui à été créer par www-data. Du coup, j'ai mis www-data dans mon groupe utilisateur qui est aussi dans le groupe root mais sans succès. Même si j’essaye d'écrire à la main dans ce fichier créer par www-data.

    voici mon environnement:
    - Ubuntu 12.04 LTS
    - php 5.3.10
    - apache 2.2.22

    voici le code pour la création du fichier et son "remplissage"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $fp = fopen( $file, 'w+');
    ...
    while( $row =  $reponse->fetch()){
    				fwrite( $fp, "test dans la boucle while");
     
    			}
     
    			fwrite( $fp, "test en dehors de la boucle while");

    quelqu'un à déjà rencontrer ce problème?

  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
    Par défaut
    Ton fichier est créé par www-data mais c'est aussi www-data qui veut écrire dedans.
    S'il y avait un problème de droits, tu aurais une erreur ... consulte peut être ton log d'erreurs.

    As-tu fais un test basique ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fp = fopen('unfichier.txt', 'w+');
    fwrite( $fp, "test");
    fclose($fp);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    intégrateur
    Inscrit en
    Janvier 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : intégrateur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 20
    Par défaut
    Merci pour ta réponse sabotage

    oui si je fait ce simple test je peux écrire dans le fichier. Mais pourtant dans mon exemple si ma réponse (qui est une requête sql) est null je ne parcours pas ma liste mais je dois quand même écrire dans mon fichier : fwrite( $fp, "test en dehors de la boucle while");

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Comme tu ne montres qu'un extrait "choisi" de ton code... que dire de plus ? ...

  5. #5
    Membre averti
    Homme Profil pro
    intégrateur
    Inscrit en
    Janvier 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : intégrateur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 20
    Par défaut
    ok voici le code complet

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
                    ini_set('display_errors', true);
    		error_reporting(E_ALL);
     
     
    	//if(ISSET($_POST['listSource']) AND ISSET($_POST['listTable']) AND ISSET($_POST['listData']) AND ISSET($_POST['start']) AND ISSET('stop'))	{
    		$listSupervision = $_POST['listSupervision'];
    		$listZone = $_POST['listZone'];
    		$listData = $_POST['listData'];
    		$startDate = $_POST['startDate'];
    		$stopDate = $_POST['stopDate'];
    		$startHeure = $_POST['startHeure'];
    		$stopHeure = $_POST['stopHeure'];
    		$resolution = $_POST['resolution'];
    		$mode = $_POST['mode'];
    		$version = $_POST['version'];
    		$file = $_POST['file'];
    		$wwResolution = 0;
    		$reponse = "";
    		//$test = false;
     
    		$fp = fopen( "$file", 'w+');
     
    		$fp2 = fopen('unfichier.csv', 'w+');
    		fwrite( $fp2, "test");
    		fclose($fp2);
     
    		switch ( $resolution){
    			case "seconde":
    				$wwResolution = 1000;
    				break;
    			case "minute":
    				$wwResolution = 60*1000;
    				break;
    			case "heure":
    				$wwResolution = 60*1000*60;
    				break;
    			case "jour":
    				$wwResolution = 60*1000*60*24;
    				break;
    			default:
     
    		}
     
    		$start = $startDate . " " . $startHeure;
    		$stop = $stopDate . " " . $stopHeure;
     
    		if( $listZone=="Sige" ){
     
    			try{
    				$bdd = new PDO('odbc:driver=freetds;servername=mssql;dabase=Runtime', 'xxx','xxx');
    				$reponse = $bdd->query('SELECT DateTime=convert(nvarchar, DateTime, 20),TagName,Value FROM Runtime.dbo.History WHERE Runtime.dbo.History.TagName LIKE '. "PLB_AUXI_183_BF_183_01.Debit" .' AND wwResolution=1000 AND  wwRetrievalMode='."average".'  AND  wwVersion='."latest".'  AND DateTime>='."2017-30-03 08:00:00".'  AND DateTime<='."2017-31-03 08:00:00".';  ');
    				echo '<p>'.$reponse.'</p>';
    			} catch( Exception $e){
    				print $e;
     
     
    			}
     
     
     
    			$reponse->setFetchMode(PDO::FETCH_ASSOC);
     
     
    			while( $row =  $reponse->fetch()){
    				//print '<p>'.$row['TagName'].'</p>';
                                    //fputcsv( $fp, $row);
    				fwrite( $fp, "test dans la boucle while");
     
    			}
     
    			fwrite( $fp, "test en dehors de la boucle while");
     
    		} else if( $listZone=="Abels"){
     
    			try{
    				$bdd = new PDO('mysql:host=localhost;dbname=sige_export;charset=utf8', 'xxx','xxx');
    				$reponse = $bdd->query('SELECT * FROM data_SMP0  order by id asc limit 10');
     
    			} catch( Exception $e){
    				print $e;
     
    			}
     
     
     
    			$reponse->setFetchMode(PDO::FETCH_ASSOC);
     
     
    			while( $row =  $reponse->fetch()){
    				fputcsv( $fp, $row);
     
    			}
     
    		}
     
     
    		fclose($fp);
     
    		$id = session_id();
    		//$n_id = $_SESSION['xxx'];
     
    		//print '<p>session id: ' . $n_id . '</p>';
     
    		sleep(30);
     
    		header('Refresh:2;/config/export_file_csv.php?id=' . $id);
     
     
    ?>
    le but est l'export de données qui peuvent venir de 2 bases de données différentes et d'écrire le résultat dans un fichier csv. Le code est en test il n'est pas terminé, pour l'instant je me concentre sur la première base de données qui est une base de données temps réel ce qui explique les paramètres supplémentaires.

    merci pour votre aide

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bon.

    1/ On constate :
    • aucune gestion d'erreur (les $_POST ne sont pas vérifiés, ni $file, ni $listZone par exemple)
    • aucun test de réussite des requêtes ( if($reponse){ ... } )




    2/ On suppose que tu as fait TOUT le DEBOGAGE de base ?

    • vérifié les variables ? (var_dump($_POST); echo $variable; ...)
    • vérifé les requêtes ? (dans PHPmyadmin, par exemple)
    • mis des echo 'OK'; dans le code, pour voir s'il passait bien aux endroits voulus (dans les if(...), les while(...),...)
    • ...


    Oui ? Non ?

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

Discussions similaires

  1. [Joomla!] Passer une valeur d'un fichier templateDétails template "index.php" dans un fichier "index.php
    Par jacma dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 02/02/2015, 10h29
  2. Recherche dans un fichier impossible enregistré dans un fichier
    Par cdjkhdjlhxjklnjskznj dans le forum Langage
    Réponses: 19
    Dernier message: 03/12/2014, 00h09
  3. [SimpleXML] formulaire de recherche dans un fichier XML php
    Par oualid4ever dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/01/2013, 09h54
  4. [MySQL] Injection php dans le fichier index.php
    Par heretik25 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 01/04/2012, 16h08
  5. Réponses: 3
    Dernier message: 03/08/2011, 15h06

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