Page 1 sur 7

PHP vers sql ou excel

Posté : 01 avr. 2011, 23:17
par orell1
Bonsoir à tous,

je voulais savoir s'il est possible de créer un tableau à partir d'un texte en reprenant comme intitulé de colonne les mots ou phrases qui se trouvent devant les ":"
EXEMPLE:
Nom : Olivier, Prénom : Adrien, Résidence: Paris
Age: 23 ans

Voila, en fait j'aimerai que les colonnes se nommes NOM, PRENOM etc. et qu'en dessous y figure les infos correspondantes.

Merci pour votre aide.

Re: PHP vers sql ou excel

Posté : 01 avr. 2011, 23:25
par orell1
ou alors présenter le texte sous forme de tableau en PHP sur le même principe énoncé sur le message précédent...
En gros les":" signifie la séparation entre l'intitulé de la colonne et le contenu de la colonne...

Re: PHP vers sql ou excel

Posté : 01 avr. 2011, 23:37
par Aureusms
je pesne que tu veux des infos sur explode() : http://php.net/manual/fr/function.explode.php
Dasn ton cas :
$string = "Nom : Olivier";
$tabString = explode (":",$string);

Re: PHP vers sql ou excel

Posté : 01 avr. 2011, 23:44
par orell1
Ok merci.

Il faut que je fasse un truc de ce genre?

<table style="margin-top: -20px; margin-left:0px;" cellpadding="5px"><tr>
<td width="33.33%">&nbsp;</td>
<td width="33.33%">&nbsp;</td>
<td width="33.33%">&nbsp;</td>
</tr>
<?php
$cpt=0;
$nbCols=3;
$rs = mysql_query("SELECT * FROM entreprises_coordonnees WHERE num_client = '$num_client'"); // exécution de la requête
// Nota : on pourrait tout aussi bien parcourir les éléments d'un tableau ou les fichiers d'un dossier

while ($row=mysql_fetch_assoc($rs)) { // parcours des résultats

  $tabActivite = explode(':',  $row['activite']); // construit le tableau d'activités

  foreach($tabActivite as $activite) { // on parcours le tableau

    // début d'une ligne
    if ($cpt%$nbCols==0) // on divise le nb d'élément par le nb de colonnes. Si le reste est de 0 ...
        echo '<tr>'; // ..., alors on est sur le premier élément d'une ligne

    // On place chaque élément dans une cellule du tableau
    echo '<td>';
    echo '<img src="images/liste_activite.jpg" height="40px" align="left" style="margin-right:10px;"/>'.$activite .''; // affichage de tout ce qu'on veut dans la cellule
    echo '</td>';

    // fin d'une ligne
    if ($cpt%$nbCols==($nbCols-1)) // on divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ...
        echo '</tr>'; // ..., on est sur le dernier élément d'une ligne

    $cpt++; // on incrémente le compteur pour savoir où on en est
  }
}
		
 ?>
</tr>
</table>

Re: PHP vers sql ou excel

Posté : 02 avr. 2011, 00:13
par orell1
je viens d'essayer mon truc, ça fonctionne bien tout se met en colonne mais il n'y a pas de différenciation entre les intitulés de colonnes et les contenus... de plus comment faire quand dans le texte il y a plusieurs fois nom : ou prénom : pour que le php ne fasse pas des milliers de colonnes avec les mêmes intitulés...

C'est assez complexe mais je pense que c'est faisable... Ou peut-être y a t'il une autre solution?

Re: PHP vers sql ou excel

Posté : 02 avr. 2011, 05:54
par stealth35
c'est plus a toi de bien faire ta base de données avec les bon champs

Re: PHP vers sql ou excel

Posté : 02 avr. 2011, 09:49
par orell1
Bonjour,

La base de données est crée et bien faite, ce n'est pa ça le problème... Ce que je souhaite faire c'est que le délimiter repère les titres des colonnes et le contenu des colonnes...

Merci.

Re: PHP vers sql ou excel

Posté : 02 avr. 2011, 14:33
par sadeq
Bonjour,

Le mieux est de stocker l'extraction du champs "activité" dans un tableau avant de faire l'affichage. Les intitulés seront des index des cases et leurs contenus seront stockés comme valeurs des cases du tableau.

Voici un exemple:
<?php
$rs = mysql_query("SELECT * FROM entreprises_coordonnees WHERE num_client = '$num_client'"); // exécution de la requête

// tableau des activités à construire
$tab_activités = array();

// parcours des résultats
while ($row=mysql_fetch_assoc($rs)) { 
  // extraire une activité (intitulé + valeur séparés par deux-points
  list($intitulé, $valeur) = explode(':',  $row['activite']); 
  
  // stocker l'activité traitée dans le tableau d'activités
   $tab_activités[$intitulé][] = $valeur;  // toutes les valeurs ayant le même intitulé seront stockée 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_activités); echo "</pre>";

// affichage sous forme de table html 
echo "<table border=\"1\"><tr>";
// entêtes de colonnes => les index du tableau
$colonnes = array_keys($tab_activités);
foreach ($colonnes as $intitulé){
	echo "<th>", $intitulé, "</th>";
}
echo "</tr>";

// lignes détail => valeurs des cases du tableau
$colonne1 = $colonnes[0]; // une colonne pour determiner le nombre de lignes à afficher
for ($i=0; $i<count($tab_activités[$colonne1]); $i++){  // parcourir les lignes
	echo "<tr>";
	foreach ($colonnes as $colonne){ // afficher les lignes par colonne
		echo "<td>", $tab_activités[$colonne][$i], "</td>";
	}
	echo "</tr>";
}
echo "</table>";
?>

Re: PHP vers sql ou excel

Posté : 03 avr. 2011, 13:00
par orell1
Bonjour,

Tout d'abord un grand merci pour votre patience et pour le temps que vous me consacrez!
Je viens d'essayer le codage que tu as préparé, mais rien de s'affiche...
Voici la structure de ma table :
--
-- Structure de la table `annonces_appels_doffre`
--

CREATE TABLE IF NOT EXISTS `annonces_appels_doffre` (
  `id` varchar(11) NOT NULL,
  `annonces_marche` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

la page d'affichage affiche :


Array
(
)

Merci beaucoup!

Re: PHP vers sql ou excel

Posté : 03 avr. 2011, 13:07
par orell1
Ah je viens de modifier dans le codage le nom de la table qui était erronée et maintenant j'ai ça qui s'affiche :
Array
(
    [Référence du BOAMP ] => Array
        (
            [0] =>  11-72601 - Annonce publiée le 29 MARS 2011 

Avis de marché 

Département de publication 
            [1] =>  11-72655 - Annonce publiée le 29 MARS 2011 

Avis de marché 
Département de publication 
        )

)

Référence du BOAMP
11-72601 - Annonce publiée le 29 MARS 2011 Avis de marché Département de publication
11-72655 - Annonce publiée le 29 MARS 2011 Avis de marché Département de publication 
ça à l'air génial ton truc!
Comment faire maintenant pour qu'il fasse la même chose avec les autres éléments du texte qui précédent les ":" ???
Je sens qu'on est sur la bonne voie!
MERCI VRAIMENT!

Re: PHP vers sql ou excel

Posté : 03 avr. 2011, 13:11
par orell1
Ah je viens de modifier dans le codage le nom de la table qui était erronée et maintenant j'ai ça qui s'affiche :
Array
(
    [Référence du BOAMP ] => Array
        (
            [0] =>  11-72601 - Annonce publiée le 29 MARS 2011 

Avis de marché 

Département de publication 
            [1] =>  11-72655 - Annonce publiée le 29 MARS 2011 

Avis de marché 
Département de publication 
        )

)

Référence du BOAMP
11-72601 - Annonce publiée le 29 MARS 2011 Avis de marché Département de publication
11-72655 - Annonce publiée le 29 MARS 2011 Avis de marché Département de publication 
ça à l'air génial ton truc!
Comment faire maintenant pour qu'il fasse la même chose avec les autres éléments du texte qui précédent les ":" ???
Je sens qu'on est sur la bonne voie!
MERCI VRAIMENT!

LE NOUVEAU CODAGE:
<?php
$rs = mysql_query("SELECT * FROM annonces_appels_doffre"); // exécution de la requête

// tableau des activités à construire
$tab_activités = array();

// parcours des résultats
while ($row=mysql_fetch_assoc($rs)) {
  // extraire une activité (intitulé + valeur séparés par deux-points
  list($intitulé, $valeur) = explode(':',  $row['annonces_marche']);
 
  // stocker l'activité traitée dans le tableau d'activités
   $tab_activités[$intitulé][] = $valeur;  // toutes les valeurs ayant le même intitulé seront stockée 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_activités); echo "</pre>";

// affichage sous forme de table html
echo "<table border=\"1\"><tr>";
// entêtes de colonnes => les index du tableau
$colonnes = array_keys($tab_activités);
foreach ($colonnes as $intitulé){
        echo "<th>", $intitulé, "</th>";
}
echo "</tr>";

// lignes détail => valeurs des cases du tableau
$colonne1 = $colonnes[0]; // une colonne pour determiner le nombre de lignes à afficher
for ($i=0; $i<count($tab_activités[$colonne1]); $i++){  // parcourir les lignes
        echo "<tr>";
        foreach ($colonnes as $colonne){ // afficher les lignes par colonne
                echo "<td>", $tab_activités[$colonne][$i], "</td>";
        }
        echo "</tr>";
}
echo "</table>";
?>
ET VOICI UN TEXTE D'EXEMPLE :
Référence du BOAMP : 11-72655 - Annonce publiée le 29 MARS 2011 

Avis de marché 
Département de publication : 28 
Annonce No11-72655 
Fournitures 

-Nom et adresse officiels de l'organisme acheteur :Ville de Chartres.

 Correspondant : service Marchés Publics, place des Halles, 28019 Chartres Cedex, tél. : 02-37-23-40-64, télécopieur : 0237-
23-41-80, courriel : [email protected]. 
Adresse internet du profil d'acheteur : http://www.klekoon.com. 

Objet du marché :affaire no11s0032 - fourniture de matériels sportifs . 
Lieu d'exécution : chartres (28000). 

Caractéristiques principales : 

durée du marché : un an à compter de sa notification. Délai de livraison : 2 mois à compter de la notification du bon de 
commande. Date prévisionnelle de notification du marché : juin 2011 
Refus des variantes. 
Possibilité de présenter une offre pour plusieurs lots. 
Modalités essentielles de financement et de paiement et/ou références aux textes qui les réglementent : le règlement 
se fait par mandat administratif en 30 jours maximum. Le financement se fait sur le budget communal (ressources 
propres) . L'unité monétaire utilisée est l'euro. Les candidatures et les offres seront entièrement rédigées en langue 
française ainsi que les documents de présentation associés. 

Critères d'attribution : 

Offre économiquement la plus avantageuse appréciée en fonction du critère unique du prix le plus bas. 

Type de procédure :procédure adaptée. 

Date limite de réception des offres :19 avril 2011, à 16 heures. 
Délai minimum de validité des offres : 120 jours à compter de la date limite de réception des offres. 

Autres renseignements : 

Renseignements complémentaires :l'avis d'attribution relatif à cette procédure sera publié au Journal Officiel de 
l'union Européenne. L'instance chargée des procédures de recours est le Tribunal administratif d'orléans - 28 rue de 
la Bretonnerie 45054 ORLEANS Cedex 1 - france, tel : 02.38.77.59.13 et télécopieur : 02.38.53.85.16 - courriel : 
[email protected]. 

Conditions et mode de paiement pour obtenir les documents contractuels et additionnels : 

Le dossier de consultation est remis gratuitement, sur demande écrite (transmise par courriel, courrier ou télécopie) 
adressée au service marchés, précisant l'adresse à laquelle le dossier doit être transmis ou il peut être retiré sur 
place. Le DCE est téléchargeable gratuitement sur le site http://www.klekoon.com. 

Conditions de remise des offres ou des candidatures : 

la transmission des plis par voie électronique n'est pas autorisée. 

Date d'envoi du présent avis à la publication :29 mars 2011. 
Adresse auprès de laquelle des renseignements d'ordre administratif et technique peuvent être obtenus : et pour 
obtenir les documents et envoyer les plis : Voir adresse ci-dessus. 

Renseignements relatifs aux lots : 

Lot 1. -Sports collectifs 

Lot 2. -Gymnastique 

Lot 3. -Affichage électronique 

Lot 4. -Athlétisme 

Re: PHP vers sql ou excel

Posté : 03 avr. 2011, 14:29
par sadeq
Bonjour,

Ô ton texte ne correspond pas à ce que j'ai compris la première fois de ta question. Du coup le programme n'est plus valide au niveau de l'extraction des données dans le tableau. Mais le problème majeur avec ton texte c'est qu'il manque un délimiteur qui nous permet de distinguer un intitulé qui suit la valeur d'un intitulé précédent dans la séquence du texte. Car si on sait que les deux-points séparent un intitulé de sa valeur, on ne sait pas quand l'intitulé suivant doit être séparé de la valeur de l'intitulé qui le précède.

Alors voila la question fondamentale avant de programmer quoi que ce soit : Quels sont les intitulés et leurs valeurs que tu espères afficher par rapport au texte d'exemple que tu as donné ? :
Référence du BOAMP : 11-72655 - Annonce publiée le 29 MARS 2011

Avis de marché
Département de publication : 28
Annonce No11-72655
Fournitures

-Nom et adresse officiels de l'organisme acheteur :Ville de Chartres.

Correspondant : service Marchés Publics, place des Halles, 28019 Chartres Cedex, tél. : 02-37-23-40-64, télécopieur : 0237-
23-41-80, courriel : [email protected].
Adresse internet du profil d'acheteur : http://www.klekoon.com.

Objet du marché :affaire no11s0032 - fourniture de matériels sportifs .
Lieu d'exécution : chartres (28000).

Caractéristiques principales :

durée du marché : un an à compter de sa notification. Délai de livraison : 2 mois à compter de la notification du bon de
commande. Date prévisionnelle de notification du marché : juin 2011
Refus des variantes.
Possibilité de présenter une offre pour plusieurs lots.
Modalités essentielles de financement et de paiement et/ou références aux textes qui les réglementent : le règlement
se fait par mandat administratif en 30 jours maximum. Le financement se fait sur le budget communal (ressources
propres) . L'unité monétaire utilisée est l'euro. Les candidatures et les offres seront entièrement rédigées en langue
française ainsi que les documents de présentation associés.

Critères d'attribution :

Offre économiquement la plus avantageuse appréciée en fonction du critère unique du prix le plus bas.

Type de procédure :procédure adaptée.

Date limite de réception des offres :19 avril 2011, à 16 heures.
Délai minimum de validité des offres : 120 jours à compter de la date limite de réception des offres.

Autres renseignements :

Renseignements complémentaires :l'avis d'attribution relatif à cette procédure sera publié au Journal Officiel de
l'union Européenne. L'instance chargée des procédures de recours est le Tribunal administratif d'orléans - 28 rue de
la Bretonnerie 45054 ORLEANS Cedex 1 - france, tel : 02.38.77.59.13 et télécopieur : 02.38.53.85.16 - courriel :
[email protected].

Conditions et mode de paiement pour obtenir les documents contractuels et additionnels :

Le dossier de consultation est remis gratuitement, sur demande écrite (transmise par courriel, courrier ou télécopie)
adressée au service marchés, précisant l'adresse à laquelle le dossier doit être transmis ou il peut être retiré sur
place. Le DCE est téléchargeable gratuitement sur le site http://www.klekoon.com.

Conditions de remise des offres ou des candidatures :

la transmission des plis par voie électronique n'est pas autorisée.

Date d'envoi du présent avis à la publication :29 mars 2011.
Adresse auprès de laquelle des renseignements d'ordre administratif et technique peuvent être obtenus : et pour
obtenir les documents et envoyer les plis : Voir adresse ci-dessus.

Renseignements relatifs aux lots :

Lot 1. -Sports collectifs

Lot 2. -Gymnastique

Lot 3. -Affichage électronique

Lot 4. -Athlétisme

Re: PHP vers sql ou excel

Posté : 03 avr. 2011, 14:45
par orell1
C'est vrai tu as raison, j'ai retravaillé le texte, du coup j'ai mis le délimiteur "|" à la place des ":" et avant chaque phrase se trouvant devant les ":"ce qui fait que le texte est complétement séparé pas des "|"

comme ça c'est mieux?

Re: PHP vers sql ou excel

Posté : 03 avr. 2011, 14:50
par orell1
Pour répondre à ta question ce que je souhaite faire c'est que ce qui se trouve devant les ":" se transforme en intitulé (car dans les textes il y a plusieurs fois les mêmes intitulés) et tout ce qui se trouve après les":" soit rangé dans les colonnes correspondantes aux intitulés... :D

Merci beaucoup!

Re: PHP vers sql ou excel

Posté : 03 avr. 2011, 15:02
par sadeq
C'est vrai tu as raison, j'ai retravaillé le texte, du coup j'ai mis le délimiteur "|" à la place des ":" et avant chaque phrase se trouvant devant les ":"ce qui fait que le texte est complétement séparé pas des "|"

comme ça c'est mieux?
Veux-tu afficher s'il te plait, le nouveau texte d'exemple avec les nouveaux délimiteurs. Histoire d'être sur la même onde.