Bonjour à tous,
J'ai un script d'autocomplétion qui rempli automatiquement 4 autres champs lorsque le 1er (numéro de téléphone) est complété.
Pour cela, il y a une conversion d'un fichier CSV en json puis, on test la valeur contenue dans le champ numéro et si elle existe dans les données du csv alors on rempli les autres champs.
Les souci est simple, tout fonctionne sur wamp, mais une fois mis en ligne sur un serveur apache le code plante et j'ai juste l'image d'arrière plan définie par le css....
Voila le code:
Un exemple de mon fichier annuaire.csv:
Si quelqu'un peut m'aider je suis preneur parce que la je vois pas ou est le problème...
Pour info:
- J'ai mis un chmod au cas ou j'aurais pas les droits de lecture même si j'y crois pas trop.
Merci d'avance.
Maxredphenix[/i]
J'ai un script d'autocomplétion qui rempli automatiquement 4 autres champs lorsque le 1er (numéro de téléphone) est complété.
Pour cela, il y a une conversion d'un fichier CSV en json puis, on test la valeur contenue dans le champ numéro et si elle existe dans les données du csv alors on rempli les autres champs.
Les souci est simple, tout fonctionne sur wamp, mais une fois mis en ligne sur un serveur apache le code plante et j'ai juste l'image d'arrière plan définie par le css....
Voila le code:
<?php require_once('../sessionstart.php');?>
<!DOCTYPE html>
<?php
require_once('../connexionbdd.php');
// On autorise toute modification sur le serveur dans le dossier pdf/graphiques afin de pouvoir faire le unlink
chmod ("../data", 0777);
// Fonction de conversion de l'annuaire de .CSV à JSON pour utilisation par javascript
function convCsvToArrayToJson(){
$datas = array();
// On défini la structure d'une ligne de l'annuaire
$col = array("badge","nom","prenom","mail","service","tel","bt");
// On défini l'emplacement du fichier à convertir
$handle = fopen("../../data/annuaire.csv", "r");
// On construit un tableau à partir de la structure d'une ligne
// exemple: $data[0] sera égal à badge
while (($data = fgetcsv($handle)) !== FALSE) {$datas[] = $data;}
// On retourne le tout en JSON
return json_encode($datas);
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!------ Fichiers CSS ------->
<link href="../css/template.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
//##########################################################################################
//############ Script d'autocomplétion des champs en fonction du N° de tel##################
//##########################################################################################
var tab;
//Fonction de parcours du Tableau JSON (annuaire) et alimentation des champs
function objToString (obj) {
var str = '';
for (var p in obj) {if (obj.hasOwnProperty(p)) {str += obj[p] + '\n';}}
return str;
};
// Fonction de recherche d'une ligne à partir d'un numéro
function findClient(idClient){
var clients = <?php echo convCsvToArrayToJson("../data/annuaire.csv"); ?>;
// Boucle de recherche du numéro
for(var i=0;i<clients.length;i++){
tab = objToString(clients[i]).split(';');
// Si le numéro demandé dans le formulaire correspond à un numéro dans le tableau json
// alors on envoie la valeur correspondante de chaque champ dans l'id qui leurs correspond
if(tab[5] == idClient){
document.getElementById("nom").value=tab[1];
document.getElementById("service").value=tab[4];
document.getElementById("bt").value=tab[6];
}
}
// Test des inputs nom,service,bt,local, s'ils sont remplis alors la couleur d'arrière plan devient verte
if(document.getElementById("nom").value.length>1){document.getElementById("nom").style.backgroundColor = "#98EA92";}
if(document.getElementById("service").value.length>1){document.getElementById("service").style.backgroundColor = "#98EA92";}
if(document.getElementById("bt").value.length>1){document.getElementById("bt").style.backgroundColor = "#98EA92";}
if(document.getElementById("local").value.length>1){document.getElementById("local").style.backgroundColor = "#98EA92";}
};
</script>
</head>
<body>
<div>
<span class="num_appelant">
<label for="num_appelant">N° de l'appelant: </label>
<!-- Le onchange sert à faire un appel à la fonction findClient pour remplir divers champs via l'annuaire.
à chaque modification du champ la fonction ira chercher sa correspondance dans le fichier annuaire-->
<input type="text" name="num_appelant" value="" id="tel" placeholder="ex: 34100" onblur="findClient(this.value);" autocomplete="off"/>
</span>
<span><label for="nom_demandeur">Demandeur: </label><input type="text" name="nom_demandeur" value="" id="nom" maxlength="30" onblur="verif(this)"/></span>
<span><label for="service">Service: </label><input type="text" name="service" value="" id="service" maxlength="50" /></span>
<span><label for="batiment">Bâtiment: </label><input type="text" name="batiment" value="" id="bt" maxlength="10" /></span>
<span><label for="local">Local: </label><input type="text" name="local" id="local" /></span>
</div>
</body>
</html>
Un exemple de mon fichier annuaire.csv:
10101011;Dupont;Henri;henri.dupont@test.fr;Service1;34100; Bt1
10101012;Martin;Jean Claude;jc?martin@test.fr;Service2;34200; Bt2
10101013;Dupond;Antoinette;antoinette.dupond@test.fr;Service3;34300; Bt3
10101014;Dubois;Fredreric;frederic.dubois@test.fr;Service4;34400; Bt4
10101015;Poirier;Jerome;jerome.poirier@test.fr;Service5;34500; Bt5
10101016;Richard;Antony;antony.richard@test.fr;Service6;34600; Bt6
Si quelqu'un peut m'aider je suis preneur parce que la je vois pas ou est le problème...
Pour info:
- J'ai mis un chmod au cas ou j'aurais pas les droits de lecture même si j'y crois pas trop.
Merci d'avance.
Maxredphenix[/i]