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 :

teste sur la date avant boucle


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut teste sur la date avant boucle
    Bonjour voici mon probleme

    jai une boucle qui insert des données trimestriel (provenant d'un fichier excel) , j'aimerai tester si la date de mon fichier excel n'est pas deja en base , si elle n'est pas en base je peux entrer dans ma boucle et insert . (car le fichier trimestriel a la meme date pour chaque ligne) je ne sais pas comment tester la date sans entrer dans ma boucle.

    Voici mon code qui est fonctionnel mais qui ne teste pas si la date existe deja avant l'insertion


    extract.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
    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
     
    <?php
    include 'includes/global.inc';
    include 'includes/functions.php';
     
    $link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
    mysql_select_db($db) or die("Can not connect.");
     
    if($_FILES)
    {
    	$fichier=basename($_FILES['file']['name']);
    	$ext_fichier=strchr($_FILES['file']['name'],'.');
    	$taille_fichier= filesize($_FILES['file']['tmp_name']);
    }
     
    //upload du fichier
    if($_POST)
    {
    	if (!in_array($ext_fichier,$ext))
    	{
    		$erreur=" ERREUR Doit être au format csv";
    	}
    	if ($taille_fichier>$taille_max)
    	{
    		$erreur=" ERREUR le fichier est trop volumineux";
    	}
     
    	if(file_exists( $rep . $_FILES['file']['name']))
    	{
    		$erreur=" ERREUR le fichier a déjà été uploadé ";
    	}
     
    }
    if(isset($erreur))
    {
    	echo $erreur;
    }
     
     
    if(!isset($erreur))
    {
     
    	if(move_uploaded_file($_FILES['file']['tmp_name'], $rep . $fichier=$_FILES['file']['name']))
    	{
     
    		$handle = fopen ($rep.$fichier,'r');
    		fgetcsv ($handle, 0, ";");
     
    		while ($data = fgetcsv ($handle, 1000, ";"))
    	 {
    	 	//traitement des données
    	 	$data[41] = str_replace('€','',$data[41]);
    	 	$data[2] = implode('-',array_reverse(explode('/',$data[2])));
     
    	 	$periodeconso=$data[0];
    	 	$periodeabonnement=$data[1];
    	 	$datefacture=$data[2];
    	 	$ligne=$data[8];
    	 	$montant=$data[41];
    	 	$montant=str_replace(',','.',$montant.";");
    	 	//insertion en base
     
    	 	$code_retour = insertSfr ($periodeconso,$periodeabonnement,$datefacture,$ligne,$montant);
     
     
    	 }
    	}
    	if ($code_retour)
    	{
    		//	echo 'ok';
    	 exportTocsv ();
    	}
    	else
    	{
    		echo 'Insertion echoue';
    	}
     
    	mysql_close ();
    	fclose ($handle);
    }
    --- fonction.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
    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
    <?php 
    include 'includes/db.inc.php';
    include 'includes/global.inc';
     
    function insertSfr($periodeconso,$periodeabonnement,$datefacture,$ligne,$montant ){
     
    // Préparation de la requete d'insertion
    $sql = "INSERT INTO consomation (periode_conso,periode_abonnement,date_facture,ligne,montant) VALUES ('".$periodeconso."','".$periodeabonnement."','".$datefacture."','".$ligne."','".$montant."')";
    $result= mysql_query($sql);
    if (!$result) {
    		$message = '<b>Invalid query:</b>' . mysql_errno() . '<br>' . mysql_error() . '<br><br>';
    		$message .= '<b>Whole query:</b><br>' . $sql . '<br><br>';
    		$message .= 'ON ' . __FILE__ . ' LINE ' . __LINE__ ; 
    		echo $message;
    		die();
    	}
    	return $result;
    }
     
    function testDate ($datefacture){
    include 'includes/db.inc.php';
    include 'includes/global.inc';
    	$sql = "SELECT date_facture FROM consomation WHERE date_facture ='".$datefacture."'";
     
    	$result = mysql_query($sql);
     
     
    }
     
    //exportation des donnees en csv
     
     
    function exportTocsv (){
     
    include 'includes/db.inc.php';
    include 'includes/global.inc';
     
    $result = mysql_query("SHOW COLUMNS FROM ".$table."");
    $i = 0;
     
    if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
    //$csv_output .= $row['Field'].";";
     
    $i++;}
    }
    //$csv_output .= "\n";
     $values = mysql_query("SELECT * FROM ".$table." WHERE month=".$previousmonth."");
     
    while ($rowr = mysql_fetch_row($values)) {
    for ($j=0;$j<$i;$j++) {
    $csv_output .= str_replace('.',',',$rowr[$j].";");
    }
    $csv_output .= "\n";
    }
     
    $filename = $file."_".date("d-m-Y_H-i",time());
     
    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: csv" . date("Y-m-d") . ".csv");
    header( "Content-disposition: filename=".$filename.".csv");
     
    print $csv_output;
     
    exit;
    }
    /*	
    function testDate ($datefacture){
    	$sql = "SELECT COUNT(date_facture) as count FROM consomation WHERE date_facture ='".$datefacture."'";
    	$result = mysql_query($sql);
    	$count = mysql_result($result,0,'count');
    	return $count;
    }
    */	
    ?>
    --- global
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
        $rep='extract/';   //repertoire d'upload 
    	$taille_max=2097152;	//taille max upload
    	$ext=array('.csv');
    	$today = date("d.m.y");
    	$code_retour = null;
    	$file = 'mp'; // csv name.
    	$csv_output = '';
    	$previousmonth=date("m",strtotime("-1 months"));
    	$currentyear = date("Y");
     
    ?>
    Merci pour votre aide j'espere avoir posté dans la bonne section.

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    si vous avez besoin de plus de précision dite le moi

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    Tu fais une requête cherchant si la date existe en base.

    Après avec un simple test, tu peux savoir si oui ou non tu peux intégrer.

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    oui , dans mon fichier fonction j'ai fais une fonction testDate

    je dois récupérer la date du fichier excel (sachant que pour chaque ligne la date est la meme) et la comparer aux dates de ma base.

    donc si jai bien compris je dois faire deux boucles ?

    la premiere pour verifier si la date n'existe pas

    et une seconde pour faire l'insertion.

  5. #5
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Citation Envoyé par akamaru Voir le message
    donc si jai bien compris je dois faire deux boucles ?

    la premiere pour verifier si la date n'existe pas

    et une seconde pour faire l'insertion.
    Oui je vois pas vraiment d'autre solution, à la limite si la date est la même sur toute les lignes, fait un break dès que tu a récupéré la date une première fois.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Par défaut
    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
    //traitement des données
    	 	$data[41] = str_replace('€','',$data[41]);
    	 	$data[2] = implode('-',array_reverse(explode('/',$data[2])));
     
    	 	$periodeconso=$data[0];
    	 	$periodeabonnement=$data[1];
    	 	$datefacture=$data[2];
    	 	$ligne=$data[8];
    	 	$montant=$data[41];
    	 	$montant=str_replace(',','.',$montant.";");
    	 	//insertion en base
     
                    //évite insertion si date déjà en base et stoppe l’exécution de la boucle
                    if(testDate ($datefacture))
                             break;
    	 	$code_retour = insertSfr ($periodeconso,$periodeabonnement,$datefacture,$ligne,$montant);
    Ce code devrait permettre de sortir de la boucle sans faire d'insertion dans la base à condition de rajouter à la fin de la fonction testDate le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return( mysql_num_rows($result) !== false);
    Par contre ce code affichera normalement: et n'appelera pas exporttocsv donc il reste des ameliorations à y apporter

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    J'ai suivi tes indications glen1789

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      if(testDate ($datefacture))
             break;
     
    	 	$code_retour = insertSfr ($periodeconso,$periodeabonnement,$datefacture,$ligne,$montant);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function testDate ($datefacture){
     
    	$sql = "SELECT date_facture FROM consomation WHERE date_facture ='".$datefacture."'";
     
    	$result = mysql_query($sql);
    	return( mysql_num_rows($result) !== false);
     
    }
    Le probleme est qu'il me retourne toujours "insertion echouee"
    même si je vide ma base.

    aussi je suis pas sur que cela puisse marcher dans mon cas car
    si je fait le test "testDate" dans la boucle d'insertion

    - il va faire le test
    insert ma ligne
    re faire le test et me dire que la date existe deja car pour chaque ligne de mon fichier la date est la même.

    Merci pour votre aide.

  8. #8
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Citation Envoyé par akamaru Voir le message
    aussi je suis pas sur que cela puisse marcher dans mon cas car
    si je fait le test "testDate" dans la boucle d'insertion

    - il va faire le test
    insert ma ligne
    re faire le test et me dire que la date existe deja car pour chaque ligne de mon fichier la date est la même.

    Merci pour votre aide.
    Met un compteur dans ta boucle, comme ca tu fait le test uniquement sur la première boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(testDate($datefacture) && $cpt == 1)
        break;

  9. #9
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Par défaut
    Bonjour,

    C'est normal qu'il renvoie toujours insertion échouée car mon test est bugué! Un = de trop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return( mysql_num_rows($result) != false);

  10. #10
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    j'aurai du y pensé..

    donc j'ai ajouté le compteur

    il arrive a "exportTocsv()" meme si la date est deja en base

    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
          $cpt=0;
    		while ($data = fgetcsv ($handle, 1000, ";"))
    	 {
     
    	 	//traitement des données
    	 	$data[41] = str_replace('€','',$data[41]);
    	 	$data[2] = implode('-',array_reverse(explode('/',$data[2])));
     
    	 	$periodeconso=$data[0]; $periodeabonnement=$data[1]; $datefacture=$data[2];$ligne=$data[8];$montant=$data[41];
    	 	$montant=str_replace(',','.',$montant.";");
     
    	 	$cpt++;
     
    	 	//insertion en base
             if(testDate ($datefacture)&& $cpt == 1)
             break;
     
    	 	$code_retour = insertSfr ($periodeconso,$periodeabonnement,$datefacture,$ligne,$montant);
     
     
    	 }
    	}
    	if ($code_retour)
    	{
     
    	 exportTocsv ();
     
    	}
    	else
    	{
    		header("Location: index.php?echec");
    		exit();
    	}

  11. #11
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Par défaut
    De quel type est ta colonne date_facture en base? Peut-être que la requête SELECT dans testDate ne renvoie jamais rien car incompatibilité de formats, de types?
    Quel base de données est utilisée et dans quel format est stockée la date dans le fichier Excel?

  12. #12
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    j'ai une base mysql champ date_facture type date exemple :2011-07-18

    dans mon fichier excel la date est au format 18/07/2011

    mais dans mon code je change le format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $data[2] = implode('-',array_reverse(explode('/',$data[2])));
    $datefacture=$data[2];

    Merci pour votre aide

  13. #13
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    j'ai fais un echo de mon date_facture il me retourne

    2011-07-18

  14. #14
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Il affiche quoi si tu fait un echo du résultat de la fonction testDate ?

  15. #15
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo testDate($datefacture);
    resultat:

    1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

  16. #16
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    il retourne toujours 1 que la table soit vide ou bien qu'il y est deja la date

  17. #17
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Par défaut
    Si j'en crois ta réponse tu as fait l'écho dans la boucle. Donc l'expression devrait bien s'évaluer à true mais le break n'a pas l'air d'être appelé.
    Peux-tu reposter ton code en entier stp?

  18. #18
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    apres quelque teste maintenant avec ce code j'ai toujours en retour le message d'echec.

    extract.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
    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
    <?php
    include 'includes/global.inc';
    include 'includes/functions.php';
     
    $link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
    mysql_select_db($db) or die("Can not connect.");
     
    if($_FILES)
    {
    	$fichier=basename($_FILES['file']['name']);
    	$ext_fichier=strchr($_FILES['file']['name'],'.');
    	$taille_fichier= filesize($_FILES['file']['tmp_name']);
    }
     
    //upload du fichier
    if($_POST)
    {
    	if (!in_array($ext_fichier,$ext))
    	{
    		header("Location: index.php?extension-fichier");
    		exit();
    	}
    	if ($taille_fichier>$taille_max)
    	{
    		header("Location: index.php?trop-volumineux");
    		exit();
    	}
     
    	if(file_exists( $rep . $_FILES['file']['name']))
    	{
    		header("Location: index.php?deja-up");
    		exit();
    	}
     
    }
     
     
    if(move_uploaded_file($_FILES['file']['tmp_name'], $rep . $fichier=$_FILES['file']['name']))
    {
     
    	$handle = fopen ($rep.$fichier,'r');
    	fgetcsv ($handle, 0, ";");
    	$cpt=0;
    	while ($data = fgetcsv ($handle, 1000, ";"))
    	{
     
    		//traitement des données
    		$data[41] = str_replace('€','',$data[41]);
    		$data[2] = implode('-',array_reverse(explode('/',$data[2])));
     
    		$periodeconso=$data[0];
    		$periodeabonnement=$data[1];
    		$datefacture=$data[2];
    		$ligne=$data[8];
    		$montant=$data[41];
    		$montant=str_replace(',','.',$montant.";");
    		$cpt++;
    		 //echo  $datefacture;
    		 echo testDate($datefacture);
    		//insertion en base
    		if(testDate ($datefacture)&& $cpt == 1)
    		break;
     
    		$code_retour = insertSfr ($periodeconso,$periodeabonnement,$datefacture,$ligne,$montant);
     
     
    	}
    }
     
    if ($code_retour)
    {
     
    	exportTocsv ();
     
    }
    else
    {
    	header("Location: index.php?echec");
    	exit();
    }
     
    mysql_close ();
    fclose ($handle);
     
     
    ?>
    fonction.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
    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
    <?php 
    include 'includes/db.inc.php';
    include 'includes/global.inc';
     
    function insertSfr($periodeconso,$periodeabonnement,$datefacture,$ligne,$montant ){
     
    // Préparation de la requete d'insertion
    $sql = "INSERT INTO consomation (periode_conso,periode_abonnement,date_facture,ligne,montant) VALUES ('".$periodeconso."','".$periodeabonnement."','".$datefacture."','".$ligne."','".$montant."')";
    $result= mysql_query($sql);
    if (!$result) {
    		$message = '<b>Invalid query:</b>' . mysql_errno() . '<br>' . mysql_error() . '<br><br>';
    		$message .= '<b>Whole query:</b><br>' . $sql . '<br><br>';
    		$message .= 'ON ' . __FILE__ . ' LINE ' . __LINE__ ; 
    		echo $message;
    		die();
    	}
    	return $result;
    }
     
    function testDate ($datefacture){
     
    	$sql = "SELECT date_facture FROM consomation WHERE date_facture ='".$datefacture."'";
     
    	$result = mysql_query($sql);
    	return( mysql_num_rows($result) !== false);
     
    }
    function maxDate (){
     
    	$sql = "SELECT MAX (date_facture) FROM consomation";
     
    	$result = mysql_query($sql);
    	if (!$result) {
    		$message = '<b>Invalid query:</b>' . mysql_errno() . '<br>' . mysql_error() . '<br><br>';
    		$message .= '<b>Whole query:</b><br>' . $sql . '<br><br>';
    		$message .= 'ON ' . __FILE__ . ' LINE ' . __LINE__ ; 
    		echo $message;
    		die();
    	}
    	return $maxDate;
     
    }
     
    //exportation des donnees en csv
     
     
    function exportTocsv (){
     
     
     
    $result = mysql_query("SHOW COLUMNS FROM ".$table."");
    $i = 0;
     
    if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
    //$csv_output .= $row['Field'].";";
     
    $i++;}
    }
    //$csv_output .= "\n";
     $values = mysql_query("SELECT * FROM ".$table." WHERE month=".$previousmonth."");
     
    while ($rowr = mysql_fetch_row($values)) {
    for ($j=0;$j<$i;$j++) {
    $csv_output .= str_replace('.',',',$rowr[$j].";");
    }
    $csv_output .= "\n";
    }
     
    $filename = $file."_".date("d-m-Y_H-i",time());
     
    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: csv" . date("Y-m-d") . ".csv");
    header( "Content-disposition: filename=".$filename.".csv");
     
    print $csv_output;
     
    exit;
    }
    /*	
    function testDate ($datefacture){
    	$sql = "SELECT COUNT(date_facture) as count FROM consomation WHERE date_facture ='".$datefacture."'";
    	$result = mysql_query($sql);
    	$count = mysql_result($result,0,'count');
    	return $count;
    }
    */	
    ?>
    global
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
        $rep='extract/';   //repertoire d'upload 
    	$taille_max=2097152;	//taille max upload
    	$ext=array('.csv');
    	$today = date("d.m.y");
    	$code_retour = null;
    	$file = 'mp'; // csv name.
    	$csv_output = '';
    	$previousmonth=date("m",strtotime("-1 months"));
    	$currentyear = date("Y");
     
    ?>

  19. #19
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2009
    Messages : 141
    Par défaut
    Tu n'a pas changé le test dans testDate comme je l'ai expliqué plus haut :
    Bonjour,

    C'est normal qu'il renvoie toujours insertion échouée car mon test est bugué! Un = de trop :
    Code :Sélectionner tout - Visualiser dans une fenêtre à part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return( mysql_num_rows($result) != false);

  20. #20
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 27
    Par défaut
    j'avais pas vu !

    merci

Discussions similaires

  1. Test sur les dates javascript
    Par mjs21 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/06/2008, 10h50
  2. test sur fermeture aperçu avant impression
    Par doli100 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/06/2008, 20h33
  3. Problèmes Test sur des dates
    Par guigui11 dans le forum ASP
    Réponses: 1
    Dernier message: 11/12/2006, 16h18
  4. Test sur une date
    Par Treuze dans le forum Access
    Réponses: 5
    Dernier message: 13/08/2006, 14h10
  5. Mon test sur la date ne marche pas
    Par dachir dans le forum Access
    Réponses: 7
    Dernier message: 12/08/2006, 10h23

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