Parser des caractéristiques techniques et générer un tableau convivial

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 947 fois - Téléchargée 30 fois

Contenu du snippet

Ce script récupére des données brutes pour générer un tableau où des boutons permettent à l'internaute de voir les caractéristiques qui l'interresse.

Dans le source, $caracteristiques contient des données comme ci-dessous:

DIMENSIONS
Longueur : 2260 mm
Hauteur de Selle: 693 mm
Garde au Sol: 141.0 mm
Angle de Chasse / Chasse : 29.6º / 116.8 mm
Empattement : 1520 mm
Contenance du Réservoir : 12.9 L
Capacité en Huile : 3.4 L
Poids à Vide : 251 kg
MOTORISATION
Moteur : Evolution
Cylindrée : 883 cm³
Alésage et Course : 76.2 mm x 96.8 mm
Couple: 69 nm @ 4200 trm
Alimentation : Carburateur
Taux de Compression : 9 / 1
Rapports (Finaux)
1ère : 9.79
2ème : 6.73
3ème : 5.22
4ème : 4.30
5ème : 3.64
ROUES/PNEUS
Roues
Avant : 19" 13 jantes à bâtons
Arrière : 16" 13 jantes à bâtons
Dim. des Pneus
Avant : 100/90-19 57H
Arrière : 150/80B16 71H

Concrétement, il y a une caractéristique (ou un titre) par ligne, et le nom est séparé de sa valeur par un deux-points (:)... Et parfois même des lignes vides, des espaces, ou des tabulations inutiles.

Le script reconnait les titres de groupes de caractéristiques pour ajouter les boutons permettant de les afficher ou cacher (par défaut)... Si 2 titres se suivent, ils seront confondus en un seul.

Les couleurs et bordures sont définies via des classes de style CSS.

Source / Exemple :


//Variable avec les données brutes
			$caracteristiques = stripslashes($caracteristiques);

				echo("<TABLE CLASS=TableauSpecifications WIDTH='100%' CELLPADDING=0 CELLSPACING=0><TR><TD COLSPAN=2 CLASS=TitreSpecifications><b>Caractéristiques techniques</b></TD></TR>\n<TBODY>\n");
				//Une caracteristique ou un titre par ligne, les lignes vides sont acceptées
				$listecaracteristiques = explode("\n",$caracteristiques);
				
				$nbcaracteristiques = count($listecaracteristiques);
				$nbsouscategories = 0;
				$dernierecaracteristique = 0;
				
				for ($i = 0; $i < $nbcaracteristiques; $i++)
					{
					//cest une caracteristique ou un titre ?
					if (strpos($listecaracteristiques[$i],":") > 3)
						{
						echo("<TR><TD CLASS=SpecificationNomValeur WIDTH=35%><u>".str_replace(":"," :</u></TD><TD CLASS=SpecificationValeur><i>",$listecaracteristiques[$i])."</i></TD></TR>\n");
						$dernierecaracteristique = $i;
						}
					//Cest un titre ou une ligne vide ?
					else if (trim($listecaracteristiques[$i]) != "")
						{
						//Cest un soustitre ou un titre principal ?
						if (($i >= 1) AND (strpos($listecaracteristiques[$dernierecaracteristique],":") <= 1))
							{
							echo("<TR><TD COLSPAN=2 CLASS=SousTitreSpecifications><b><u>$listecaracteristiques[$i] :</u></b></TD></TR>\n");
							}
						else
							{
							echo("</TBODY>\n<TR><TD COLSPAN=2 CLASS=SousTitreSpecifications><INPUT TYPE=Button VALUE=Afficher ID=AfficherGroupe$nbsouscategories CLASS=\"Bouton Boutonspecifications\" onclick=\"groupespecifications$nbsouscategories.style.display = 'inline'; CacherGroupe$nbsouscategories.style.display='inline'; AfficherGroupe$nbsouscategories.style.display='none';\"><INPUT TYPE=Button VALUE=Cacher ID=CacherGroupe$nbsouscategories CLASS=\"Bouton Boutonspecifications\" onclick=\"groupespecifications$nbsouscategories.style.display = 'none'; CacherGroupe$nbsouscategories.style.display='none'; AfficherGroupe$nbsouscategories.style.display='inline';\" STYLE=\"display: none\"> <u>les caractéristiques <b>$listecaracteristiques[$i]</b> :</u></TD></TR>\n<TBODY ID=groupespecifications$nbsouscategories STYLE=\"display: none\">\n");
							$nbsouscategories++;
							}
						$dernierecaracteristique = $i;
						}
					}
					
				echo("</TBODY></TABLE>\n");

Pour la présentation (comme sur la capture),  il faut faire la déclaration de style CSS ci-dessous :

TABLE.TableauSpecifications {border-width: 1px; border-style: solid; border-collapse: collapse; border-color: #FFCC00; border-right-width: 2px; border-bottom-width: 2px}
TD.TitreSpecifications,TD.SousTitreSpecifications, TD.SpecificationTitre,TD.SpecificationNomValeur, TD.SpecificationPrix, TD.SpecificationValeur,TD.SpecificationReference {padding: 3px; border-width: 1px; border-style: solid; text-align: left}
TD.TitreSpecifications {text-align: center; color: #4D4D4D; background-color: #FFCC00; font-size: 14px}
TD.SousTitreSpecifications {color: #4D4D4D; background-color: white; border-style: none; border-color: #FFCC00; border-top-style: solid}
TD.SpecificationTitre,TD.SpecificationNomValeur, TD.SpecificationPrix, TD.SpecificationValeur,TD.SpecificationReference {padding: 1px; border-style: none; padding-left: 3px}
TD.SpecificationTitre,TD.SpecificationNomValeur {color: #4D4D4D; background-color: #CCCCCC; border-color: white; border-right-style: solid; vertical-align: top}
TD.SpecificationPrix {text-align: right; font-weight: bold; background-color: #A5A5A5}
TD.SpecificationReference {text-align: left; background-color: #A5A5A5}
TD.SpecificationNomValeur {}
TD.SpecificationValeur {text-align: left; background-color: #A5A5A5;}
INPUT.Boutonspecifications {color: #4D4D4D; background-color: #EFEFEF}

Conclusion :


Script réalisé pour le site www.harley-davidson-lille.com qui sera ouvert au public fin octobre 2003 ;o)

A voir également

Ajouter un commentaire

Commentaires

cs_Bernard74
Messages postés
40
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
26 janvier 2013

OK !!! tout fonctionne correctement ! en fait je testais dans mon navigateur sous linux (mozilla) et çà ne marchis pas .. mais tout est ok sous IE 5 !
Je te remercie pour ta patience .... et excuse moi pour ce dérangement
Bernard
cs_olid
Messages postés
296
Date d'inscription
lundi 2 septembre 2002
Statut
Membre
Dernière intervention
28 janvier 2008

Il manque les sauts de lignes " n" :o|
cs_Bernard74
Messages postés
40
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
26 janvier 2013

Voila ce que j'ai fait : mais je n'y arrive toujours pas ! suis dsl de t'embeter .... mais je debute vraiement et suis un peu largué !
<?php

$caracteristiques="DIMENSIONS"."
";
$caracteristiques=$caracteristiques."Longueur : 2260 mm"."
";
$caracteristiques=$caracteristiques."Hauteur de Selle: 693 mm"."
";
$caracteristiques=$caracteristiques."Garde au Sol: 141.0 mm"."
";
$caracteristiques=$caracteristiques."Angle de Chasse / Chasse : 29.6º / 116.8 mm"."
";
$caracteristiques=$caracteristiques."Empattement : 1520 mm"."
";
$caracteristiques=$caracteristiques."Contenance du Réservoir : 12.9 L"."
";
$caracteristiques=$caracteristiques."Capacité en Huile : 3.4 L"."
";
$caracteristiques=$caracteristiques."Poids à Vide : 251 kg"."
";
$caracteristiques=$caracteristiques."MOTORISATION"."
";
$caracteristiques=$caracteristiques."Moteur : Evolution"."
";
$caracteristiques=$caracteristiques."Cylindrée : 883 cm³"."
";
$caracteristiques=$caracteristiques."Alésage et Course : 76.2 mm x 96.8 mm"."
";
$caracteristiques=$caracteristiques."Couple: 69 nm @ 4200 trm"."
";
$caracteristiques=$caracteristiques."Alimentation : Carburateur"."
";
$caracteristiques=$caracteristiques."Taux de Compression : 9 / 1"."
";
$caracteristiques=$caracteristiques."Rapports (Finaux)"."
";
$caracteristiques=$caracteristiques."1ère : 9.79"."
";
$caracteristiques=$caracteristiques."2ème : 6.73"."
";
$caracteristiques=$caracteristiques."3ème : 5.22"."
";
$caracteristiques=$caracteristiques."4ème : 4.30"."
";
$caracteristiques=$caracteristiques."5ème : 3.64"."
";
$caracteristiques=$caracteristiques."ROUES/PNEUS"."
";
$caracteristiques=$caracteristiques."Roues"."
";
$caracteristiques=$caracteristiques."Avant : 19' 13 jantes à bâtons"."
";
$caracteristiques=$caracteristiques."Arrière : 16' 13 jantes à bâtons"."
";
$caracteristiques=$caracteristiques."Dim. des Pneus"."
";
$caracteristiques=$caracteristiques."Avant : 100/90-19 57H"."
";
$caracteristiques=$caracteristiques."Arrière : 150/80B16 71H"."
";

//Variable avec les données brutes
$caracteristiques = stripslashes($caracteristiques);

echo"<html>";
echo"<form name='form'>";
echo"<STYLE>";
echo"TABLE.TableauSpecifications {border-width: 1px; border-style: solid; border-collapse: collapse; border-color: #FFCC00; border-right-width: 2px; border-bottom-width: 2px}";
echo"TD.TitreSpecifications,TD.SousTitreSpecifications, TD.SpecificationTitre,TD.SpecificationNomValeur, TD.SpecificationPrix, TD.SpecificationValeur,TD.SpecificationReference {padding: 3px; border-width: 1px; border-style: solid; text-align: left}";
echo"TD.TitreSpecifications {text-align: center; color: #4D4D4D; background-color: #FFCC00; font-size: 14px}";
echo"TD.SousTitreSpecifications {color: #4D4D4D; background-color: white; border-style: none; border-color: #FFCC00; border-top-style: solid}";
echo"TD.SpecificationTitre,TD.SpecificationNomValeur, TD.SpecificationPrix, TD.SpecificationValeur,TD.SpecificationReference {padding: 1px; border-style: none; padding-left: 3px}";
echo"TD.SpecificationTitre,TD.SpecificationNomValeur {color: #4D4D4D; background-color: #CCCCCC; border-color: white; border-right-style: solid; vertical-align: top}";
echo"TD.SpecificationPrix {text-align: right; font-weight: bold; background-color: #A5A5A5}";
echo"TD.SpecificationReference {text-align: left; background-color: #A5A5A5}";
echo"TD.SpecificationNomValeur {}";
echo"TD.SpecificationValeur {text-align: left; background-color: #A5A5A5;}";
echo"INPUT.Boutonspecifications {color: #4D4D4D; background-color: #EFEFEF}";
echo"</STYLE>";
echo("Caractéristiques techniques,

\");
//Une caracteristique ou un titre par ligne, les lignes vides sont acceptées
$listecaracteristiques = explode(\"
\",$caracteristiques);

$nbcaracteristiques = count($listecaracteristiques);
$nbsouscategories = 0;
$dernierecaracteristique = 0;

for ($i = 0; $i < $nbcaracteristiques; $i++)
{
//cest une caracteristique ou un titre ?
if (strpos($listecaracteristiques[$i],\":\") > 3)
{
echo(\"----
".str_replace(":"," :, ",$listecaracteristiques[$i]).",
\");
$dernierecaracteristique = $i;
}
//Cest un titre ou une ligne vide ?
else if (trim($listecaracteristiques[$i]) != \"\")
{
//Cest un soustitre ou un titre principal ?
if (($i >= 1) and (strpos($listecaracteristiques[$dernierecaracteristique],\":\") <= 1))
{
echo(\"----
$listecaracteristiques[$i] :,
\");
}
else
{
echo(\"
----
les caractéristiques $listecaracteristiques[$i] :,

\");
$nbsouscategories++;
}
$dernierecaracteristique = $i;
}
}
echo("

");
echo"</form></html>";

?>
cs_olid
Messages postés
296
Date d'inscription
lundi 2 septembre 2002
Statut
Membre
Dernière intervention
28 janvier 2008

echo"include afficheur.css"; .... :o. tes vraiment un newbie toi !!!?

tu aurais due ecrire çà:

include("afficheur.css");

...et oublie pô de charger tes valeurs dans $caracteristiques :op
cs_Bernard74
Messages postés
40
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
26 janvier 2013

Voila ce que j'ai fait : 9à ne parche pas ! grrr !

echo"<html>";
echo"<form name='form'>";
echo"<STYLE>";
echo"include afficheur.css";
echo"</STYLE>";


echo("Caractéristiques techniques,

\");
//Une caracteristique ou un titre par ligne, les lignes vides sont acceptées
$listecaracteristiques = explode(\"
\",$caracteristiques);

$nbcaracteristiques = count($listecaracteristiques);
$nbsouscategories = 0;
$dernierecaracteristique = 0;

for ($i = 0; $i < $nbcaracteristiques; $i++)
{
//cest une caracteristique ou un titre ?
if (strpos($listecaracteristiques[$i],\":\") > 3)
{
echo(\"----
".str_replace(":"," :, ",$listecaracteristiques[$i]).",
\");
$dernierecaracteristique = $i;
}
//Cest un titre ou une ligne vide ?
else if (trim($listecaracteristiques[$i]) != \"\")
{
//Cest un soustitre ou un titre principal ?
if (($i >= 1) and (strpos($listecaracteristiques[$dernierecaracteristique],\":\") <= 1))
{
echo(\"----
$listecaracteristiques[$i] :,
\");
}
else
{
echo(\"
----
les caractéristiques $listecaracteristiques[$i] :,

\");
$nbsouscategories++;
}
$dernierecaracteristique = $i;
}
}

echo("

");
echo"</form></html>";

?>

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.