Appel fonction PHP
Résolu
DAG
-
DAG -
DAG -
Bonjour,
J'ai coder le programme suivant :
Je rentre un fichier Excel, je l'analyse avec la fonction
Pour ce faire, je "lisse" les noms avec la fonction
Le probleme, c'est que lorsque que je l'appelle dans la fonction function RH_excel_file () je n'arrive pas à garder la valeur en mémoire.
Est-ce que quelqu'un aurai une idée ?
Merci d'avance !
J'ai coder le programme suivant :
<?php include 'connexion_bdd.php'; $file = $_FILES['file']['tmp_name']; $file_name = $_FILES['file']['name']; $file_type = $_FILES['file']['type']; //MAIN echo "Vous avez rentrer le fichier : " ."<strong>".$file_name."</strong>" ."." ."<br><br>"; if($file_type == 'application/vnd.ms-excel') { RH_excel_file (); } else { echo "!! Le fichier doit être au format Excel CSV. !!" ."<br>" ."<br>" ."Pour enregistrer un fichier au format CVS sous Excel :" ."<br>" ."- Ouvrir le fichier original, au format xls" ."<br>" ."- Cliquer sur" ."<strong>"." Fichier"."</strong>" ." puis sur" ."<strong>"." Enregistrer sous..."."</strong>" ."<br>" ."- Puis dans " ."<strong>"."Type de fichier"."</strong>" .", choisir : " ."<strong>"."CVS (séparateur : pointvirgule) (*.cvs)"."</strong>"."." ."<br>" ."- Enfin, " ."<strong>"."valider."."</strong>"; } //FICHIER EXCEL DE LA RH function RH_excel_file () { $file = $_FILES['file']['tmp_name']; $file_name = $_FILES['file']['name']; $file_type = $_FILES['file']['type']; $content = file_get_contents($file,'r'); $content = explode(";", $content); for($var=0; $var<12; $var++) { echo $content[$var]; echo "<br>"; } $dernierCar = explode("\n", $content[12]); echo $dernierCar[0] ."<br>"; echo "<br>"."Voulez-vous continuer ?"."<br>"; echo "<a href='./traitement.php' title='passer le fichier'> <input type='Submit' value='Valider';/> </a>"; lisserChaineCarac($content[1]); /* $sql = "CREATE TABLE T1 ( `ID` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT," .$content[0] ."VARCHAR( 50 ) NOT NULL," .$content[2] ."VARCHAR( 50 ) NOT NULL," .$content[3] ."VARCHAR( 50 ) NOT NULL," .$content[4] ."VARCHAR( 50 ) NOT NULL," .$content[5] ."VARCHAR( 50 ) NOT NULL," .$content[6] ."VARCHAR( 50 ) NOT NULL," .$content[7] ."VARCHAR( 50 ) NOT NULL," .$content[8] ."VARCHAR( 50 ) NOT NULL," .$content[9] ."VARCHAR( 50 ) NOT NULL," .$content[10] ."VARCHAR( 50 ) NOT NULL," .$content[11] ."VARCHAR( 50 ) NOT NULL," .$content[12] ."VARCHAR( 50 ) NOT NULL," .$dernierCar[0] ."VARCHAR( 50 ) NOT NULL," .")" ."ENGINE = InnoDB" .";"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); mysql_close(); */ } function lisserChaineCarac ($chaineCarac) { $chaineCarac = str_replace(' ','',$chaineCarac); $chaineCarac = str_replace('\'','',$chaineCarac); $chaineCarac = str_replace('é','e',$chaineCarac); $chaineCarac = str_replace('è','e',$chaineCarac); $chaineCarac = str_replace('ê','e',$chaineCarac); $chaineCarac = str_replace('é','e',$chaineCarac); $chaineCarac = str_replace('à','a',$chaineCarac); $chaineCarac = str_replace('ç','c',$chaineCarac); $chaineCarac = str_replace('/','-',$chaineCarac); $chaineCarac = str_replace('\\','-',$chaineCarac); $chaineCarac = str_replace('*','',$chaineCarac); } ?>
Je rentre un fichier Excel, je l'analyse avec la fonction
function RH_excel_file (). Je récupère les champs de la première ligne de ce fichier. Et je voudrais créer une table MySQL avec ces données.
Pour ce faire, je "lisse" les noms avec la fonction
lisserChaineCarac ($chaineCarac).
Le probleme, c'est que lorsque que je l'appelle dans la fonction function RH_excel_file () je n'arrive pas à garder la valeur en mémoire.
Est-ce que quelqu'un aurai une idée ?
Merci d'avance !
A voir également:
- Appel fonction PHP
- Fonction si et - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Appel privé - Guide
- Double appel - Guide
- Je peux appeler mais pas recevoir d'appel sur mon portable - Forum Téléphones & tablettes Android
7 réponses
Bonjour.
Je n'ai pas eu le courage de tout regarder, mais une chose me chiffonne :
La fonction lisserChaineCarac ($chaineCarac) ne retourne aucune valeur !
=> il faudrait faire :
Je n'ai pas eu le courage de tout regarder, mais une chose me chiffonne :
La fonction lisserChaineCarac ($chaineCarac) ne retourne aucune valeur !
=> il faudrait faire :
$chaineCarac = lisserChaineCarac ($chaineCarac);
Oui, en fait, je voudrais faire une fonction qui prend une chaine de caractère (par exemple "Unité d'organisation"). Et lorsque j'appelle cette fonction, elle me ressorte une variable "lisser" : "Unitédorganisation".
Ceci afin de pouvoir ensuite faire un genre de :
Voila pour résumer ! J'espere être assez claire...
En le probeme est que lorsque j'appelle cette fonction "lisser" ailleurs, dans une autre fonction, la variable ne bouge pas !
Ceci afin de pouvoir ensuite faire un genre de :
CREATE TABLE ma_table (`ID` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, Unitédorganisation VARCHAR( 50 ) NOT NULL, ) ENGINE = InnoDB; ";
Voila pour résumer ! J'espere être assez claire...
En le probeme est que lorsque j'appelle cette fonction "lisser" ailleurs, dans une autre fonction, la variable ne bouge pas !
Oui exact, tu as raison :
Et pour l'appeler :
C'est tout con, mais je ne suis pas habituer à coder...
Merci !
function lisserChaineCarac ($chaineCarac) { $chaineCarac = str_replace(' ','',$chaineCarac); $chaineCarac = str_replace('\'','',$chaineCarac); $chaineCarac = str_replace('é','e',$chaineCarac); $chaineCarac = str_replace('è','e',$chaineCarac); $chaineCarac = str_replace('ê','e',$chaineCarac); $chaineCarac = str_replace('é','e',$chaineCarac); $chaineCarac = str_replace('à','a',$chaineCarac); $chaineCarac = str_replace('ç','c',$chaineCarac); $chaineCarac = str_replace('/','-',$chaineCarac); $chaineCarac = str_replace('\\','-',$chaineCarac); $chaineCarac = str_replace('*','',$chaineCarac); return $chaineCarac; }
Et pour l'appeler :
$chaineCarac = lisserChaineCarac($content[0]); echo $chaineCarac;
C'est tout con, mais je ne suis pas habituer à coder...
Merci !
Vas voir dans la doc php - ou ici - ce qui concerne la portée des variables et le foncionnement des focntions...
En gros, tu as deux options :
1. Faire comme je t'ai dis.
2. "globaliser" la chaîne de caractères :
Le problème de cette mêthode, c'est (entre autres) que tu ne peux plus utiliser la fonction pour une autre chaîne de caractères...
En gros, tu as deux options :
1. Faire comme je t'ai dis.
2. "globaliser" la chaîne de caractères :
function lisserChaineCarac () { global $chaineCarac; //Ton code }
Le problème de cette mêthode, c'est (entre autres) que tu ne peux plus utiliser la fonction pour une autre chaîne de caractères...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci beaucoup, maintenant ça marche !
Je voulais juste savoir sinon : est-ce que par hasard il n'existerais pas déjà des fonctions toutes faites pour rentrer un fichier CSV dans une table MySQL ?
J'ai un fichier comme ça :
Et je voudrais créer une table MySQLa l'image du fichier Excel, c'est a dire que les différents champs de la table MySQL porterais le nom de ceux du fichier Excel, et les données d'après viendrons peupler la table ?
C'est que je suis en train d'essayer de coder...
Je voulais juste savoir sinon : est-ce que par hasard il n'existerais pas déjà des fonctions toutes faites pour rentrer un fichier CSV dans une table MySQL ?
J'ai un fichier comme ça :
titre1 titre2 titre3 data1 data1 data1 data2 data2 data2
Et je voudrais créer une table MySQLa l'image du fichier Excel, c'est a dire que les différents champs de la table MySQL porterais le nom de ceux du fichier Excel, et les données d'après viendrons peupler la table ?
C'est que je suis en train d'essayer de coder...
Là, ça passe hors-sujet, tu ferais mieux d'ouvrir un nouveau post - si ce n'est déjà fait.
Pour une utilisation ponctuelle, phpMyAdmin te permet de le faire :
Sélectionne ta table, en bas de la page tu as Insérer des données provenant d'un fichier texte dans la table, quelques paramètres plus tard c'est fait.
En bonus, tu peux voir la requête passée par phpMyAdmin. Un exemple :
Pour une utilisation ponctuelle, phpMyAdmin te permet de le faire :
Sélectionne ta table, en bas de la page tu as Insérer des données provenant d'un fichier texte dans la table, quelques paramètres plus tard c'est fait.
En bonus, tu peux voir la requête passée par phpMyAdmin. Un exemple :
LOAD DATA LOCAL INFILE '<monfichier>' INTO TABLE `<matable>` FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'
Oui j'ai réussi à faire avec LOAD DATA. Mais le problème (si j'ai bien compris) est qu'il faut avoir créer autant de champs dans la table MySQL qu'il y en a dans le fichier Excel (c'est comme ça que j'ai fait en tout cas).
En fait load data prend TOUTES les données d'une colonne du fichier Excel et les met dans le champs d'une table MySQL.
Donc on se retrouve avec une table du genre :
table 1 :
Du coup je me retrouvais avec toutes les premières valeurs de chaque champs de ma table fausses... (elle portent le nom du champs justement !)
Donc je me suis mis à essayer de coder ce que je veux faire !
En fait load data prend TOUTES les données d'une colonne du fichier Excel et les met dans le champs d'une table MySQL.
Donc on se retrouve avec une table du genre :
table 1 :
TitreChamps1 TitreChamps2 NOM PRENOM tintin milou titi tata
Du coup je me retrouvais avec toutes les premières valeurs de chaque champs de ma table fausses... (elle portent le nom du champs justement !)
Donc je me suis mis à essayer de coder ce que je veux faire !