par sadeq » 15 avr. 2011, 00:22
<?php // Source de données à importer avec les délimiteurs suivants : // | \n | => caractère | plus saut de ligne suivi d'un | => séparateur d'enregistrements // | nom du champ # => délimiteur du nom d'un champ // # texte valeur => valeur du champ qui précéde # // // fichier source de données texte $source_data = file_get_contents("fichier_appels_doffre.txt"); // diviser la source en lignes d'enregistrements (délimiteur ^p) $tab_source_data = preg_split("/\|\s*\n*\s*\|/", $source_data); //echo count($tab_source_data); //echo "<pre>"; print_r($tab_source_data); echo "</pre>"; exit; // Extraction des données dans le tableau final $tab_final = array(); $colonnes = array(); foreach($tab_source_data as $j=>$enregistrement){ // Extraction des couples champ/valeur $couples_champs_valeurs = explode('|', $enregistrement); //echo "<pre>"; print_r($couples_champs_valeurs); echo "</pre>"; exit; // Extraction de chaque champ et sa valeur, puis stockage de $tab_final foreach($couples_champs_valeurs as $intitulé_valeur){ $temp = explode('#', $intitulé_valeur); if (count($temp)>=2) { // 2 champs attendus list($intitulé, $valeur) = $temp; if (trim($intitulé)!='') { //conversion de l'intitulé d'un champ éliminer des caractères indésirables $intitulé = conversionCar(trim($intitulé)); //transformation: attention sous MySQL, la taille max nom du champ = 64 car $intitulé = trim(substr($intitulé, 0,50)); // stockage dans $tab_final et requête SQL // $j = n°ligne enregistrement if (isset($tab_final[$j][trim($intitulé)])) { // champs en double => cumuler leurs valeurs (encodage UTF8 pour les accentués) $tab_final[$j][trim($intitulé)] .= ", " . trim(utf8_decode($valeur)); } else { // champ sans doublon $tab_final[$j][trim($intitulé)] = trim(utf8_decode($valeur)); } // liste générale des champs sans doublons $colonnes[trim($intitulé)] = null; } } } // annonce suivante ou fin } // fin foreach // à la fin du traitement du résultat de la requête, on a un tableau d'activités rempli // affichage du tableau juste pour le test //echo "<pre>"; print_r($tab_final); echo "</pre>"; exit; //echo "<pre>"; print_r($colonnes); echo "</pre>"; exit; // Insertion du résultat final dans la table "module_appel_doffre" // file d'attente SQL qui va contenir le lot de requêtes à exécuter $tâches_sql = array(); // préparation des requêtes Création table $tâches_sql[0]['SQL'] = "DROP TABLE IF EXISTS `module_appel_doffre`;"; // si nécessaire $tâches_sql[1]['SQL'] = "CREATE TABLE IF NOT EXISTS `module_appel_doffre` (`id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)); "; // ajouter les colonnes à la table foreach (array_keys($colonnes) as $intitulé){ $tâches_sql[]['SQL'] = "ALTER TABLE `module_appel_doffre` ADD `".trim($intitulé)."` text NOT NULL DEFAULT '';"; } // SQL pour l'insertion des valeurs foreach($tab_final as $enregistrement){ // initialisation de la requête INSERT/SET pour cet enregistrement $tâches_sql_insert = "INSERT INTO `module_appel_doffre` SET "; foreach($enregistrement as $champ=>$valeur){ $tâches_sql_insert .= " `" . trim($champ) . "`='" . addslashes(trim($valeur)). "',"; } // ajouter la requête à la file d'attente SQL $tâches_sql[]['SQL'] = preg_replace('#(,)\s*$#', ';', $tâches_sql_insert); // remplacer la dernière virgule dans SQL par ; } // affichage de l'état d'exécution des requêtes //echo "<pre>"; print_r($tâches_sql); echo "</pre>"; exit; // Exécution des requêtes de la file d'attente SQL mysql_select_db("bd_appels_doffre", mysql_connect("localhost", "root")) or die(mysql_error()); if (count($tâches_sql)>0){ foreach($tâches_sql as $i=>$tâche){ if (trim($tâche['SQL'])!='' && @mysql_query($tâche['SQL'])) $tâches_sql[$i]['Etat']='Ok'; else $tâches_sql[$i]['Etat']='kO => ('.mysql_errno().') : '.mysql_error(); } } mysql_close(); // affichage de l'état d'exécution des requêtes //echo "<pre>"; print_r($tâches_sql); echo "</pre>"; // Fin. echo "<p>Les données sont enregistrées dans la table</p>"; // affichage sous forme d'une table HTML echo "<table border=\"1\"><tr>"; // entête de colonnes foreach (array_keys($colonnes) as $intitulé){ echo "<th>" . $intitulé . "</th>"; } echo "</tr>"; // lignes détail foreach($tab_final as $enregistrement){ echo "<tr>"; foreach($enregistrement as $champ=>$valeur){ echo "<td>" . trim($valeur) . "</td>"; } echo "</tr>"; } // pied de la table echo "</table>"; // FIN DU PROGRAMME PRINCIPAL // fonction de conversion utilisée pour transformer des caractères indésirables function conversionCar($intitulé){ //echo "<p>Entree=".utf8_decode($intitulé)."</p>"; // Tableau de conversion : la première chaine des array peut être enrichi dans le temps $conversion = array( array('[,?;.:/!\\&~\#\'}{)(\]\[+*=§%µ$£€¤¨`\<>]', '_'), // tous les caractères spéciaux sont effacés // Remplacement des caractères accentués array(utf8_decode('[éèêë]'), 'e'), array(utf8_decode('à'), 'a'), array(utf8_decode('ç'), 'c'), array(utf8_decode('ù'), 'u'), // Attention: les règles suivantes sont enchainées et doivent rester les dernières array('(-)', ' '), // un tiret => un seul espace array('(\s+)', ' '), // plusieurs espace => un seul espace array('\s', '_') // un espace => un souligné _ ); $intitulé = utf8_decode($intitulé); // encodage des caractères en UTF8 pour gérer les accentués foreach($conversion as $regle){ list($car_indesirable, $car_valide) = $regle; $intitulé = preg_replace('#'.$car_indesirable.'#', $car_valide, trim($intitulé)); } //echo "<p>Sortie=".strtolower(trim($intitulé))."</p>"; return strtolower(trim($intitulé)); // en minuscule } ?> <style> table { font-size:10; } td { vertical-align:text-top; } </style>
par orell1 » 14 avr. 2011, 17:18
<?php $rs = mysql_query("SELECT * FROM annonces_appels_doffre"); // exécution de la requête // tableau final à construire $tab_final = array(); // parcours des résultats while ($row=mysql_fetch_assoc($rs)) { // extraire les couples (titulé # valeur) séparés par | $t1 = explode('|', $row['annonces_marche']); //echo "<pre>"; print_r($t1); echo "</pre>"; foreach ($t1 as $intitulé_valeur){ // extraire chaque intitulé et sa valeur séparés par # $intitulé = ""; $valeur = ""; if (trim($intitulé_valeur)!="") { // si bien sur la chaine traitée n'est pas vide $t2 = explode("#", trim($intitulé_valeur)); // stocker l'intitulé et sa valeur dans le tableau final if (count($t2)>1) {$intitulé = trim($t2[0]); $valeur = trim($t2[1]);} if ($intitulé!="") { //conversion de l'intitulé d'un champ éliminer des caractères indésirables $intitulé = conversionCar($intitulé); //transformation: attention sous MySQL, la taille max nom du champ = 64 car $intitulé = trim(substr($intitulé, 0,50)); $tab_final[$intitulé][] = trim($valeur); // toutes les valeurs ayant le même intitulé seront stockées ici sous le même index $intitulé } } } } // à la fin du traitement du résultat de la requête, on a un tableau d'activités rempli // affichage du tableau juste pour le test //echo "<pre>"; print_r($tab_final); echo "</pre>"; // entêtes de colonnes => les index du tableau $colonnes = array_keys($tab_final); if (count($colonnes) <=0) { die ("Désolé aucun intitulé n'est trouvé!"); } // sortir du programme car aucune colonne // Insertion du résultat final dans la table "module_appel_doffre" // préparation des requêtes Create et Insert // les champs: $sql_drop = "DROP TABLE IF EXISTS `module_appel_doffre`;"; // si nécessaire $sql_create = "CREATE TABLE IF NOT EXISTS `module_appel_doffre` (`id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) "; $sql_alter = array(); $sql_insert = "INSERT INTO `module_appel_doffre` ("; foreach ($colonnes as $index=>$intitulé){ //$intitulé = "C".$index."_".$intitulé; // numéroter pour rendre unique le nom d'un champ //$intitulé = trim(substr($intitulé, 0,64)); // transformation: attention sous MySQL, la taille max nom du champ = 64 car $sql_alter[] = "ALTER TABLE `module_appel_doffre` ADD `" . $intitulé . "` text;"; $sql_insert .= "`" . $intitulé . "`,"; } // $sql_insert = preg_replace('#(,)$#', '', $sql_insert); // enlever la dernière virgule qui traine $sql_insert .= ") VALUES "; // les valeurs : $colonne1 = $colonnes[0]; // une colonne pour déterminer le nombre de lignes à afficher for ($i=0; $i<count($tab_final[$colonne1]); $i++){ // parcourir les lignes $sql_insert .= "("; foreach ($colonnes as $colonne){ // afficher les lignes par colonne if (isset($tab_final[$colonne]) && isset($tab_final[$colonne][$i])) { $sql_insert .= "'" . addslashes($tab_final[$colonne][$i]) . "',"; } else { $sql_insert .= "'',"; } // valeur vide '' } $sql_insert = preg_replace('#(,)$#', '', $sql_insert); // enlever la dernière virgule qui traine $sql_insert .= "),"; } $sql_insert = preg_replace('#(,)$#', ';', $sql_insert); // remplacer la dernière virgule qui traine par ; // affichage juste pour le test //echo "<pre>"; print($sql_create); echo "</pre>"; //echo "<pre>"; print($sql_insert); echo "</pre>"; // Exécution des requêtes mysql_select_db("", mysql_connect("", "", "")) or die(mysql_error()); //@mysql_query($sql_drop); // si nécessaire @mysql_query($sql_create); if (count($sql_alter)>0) { foreach($sql_alter as $sql) @mysql_query($sql); } mysql_query($sql_insert) or die(mysql_error()); mysql_close(); echo "<p>Les données sont enregistrées dans la table</p>"; // FIN DU PROGRAMME PRINCIPAL // fonction de conversion utilisée pour transformer des caractères indésirables function conversionCar($intitulé){ // Tableau de conversion : la première chaine des array peut être enrichi dans le temps $conversion = array( array('[,?;.:/!&~\#\\\'}{)(\]\[+*=§%µ$£€¤¨`\<>]', ''), // tous les caractères spéciaux sont effacés // Remplacement des caractères accentués array('[éèêë]', 'e'), array('à', 'a'), array('ç', 'c'), array('ù', 'u'), // Attention: les règles suivantes sont enchainées et doivent rester les dernières array('(-)', ' '), // un tiret => un seul espace array('(\s+)', ' '), // plusieurs espace => un seul espace array('\s', '_') // un espace => un souligné _ ); foreach($conversion as $regle){ list($car_indesirable, $car_valide) = $regle; $intitulé = preg_replace('#'.$car_indesirable.'#', $car_valide, trim($intitulé)); } return strtolower(trim($intitulé)); // en minuscule } // echo conversionCar('éèêë'); ?>
par sadeq » 14 avr. 2011, 17:08
<?php //------------------------------------------------------------------------------------------ $conn = db_connect(); $sql = "SELECT * FROM `module_appel_doffre` WHERE id = $_GET[id] "; $result = mysql_query($sql, $conn); $dossier = mysql_fetch_array($result); //------------------------------------------------------------------------------------------ ?> <pre> <fieldset class="fieldset"><legend class="legend">AVIS DE MARCHE <?php echo $dossier['annonce_n']; ?></legend> <?php echo "<p>objet :".$dossier['annonce_publiee_le']."</p>"; ?> <?php echo "<p>Département :".$dossier['adresse_internet']."</p>"; ?> <?php echo "<p>Département :".$dossier['objet_du_marche']."</p>"; ?> </fieldset> </pre>
par orell1 » 14 avr. 2011, 12:43
par orell1 » 14 avr. 2011, 12:01
par sadeq » 14 avr. 2011, 11:35
<a href=\"afficher_appels_doffre.php?id=".$row['id']."\">Lire la suite<a/>
$sql = "SELECT * FROM `module_appel_doffre` WHERE id = " . $_GET[id];
par orell1 » 14 avr. 2011, 10:26
par sadeq » 14 avr. 2011, 10:18
PAGE DE RECHERCHE: .... echo " <td width=\"60%\"> ".substr(stripslashes($row['objet_du_marche']),0,100)."...<br><a href=\"afficher_appels_doffre.php?objet_marche=".$row['objet_du_marche']."\">Lire la suite<a/></td>";
<a href=\"afficher_appels_doffre.php?objet_du_marche=".$row['objet_du_marche']."\">Lire la suite<a/>
par orell1 » 14 avr. 2011, 01:09
<?php } ?> <fieldset class="fieldset"> <legend class="legend">Consultation des annonces de marchés publics </legend> <br /><b><u>Tapez le mot clé qui vous convient</u></b> <font style="font-size:9px; margin-left:10px;"><b><?php echo CHAMPS_OBLIGATOIRES; ?> (*)</b></font><br /><br /> <form action="" method="get"> <table align="center" border="0" cellspacing="1" cellpadding="1" width="100%" > <tr > <td width="26%" height="33">Votre recherche(*) : </td> <td width="74%"><input type="text" size="30" name="objet_du_marche" maxlength="50" class="fullsample_bouton" /> <b>Exemple :</b> travaux de restauration</td> </tr> <tr > <td width="26%" height="33">Date de Publication : </td> <td width="74%"><input type="text" size="30" name="date_publication" maxlength="50" class="fullsample_bouton" /> <b>Exemple :</b> 05 avril 2011</td> </tr> <tr > <td width="26%" height="33">Dépt. : </td> <td width="74%"><input type="text" size="2" name="departement" maxlength="2" class="fullsample_bouton" /> <b>Exemple :</b> 92</td> </tr> <tr > <td height="33"> </td> <td> </td> </tr> <tr> <td> </td> <td><input type="submit" value="<?php echo RECHERCHER; ?>"></td> </tr> </table> </form> </fieldset> <?php /////////////////////////// // recherche par mot-clé /////////////////////////// if (isset($_GET["objet_du_marche"])){ ?> <fieldset class="fieldset"><legend class="legend">Résultat de votre recherche</legend> <?php // objectif 1: lister les colonnes de la table `module_appel_doffre` $colonnes_table = array(); $sql = "SHOW COLUMNS FROM `module_appel_doffre`"; // Exécution requête mysql_select_db("", mysql_connect("", "", "")) or die(mysql_error()); $result = mysql_query($sql) or die(mysql_error()); while ($result && $row = mysql_fetch_array($result)){ $colonnes_table[] = $row["Field"]; // champ "field" contient le nom d'une colonne de la table } // objectif 2: réaliser une recherche du mot-clé envoyé par le formulaire dans toutes les colonnes de la table if (count($colonnes_table)>0){ $sql = "SELECT * FROM `module_appel_doffre` WHERE "; // début de la requête SELECT $sql .= "CONCAT(`" . implode("`,`", $colonnes_table) . "`) "; // pour avoir le format: CONCAT(champ1, champ2, ...) $sql .= " LIKE '%" . $_GET["objet_du_marche"] . "%'"; // pour avoir le format LIKE '%valeur du mot-clé%' $sql .= " AND annonce_publiee_le like '%".$date_publication."%' LIMIT 0,20"; // on obtient : SELECT * FROM `module_appel_doffre` WHERE CONCAT(champ1, champ2, ...) LIKE '%valeur du mot-clé%' // Exécution requête mysql_select_db("", mysql_connect("", "", "")) or die(mysql_error()); $result = mysql_query($sql) or die(mysql_error()); if (mysql_num_rows($result)>0){ // affichage sous forme de table html // lignes détail => valeurs des cases du tableau echo "<br><div style='overflow: scroll; border: #000000 0px solid; height: 800px; margin-left: 5px; margin-right: 5px;'>"; echo "<table cellpadding=\"5\" border=\"1\" bgcolor=\"#F2F3FF\" width=\"100%\">"; echo "<tr>"; echo "<th style=\"text-align:center\"><b>Date de publication</b></th>"; echo "<th style=\"text-align:center\"><b>Objet du marché</b></th>"; echo "<th style=\"text-align:center\"><b>Dépt.</b></th>"; echo "</tr>"; while ($result && $row = mysql_fetch_array($result)){ echo " <tr><td width=\"30%\"> ".stripslashes($row['annonce_publiee_le'])."</td>"; echo " <td width=\"60%\"> ".substr(stripslashes($row['objet_du_marche']),0,100)."...<br><a href=\"afficher_appels_doffre.php?objet_marche=".$row['objet_du_marche']."\">Lire la suite<a/></td>"; echo " <td width=\"10%\" style=\"text-align:center\"> ".stripslashes($row['departement_de_publication'])."</td>"; } echo "</tr></table>"; echo "</div>"; } else { echo "<p>Mot-clé '", $_GET["objet_du_marche"], "' non trouvé!</p>"; } } } // fin if isset($_GET["mots_cles"]) ?> </fieldset>
<?php //------------------------------------------------------------------------------------------ $conn = db_connect(); $sql = "SELECT * FROM `module_appel_doffre` WHERE objet_du_marche = '$_GET[objet_du_marche]' "; $result = mysql_query($sql, $conn); $dossier = mysql_fetch_array($result); //------------------------------------------------------------------------------------------ ?> <fieldset class="fieldset"><legend class="legend">AVIS DE MARCHE <?php echo $dossier['annonce_n']; ?></legend> <?php echo "objet :".$dossier['annonce_publiee_le']."<br>"; ?> <?php echo "Département :".$dossier['adresse_internet']."<br>"; ?> <?php echo "Département :".$dossier['objet_du_marche']."<br>"; ?> <?php echo $sql; ?> </fieldset>
par orell1 » 14 avr. 2011, 00:30
-- -- Structure de la table `module_appel_doffre` -- CREATE TABLE IF NOT EXISTS `module_appel_doffre` ( `id` int(11) NOT NULL auto_increment, `référence_du_boamp` text, `annonce_publiée_le` text, `département_de_publication_ ` text, `annonce_no ` text, `nom_et_adresse_officiels_de_lorganisme_acheteur ` text, `adresse_internet ` text, `objet_du_marché ` text, `conditions_et_mode_de_paiement_pour_obtenir_les_do` text, `conditions_de_remise_des_offres_ou_des_candidature` text, `date_denvoi_du_présent_avis_à_la_publication ` text, `tél` text, `télécopieur` text, `instance_chargée_des_procédures_de_recours` text, `organe_chargé_des_procédures_de_médiation` text, `service_auprès_duquel_des_renseignements_peuvent_ê` text, `adresse_internet` text, `objet_du_marché` text, `boamp_n°` text, `annonce_n°` text, `nom_et_adresse_officiels_de_lorganisme_acheteur` text, `correspondant` text, `adresse_internet_du_profil_dacheteur` text, `lieu_dexécution` text, `caractéristiques_principales` text, `des_variantes_seront_elles_prises_en_compte` text, `prestations_divisées_en_lots` text, `durée_du_marché_ou_délai_dexécution` text, `date_prévisionnelle_de_commencement_des_travaux ` text, `critères_dattribution` text, `type_de_procédure` text, `date_limite_de_réception_des_offres` text, `date_denvoi_du_présent_avis_à_la_publication` text, `principales_activités_du_pouvoir_adjudicateur` text, `la_procédure_dachat_du_présent_avis_est_couverte_p` text, `modalités_essentielles_de_financement_et_de_paieme` text, `lexécution_du_marché_est_soumise_à_dautres_conditi` text, `conditions_de_participation` text, `critères_de_sélection_des_candidatures` text, `marché_réservé` text, `justifications_à_produire_quant_aux_qualités_et_ca` text, `délai_minimum_de_validité_des_offres` text, `autres_renseignements` text, `adresse_auprès_de_laquelle_des_renseignements_dord` text, `courriel` text, `cpv_objet_principal` text, `cautionnement_et_garanties_exigés` text, `forme_juridique_que_devra_revêtir_le_groupement_do` text, `situation_juridique_références_requises` text, `renseignements_complémentaires` text, `renseignements_relatifs_aux_lots` text, `numéro_de_référence_attribué_au_marché_par_le_pouv` text, `capacité_économique_et_financière_références_requi` text, `catégorie_de_services` text, `code_nuts` text, `date_limite_dobtention` text, `date_limite_de_réception_des_candidatures` text, `référence_professionnelle_et_capacité_technique_ré` text, `lieu_dexécution ` text, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=109 ;
Les données sont enregistrées dans la table eeeeeee
par sadeq » 13 avr. 2011, 19:29
3) Page de recherche avec le lien en savoir plus (ce lien permet d'afficher les informations concernant la fiche qui vient d'être recherchée) ==> Actuellement la fiche qui s'affiche ne correspond en rien au résultat de la recherche
<p> 9 LEGRAND <a href="afficherDetailClient.php?id=9">Lire de détail</a><br /> 10 LEDUC <a href="afficherDetailClient.php?id=10">Lire de détail</a><br /> 11 REQUIN <a href="afficherDetailClient.php?id=11">Lire de détail</a><br /> 12 LEROY <a href="afficherDetailClient.php?id=12">Lire de détail</a><br /> </p>
$sql = "SELECT * FROM client WHERE id = " . $_GET['id'];
<?php // fonction de conversion utilisée pour transformer des caractères indésirables function conversionCar($intitulé){ // Tableau de conversion : la première chaine des array peut être enrichi dans le temps $conversion = array( array('[,?;.:/!&~’"\#\\\'}{)(\]\[+*=§%µ$£€¤¨`\<>]', ''), // tous les caractères spéciaux sont effacés // Remplacement des caractères accentués array('[éèêë]', 'e'), array('à', 'a'), array("ç", 'c'), array('ù', 'u'), // Attention: les règles suivantes sont enchainées et doivent rester les dernières array('(-)', ' '), // un tiret => un seul espace array('(\s+)', ' '), // plusieurs espace => un seul espace array('\s', '_') // un espace => un souligné _ ); foreach($conversion as $regle){ list($car_indesirable, $car_valide) = $regle; $intitulé = preg_replace('#'.$car_indesirable.'#', $car_valide, trim($intitulé)); } return strtolower(trim($intitulé)); // en minuscule } // echo conversionCar("éèêë"); ?>
par orell1 » 13 avr. 2011, 01:16
function conversionCar($intitulé){ // Tableau de conversion : la première chaine des array peut être enrichi dans le temps (format expressions régulières) $conversion = array( array('[,?;.:/!&~’"\#\\\'}{)(\]\[+*=§%µ$£€¤¨`\<>]', ''), // tous les caractères spéciaux sont effacés // Remplacement des caractères accentués array('[éèêë]', 'e'), array('à', 'a'), array("ç", 'c'), array('ù', 'u'), // Attention: les règles suivantes sont enchainées et doivent rester les dernières array('(-)', ' '), // un tiret => un seul espace array('(\s+)', ' '), // plusieurs espace => un seul espace array('\s', '_') // un espace => un souligné _ );
par sadeq » 13 avr. 2011, 00:53
<?php // Source de données à importer avec le délimiteurs suivants : // ^p : saut de ligne entre les enregistrements // | nom du champ # // # texte valeur du champ précédent (saut de ligne ou fin de fichier) // // données sous forme de fichier texte externe $source_data = file_get_contents("data1.txt"); // diviser la source en lignes d'enregistrements (délimiteur ^p) $tab_source_data = explode('^p', $source_data); //echo "<pre>"; print_r($tab_source_data); echo "</pre>"; // Extraction des données dans le tableau final $tab_final = array(); foreach($tab_source_data as $j=>$enregistrement){ // Extraction des couples champ/valeur $couples_champs_valeurs = explode('|', $enregistrement); //echo "<pre>"; print_r($couples_champs_valeurs); echo "</pre>"; // Exctraction de chaque champ et sa valeur, puis stockage de $tab_final foreach($couples_champs_valeurs as $intitulé_valeur){ $temp = explode('#', $intitulé_valeur); if (count($temp)>=2) { // 2 champs attendus list($intitulé, $valeur) = $temp; if (trim($intitulé)!='') { //conversion de l'intitulé d'un champ éliminer des caractères indésirables $intitulé = conversionCar($intitulé); //transformation: attention sous MySQL, la taille max nom du champ = 64 car $intitulé = trim(substr($intitulé, 0,64)); // stockage dans $tab_final et requête SQL $tab_final[$j][trim($intitulé)] = trim($valeur); // $j = n°ligne enregistrement } } } } // affichage juste pour le test //echo "<pre><b>Tableau Final</b> : "; print_r($tab_final); echo "</pre>"; // file d'attente SQL qui va contenir le lot de requêtes à exécuter $file_attente_sql = array(); foreach($tab_final as $enregistrement){ // initialisation de la requête INSERT/SET pour cet enregistrement $sql_insert = "INSERT INTO `module_appel_doffre` SET "; foreach($enregistrement as $champ=>$valeur){ $sql_insert .= " `" . trim($champ) . "` = '" . addslashes(trim($valeur)). "',"; } // ajouter la requête à la file d'attente SQL $file_attente_sql[]['requête'] = preg_replace('#(,)\s*$#', ';', $sql_insert); // remplacer la dernière virgule dans SQL par ; } // Exécution des requêtes de la file d'attente SQL mysql_select_db("test", mysql_connect("localhost", "root")) or die(mysql_error()); if (count($file_attente_sql)>0){ foreach($file_attente_sql as $i=>$sql){ if (trim($sql['requête'])!='' && @mysql_query($sql['requête'])) $file_attente_sql[$i]['état']='Ok'; else $file_attente_sql[$i]['état']='kO ('.mysql_errno().') : '.mysql_error(); } } mysql_close(); // affichage de l'état d'exécution des requêtes echo "<pre>"; print_r($file_attente_sql); echo "</pre>"; // FIN DU PROGRAMME PRINCIPAL // fonction de conversion utilisée pour transformer des caractères indésirables function conversionCar($intitulé){ // Tableau de conversion : la première chaine des array peut être enrichi dans le temps $conversion = array( array('[,?;.:/!&~’"\#\\\'}{)(\]\[+*=§%µ$£€¤¨`\<>]', ''), // tous les caractères spéciaux sont effacés // Remplacement des caractères accentués array('[éèêë]', 'e'), array('à', 'a'), array("ç", 'c'), array('ù', 'u'), // Attention: les règles suivantes sont enchainées et doivent rester les dernières array('(-)', ' '), // un tiret => un seul espace array('(\s+)', ' '), // plusieurs espace => un seul espace array('\s', '_') // un espace => un souligné _ ); foreach($conversion as $regle){ list($car_indesirable, $car_valide) = $regle; $intitulé = preg_replace('#'.$car_indesirable.'#', $car_valide, trim($intitulé)); } return strtolower(trim($intitulé)); // en minuscule }
par orell1 » 13 avr. 2011, 00:44
par orell1 » 13 avr. 2011, 00:39