banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 04 February 2019 10:04

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

code PHP "Undefined index"

Bonjour,
un géomaticien a créé une moulinette très utile pour mes membres, sous PHP qui permet de lier leurs données (sous forme de données DBF) avec les données cadastre. Cette moulinette évite aux membres d'avoir à faire la jointure, ce qui leur simplifiait grandement la tâche !
J'essaie de donc de remettre en fonctionnement cette moulinette qui ne fonctionne plus depuis le départ du géomaticien.

La moulinette est lancé sous UWAMP en local, via le fichier menu.php, qui lance à son tour automatiquement le fichier maj_perimetre.php (les 2 fichiers sont en pièces jointes).
Or lorsque je lance menu.php, je me retrouve avec 3 erreurs :

Code:

Undefined index: fichierdbf in C:\UwAmp\www\moulinette\maj_perimetre.php on line 16
Undefined index: fichierdbf in C:\UwAmp\www\moulinette\maj_perimetre.php on line 36
Fatal error: Call to undefined function dbase_open() in C:\UwAmp\www\moulinette\maj_perimetre.php on line 37

Ne connaissant pas bien le PHP, je lance à tout hasard ma demande, si jamais une bonne volonté veut bien m'aider...
En vous remerciant par avance,

Dernière modification par mgiaume (Mon 04 February 2019 10:04)

Hors ligne

 

#2 Mon 04 February 2019 10:32

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: code PHP "Undefined index"

Bonjour,

Tu peux poster les fichiers dans ton message ? Elles ont sautés (envoi du message par mail ?)

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Mon 04 February 2019 10:36

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Re: code PHP "Undefined index"

Je n'arrive pas à joindre les fichiers. Vu qu'ils ne sont pas long, je les mets dans le texte :

***menu.php****

Code:

<html>
<head>

    <!-- on vérifie si le formulaire a bien été renseigné et si le format du fichier est correcte-->
    <script type="text/javascript">
        function valider() {       
           if (document.formSaisie.fichierdbf.value== "") {
             alert ("selectionner un fichier");     
             return false;
           }
            
           if (document.formSaisie.fichierdbf.value.substr(-4) !== '.dbf' ) {
             if ( document.formSaisie.fichierdbf.value.substr(-4) !== '.DBF' ) {
               alert ("selectionner un fichier dbf");
               return false;
             }
           }                
        }
    </script>
    
</head>
<body>
<center>
<h3>utilitaire de mise à jour des données du périmètre</h3>
<h4>Sélectionner un fichier .dbf</h4>
        <!-- formulaire pour l'envoi de fichier dbd-->
        <form method="post" action="maj_perimetre.php" name="formSaisie" enctype="multipart/form-data"  onsubmit="return valider()" >    
            <input type="hidden" name="MAX_FILE_SIZE" value="80971520">    
            <input type="file" name="fichierdbf">   
            <input type="submit" value="Envoyer" onclick="document.getElementById('divloading').innerHTML" ='chargement ...' >              
        <div id="divloading"></div>    
</center>
</body>
</html>

****MAJ_PERIMETRE.PHP***

Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
   "http://www.w3.org/TR/html4/strict.dtd"> 
   
<html>
    <head>

    </head>
    
    <body>    
    <?php


    /*verification sur le fichier envoyé-----------------------------------------------------------
    ------------------------------------------------------------------------------------------*/

    if ($_FILES['fichierdbf']['error']) {    
              switch ($_FILES['fichierdbf']['error']){    
                       case 1: // UPLOAD_ERR_INI_SIZE    
                       echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";    
                       break;    
                       case 2: // UPLOAD_ERR_FORM_SIZE    
                       echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
                       break;    
                       case 3: // UPLOAD_ERR_PARTIAL    
                       echo "L'envoi du fichier a été interrompu pendant le transfert !";    
                       break;    
                       case 4: // UPLOAD_ERR_NO_FILE    
                       echo "Le fichier que vous avez envoyé a une taille nulle !";
                       break;    
              }    
    }

    
    /* lecture du fichier dbf -------------------------------------------------------------------
    ---------------------------------------------------------------------------------------------*/
    $dbf_path = $_FILES['fichierdbf']['tmp_name'];
    $dbf=dbase_open($dbf_path, 0);
    
    $nom_champs=dbase_get_header_info($dbf);
    $nb_parcelles=dbase_numrecords($dbf);
    
    //connexion à la base
    $dbh = new PDO('sqlite:donnees.sqlite');
    //on vide la base
    $query = 'DELETE FROM ROLE';    
    $dbh->query($query);
    
    //on y intègre les nouvelles données
    for ($i=0;$i<=$nb_parcelles;$i++){
    
        $stmt = $dbh->prepare("INSERT INTO ROLE (CLEF_2,SURFACE,SOUSCRITE,PROPRIO,PRO_ADR1,PRO_ADR2,PRO_CP,PRO_VILLE,NUM_PROPRI,COD_RESEAU,RESEAU,COD_ZONE,ZONE,COD_STATIO,STATION,COD_CULTUR,CULTURE,NUMERO,SECTION,COMMUNE,COD_TARIF,TARIF,NOM_ASP) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
        $parcelles=dbase_get_record_with_names($dbf,$i);        
        $stmt->execute(array($parcelles['CLEF_2'],
                            $parcelles['SURFACE'],
                            $parcelles['SOUSCRITE'],
                            $parcelles['PROPRIO'],
                            $parcelles['PRO_ADR1'],
                            $parcelles['PRO_ADR2'],
                            $parcelles['PRO_CP'],
                            $parcelles['PRO_VILLE'],
                            $parcelles['NUM_PROPRI'],
                            $parcelles['COD_RESEAU'],
                            $parcelles['RESEAU'],
                            $parcelles['COD_ZONE'],
                            $parcelles['ZONE'],
                            $parcelles['COD_STATIO'],
                            $parcelles['STATION'],
                            $parcelles['COD_CULTUR'],
                            $parcelles['CULTURE'],
                            $parcelles['NUMERO'],
                            $parcelles['SECTION'],
                            $parcelles['COMMUNE'],
                            $parcelles['COD_TARIF'],
                            $parcelles['TARIF'],
                            $parcelles['NOM_ASA']));
    }

    //on met à jour la couche perimetre
    
    //on vide la base
    $query = 'DELETE FROM perimetre';
    $dbh->query($query);
    
    //on met a jour la table perimetre
    $req = $dbh->query("INSERT INTO PERIMETRE (Geometry,
                                                asa_id_parcelle,
                                                nom_asp,
                                                asa_droitdeau,
                                                asa_cod_reseau,
                                                asa_reseau,
                                                asa_num_adherent,
                                                asa_nom,
                                                asa_adresse,
                                                asa_adresse2,
                                                asa_commune,
                                                asa_cp,
                                                asa_cod_station,
                                                asa_station,
                                                asa_cod_tarif,
                                                asa_tarif,
                                                asa_cod_culture,
                                                asa_culture,
                                                idu,
                                                n_commune,
                                                n_section,
                                                planche,
                                                n_parcelle,
                                                n_primitive,
                                                n_voirie_pa,
                                                surface_dgi,
                                                voirie_pa,
                                                emplacement,
                                                id_proprio,
                                                civilite,
                                                nom,
                                                prenom,
                                                mention_com,
                                                nom_complem,
                                                prenom_comp,
                                                date_naissa,
                                                lieu_naissa,
                                                pr_n_voirie,
                                                pr_r_voirie,
                                                pr_adresse,
                                                pr_compleme,
                                                pr_code_pos,
                                                pr_commune,
                                                date_acte,
                                                surface_cad)

                                                SELECT b.Geometry,
                                                        a.clef_2,
                                                        a.nom_asp,                                                        
                                                        a.souscrite,
                                                        a.cod_reseau,
                                                        a.reseau,
                                                        a.num_propri,
                                                        a.proprio,
                                                        a.pro_adr1,
                                                        a.pro_adr2,
                                                        a.pro_ville,
                                                        a.pro_cp,
                                                        a.cod_statio,
                                                        a.station,
                                                        a.cod_tarif,
                                                        a.tarif,
                                                        a.cod_cultur,
                                                        a.culture,
                                                        b.idu,
                                                        b.n_commune,
                                                        b.n_section,
                                                        b.planche,
                                                        b.n_parcelle,
                                                        b.n_primitive,
                                                        b.n_voirie_pa,
                                                        b.surface_dgi,
                                                        b.voirie_pa,
                                                        b.emplacement,
                                                        b.id_proprio,
                                                        b.civilite,
                                                        b.nom,
                                                        b.prenom,
                                                        b.mention_com,
                                                        b.nom_complem,
                                                        b.prenom_comp,
                                                        b.date_naissa,
                                                        b.lieu_naissa,
                                                        b.pr_n_voirie,
                                                        b.pr_r_voirie,
                                                        b.pr_adresse,
                                                        b.pr_compleme,
                                                        b.pr_code_pos,
                                                        b.pr_commune,
                                                        b.date_acte,
                                                        b.surface_dgi
                                                        
                                                    FROM role a
                                                    INNER JOIN cadastre b
                                                    ON substr (a.CLEF_2,0,13)= b.idu");
    

    echo("perimetre mis à jour");
    dbase_close($dbf);
    ?>
  </body>
</html>

Hors ligne

 

#4 Mon 04 February 2019 11:11

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: code PHP "Undefined index"

Bonjour,

Vous êtes sur(e) que seule le départ du géomaticien a engendré ce message d'erreur ? Il n'y a pas eu une réinstallation de la machine, une mise à jour ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#5 Mon 04 February 2019 11:15

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Re: code PHP "Undefined index"

Le géomaticien étant parti il y a quelques temps, c'est effectivement possible qu'il y ait eu des mises à jour de Windows, ou réinstallation de la machine ! Cette moulinette étant fort utile pour les utilisateurs, j'essaie de voir si on peut facilement la remettre en place. Et si oui, comment.

Hors ligne

 

#6 Mon 04 February 2019 11:33

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: code PHP "Undefined index"

Bonjour,

Il y a 2 problèmes : la variable $_FILES['fichierdbf'] renvoi des erreurs à chaque appels. Il faudrait débuguer avec un print_r($_FILES[fichierdbf]) avant la ligne 16.

Le 2eme problème est la fonction dbase_open, la page http://php.net/manual/fr/function.dbase-open.php indique PHP 5 < 5.3.0, quelle version de PHP avez vous ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#7 Mon 04 February 2019 11:35

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: code PHP "Undefined index"

A priori cela devrait être possible avec PHP 7 : https://pecl.php.net/package/dbase
À prendre avec des pincettes !

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#8 Mon 04 February 2019 11:49

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Re: code PHP "Undefined index"

Merci beaucoup pour votre éclairage, je vais essayer vos 2 pistes, et je reviens vers vous pour vous indiquer si cela débloque la situation !

Hors ligne

 

#9 Mon 04 February 2019 13:35

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Re: code PHP "Undefined index"

Je me suis donc mis en PHP 7.0.3, et j'ai fait le correctif dans le fichier maj_perimetre.php
Je rencontre toutefois une nouvelle erreur en ligne 15, là on j'ai rajouté print_r($_FILES[fichierdbf])
Parse error: syntax error, unexpected 'if' (T_IF) in C:\UwAmp\www\moulinette\maj_perimetre.php on line 15

Hors ligne

 

#10 Mon 04 February 2019 13:52

Blaise Picinbono
Participant actif
Date d'inscription: 8 Jan 2015
Messages: 70
Site web

Re: code PHP "Undefined index"

Bonjour;

L'erreur en ligne 15 vient sans doute de la mauvais prise en compte des balises "/*" et "*/" de la ligne de commentaire précédente.
Essayez de mettre un espace après la balise ouvrante ainsi qu'avant la balise fermante:

Code:

/* lecture du fichier dbf */

Le paquetage dbase de pecl.php.net est fonctionnel, enfin celui en version 5 pour GNU/Linux, je ne sais pas pour la DLL pour Windows, mais il n'y a pas de raison.

Hors ligne

 

#11 Mon 04 February 2019 13:58

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: code PHP "Undefined index"

Bonjour,

Il manque les guillemets:

Code:

print_r($_FILES['fichierdbf'])

Opérateur cartographique & DAO & PHP.

Hors ligne

 

#12 Mon 04 February 2019 14:11

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Re: code PHP "Undefined index"

Bonjour,
j'ai mis les guillemets et rajouté des espaces sur les balises ouvrantes/fermantes du commentaires...
Pourtant, j'ai encore l'erreur

Code:

Parse error: syntax error, unexpected 'if' (T_IF) in C:\UwAmp\www\moulinette\maj_perimetre.php on line 15

Hors ligne

 

#13 Mon 04 February 2019 14:15

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: code PHP "Undefined index"

Il faut également un point virgule à la fin:

Code:

print_r($_FILES['fichierdbf']);

Entre l'étoile et le slash, il ne faut pas d'espace.

Dernière modification par michel56 (Mon 04 February 2019 14:23)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#14 Mon 04 February 2019 14:23

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Re: code PHP "Undefined index"

euh.... en rajoutant un point virgule à la fin, je me retrouve avec plusieurs erreurs :

Code:

Notice: Undefined index: fichierdbf in C:\UwAmp\www\moulinette\maj_perimetre.php on line 14

idem pour ligne 15 et 36

Code:

Fatal error: Uncaught Error: Call to undefined function dbase_open() in C:\UwAmp\www\moulinette\maj_perimetre.php on line 37

Code:

 Error: Call to undefined function dbase_open() in C:\UwAmp\www\moulinette\maj_perimetre.php on line 37

Hors ligne

 

#15 Mon 04 February 2019 14:27

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: code PHP "Undefined index"

Tu as surement un espace entre le slash et l'étoile /* ou l'étoile et le slash  */


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#16 Mon 04 February 2019 14:29

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Re: code PHP "Undefined index"

Non, car j'ai finalement mis tous les commentaires sous la forme

Code:

    //commentaire

, ce qui évite les problèmes avec les /* ou */

Hors ligne

 

#17 Mon 04 February 2019 14:37

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: code PHP "Undefined index"

As-tu bien copier ton fichier DBF dans le répertoire web où se situe le fichier maj_perimetre.php ?

Dernière modification par michel56 (Mon 04 February 2019 14:38)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#18 Mon 04 February 2019 14:39

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Re: code PHP "Undefined index"

oui, le fichier DBF est au même endroit que le fichier maj_perimetre.php

Hors ligne

 

#19 Mon 04 February 2019 14:44

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: code PHP "Undefined index"

recommence à partir du script original:
tu supprimes ce code:

Code:

    /*verification sur le fichier envoyé-----------------------------------------------------------
    ------------------------------------------------------------------------------------------*/

    if ($_FILES['fichierdbf']['error']) {   
              switch ($_FILES['fichierdbf']['error']){   
                       case 1: // UPLOAD_ERR_INI_SIZE   
                       echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";   
                       break;   
                       case 2: // UPLOAD_ERR_FORM_SIZE   
                       echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
                       break;   
                       case 3: // UPLOAD_ERR_PARTIAL   
                       echo "L'envoi du fichier a été interrompu pendant le transfert !";   
                       break;   
                       case 4: // UPLOAD_ERR_NO_FILE   
                       echo "Le fichier que vous avez envoyé a une taille nulle !";
                       break;   
              }   
    }

   
    /* lecture du fichier dbf -------------------------------------------------------------------
    ---------------------------------------------------------------------------------------------*/
    $dbf_path = $_FILES['fichierdbf']['tmp_name'];
    $dbf=dbase_open($dbf_path, 0);

tu le remplaces par:

Code:

$dbf=dbase_open('NOM_DE_TON_FICHIER_DBF', 0);

Dernière modification par michel56 (Mon 04 February 2019 14:54)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#20 Mon 04 February 2019 15:06

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: code PHP "Undefined index"

Bonjour,

Les messages d'erreur indiquent que l'index dans le tableau $_FILES n'existent pas. Il manque probablement une variable qui doit être envoyée au serveur, où je ne sais. Il y a là un premier problème. S'il y a eut rtéinstallation, la config PHP a peut être changé et il n'est pas possible de récupérer certaines variables comme $_FILES (c'est une possibilité).

Les 2 autres erreurs sont identiques à ton 1er message.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#21 Mon 04 February 2019 15:07

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: code PHP "Undefined index"


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#22 Mon 04 February 2019 15:23

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: code PHP "Undefined index"

Tu n'as pas des caractères spéciaux ou espace dans le nom du fichier DBF.


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#23 Fri 08 February 2019 13:58

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Re: code PHP "Undefined index"

Bonjour,
et merci pour vos messages... j'ai finalement réussi à débugger pas mal mes fichiers : j'ai enlevé la limite de taille, et j'ai réinstallé l'extension dbase....
Il me reste une dernière erreur : Fatal error: Call to a member function execute() on boolean, mais j'envoie un nouveau post pour ce nouveau sujet.
Merci à tous !

Dernière modification par mgiaume (Fri 08 February 2019 14:34)

Hors ligne

 

Pied de page des forums

Powered by FluxBB