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 :

Insertion dans une base de données [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut Insertion dans une base de données
    Salut,
    Mon programme consiste a faire une mise a jour d'une base de donnée a partir d'un fichier texte au format csv. la mise a jour se fait normalement mais j'ai tout juste ajouté une autre condition pour que mon programme soit un peu complet. cette condition consiste a détecter une nouvelle ligne dans mon fichier texte et l'insère dans ma base de donnée. j'ai écrit le code et semble intact mais en compilant je reçois l'erreur suivante:
    Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\EasyPHP 2.0b1\www\fini_ress2.php on line 39
    voila mon code:
    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
    <?php
    mysql_connect("localhost", "root", ""); 
    mysql_select_db("tuniproject"); 
    $reponse = mysql_query("SELECT * FROM ressources");
    $monfichier = fopen("ressources.txt", "r+");
    $repdeb="med";
    while ($repdeb!="UNIT" or $repdeb<0 or $repdeb>500)
    {
        $ligne = fgets($monfichier);
        $array_chaine = explode(';', $ligne); 
        $repdeb=$array_chaine[0];
    }
    $array_chaine[1]="PHYS_STATE";
    $ligne = fgets($monfichier);
    while ($donnees = mysql_fetch_array($reponse))
    {
    $array_chaine1 = explode(';', $ligne); 
    if ($array_chaine1[1] != $donnees['PHYS_STATE'])
    {
        echo "changement du statut physique ".$donnees['PHYS_STATE']." en ".$array_chaine1[1]." dans ".$donnees['UNIT']."<br />";
    	mysql_query('UPDATE ressources SET PHYS_STATE="'.$array_chaine1[1].'" WHERE id="'.$donnees['id'].'"');
    }
    if ($array_chaine1[2] != $donnees['LOCATION'])
    {
        echo "changement de la location ".$donnees['LOCATION']." en ".$array_chaine1[2]." dans ".$donnees['UNIT']."<br />";
    	mysql_query('UPDATE ressources SET LOCATION="'.$array_chaine1[2].'" WHERE id="'.$donnees['id'].'"'); 
    }
    $ligne = fgets($monfichier);
    }
    $test=$ligne!="";
    if ($test=true)
    {
    $comp=$donnees['id']+1;
    }
    while ($ligne!="")
    {
    $array_chaine1 = explode(';', $ligne); 
    mysql_query('INSERT INTO ressources VALUES('.$comp.','.$array_chaine1[0].','.$array_chaine1[1].','.$array_chaine1[2].')');
    $comp++;
    }
    mysql_close(); 
    fclose($monfichier);
    ?>
    j'ai ajouté la variable $comp pour inserer mon id qui ne figure pas dans le fichier de mise a jour.
    merci.

  2. #2
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Par défaut
    hello

    Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\EasyPHP 2.0b1\www\fini_ress2.php on line 39
    j'ai copié de <?php jusqu'à ?> dans mon BBEDIT favori, la ligne 39 étant :
    pourrais-tu faire un echo ou autre de "$ligne" juste avant la ligne 35 ?
    vu que quelque chose part en boucle, si je comprend bien dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($ligne!="")
    {
    $array_chaine1 = explode(';', $ligne);
    mysql_query('INSERT INTO ressources VALUES('.$comp.','.$array_chaine1[0].','.$array_chaine1[1].','.$array_chaine1[2].')');
    $comp++;
    }
    également, mais je ne suis pas un pro de PHP,
    que signifie
    $test=$ligne!="";
    cela ne m'est pas familier (je sens que je vais apprendre un truc super grave !).

    j'espère ne pas avoir été trop idiot et que mes lignes aideront.

    Douce journée
    Pat

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Vérifie si tu n'as pas de boucle infinie dans ton code.
    Sinon ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('max_execution_time','0');
    Le paramètre 0 dit que le script peut tourne durant un temps infinie (en seconde), mais tu peux le modifier à ton besoin.

  4. #4
    Membre éclairé Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut
    merci pour vos réponses.
    @cholopat:
    seule la dernière boucle while qui bug le code, si je l'enlève il marche normalement mais vraiment je vois pas exactement son problème
    $test=$ligne!="";
    cette commande génère une variable booléenne nommée "$test" qui teste justement la fin du fichier.
    @andry.aime:
    j'ai ajouté ta commande dans mon code et j'ai remplacer le 0 par 50 pour limiter la boucle et éviter l'infinité au cas ou mais le résultat c'est qu'il n'affiche plus rien même pas une erreur. Il se bloque au chargement.

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    En fait ton probleme vient d'une boucle infinie je pense. Tu dis de faire une insertion tant que tu n'as pas vidé $ligne mais tu ne le vides jamais au final! La fonction explode transforme "test1;test2;test3" en un tableau contenant 3 éléments (test 1, test2 et test3).
    Du coup il faut que transformes $ligne en un tableau, et qu'ensuite seulement tu boucle sur le tableau résultant en faisant une boucle for/while

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    C'est sûr que c'est boucle infinie
    while ($ligne!="")
    {
    $array_chaine1 = explode(';', $ligne);
    mysql_query('INSERT INTO ressources VALUES('.$comp.','.$array_chaine1[0].','.$array_chaine1[1].','.$array_chaine1[2].')');
    $comp++;
    }
    Mais je ne sais pas ou en veux tu en venir.
    Tu as tansformé $ligne en tableau dans le boucle,
    $array_chaine1 = explode(';', $ligne);
    Je pense que tu devrais le faire en dehors du boucle et faire la condition avec $array_chaine1

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

Discussions similaires

  1. Parcours d'un fichier et insertion dans une base de données !
    Par condor_01 dans le forum Général Java
    Réponses: 2
    Dernier message: 24/04/2008, 09h24
  2. Insertion dans une base de donnée
    Par hamzus2005 dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/07/2007, 11h40
  3. Problème d'insertion dans une base de donnèes
    Par atout dans le forum Administration
    Réponses: 14
    Dernier message: 27/12/2006, 07h07
  4. Insertion dans une base de donnée MYSQL !
    Par condor_01 dans le forum JDBC
    Réponses: 7
    Dernier message: 01/08/2006, 12h10
  5. problème d'insertion dans une base de données
    Par belmansour tidjani dans le forum JDBC
    Réponses: 7
    Dernier message: 18/01/2006, 22h13

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