5568 sujets

Sémantique web et HTML

Bonsoir,

Je vous explique mon problème :

J'ai créer un site à l'aide du cms itseasy. Je souhaite insérer un script dans quelques pages avec la fonction include. Seulement lorsque je visualise la page, le script est bien inséré mais la feuille de style de ce script n'est pas pris en compte. Itseasy possèdant également une feuille de style, je pense que le problème se situe là (compatibilité entre les 2).

Pouvez vous m'aider ?


Merci

Problème en image :
http://img155.imageshack.us/img155/5788/cabinetlaemmelre9.jpg
Salut Alex67 Smiley cligne ,

à moins d'être médium (de haut niveau Smiley biggol !) c'est impossible de t'aider sans voir la page en ligne (ou à défaut les codes html et css).

A défaut, tu peux quand même jeter un oeil à ce point de la FAQ.

A+
Re',

plusieurs problèmes :

- le chemin :

1) http://www.cabinetlaemmel.com/themes/defaut/defaut.css
est correct.

2) http://www.cabinetlaemmel.com/includes/lang/fench/property.css
est incorrect Smiley murf !


- la codification :

1) <link rel="stylesheet" type="text/css" media="all" href="./themes/defaut/defaut.css" />
est valide.

2) <LINK REL="STYLESHEET" HREF="./includes/lang/fench/property.css">
est invalide Smiley murf !


- l'emplacement :

1) entre <head> et </head>
correct.

2) entre <body> et </body>
incorrect Smiley murf !


A+
Bonjour,

Dans la page finale, située à la racine du site, on trouvera donc le code HTML suivant:
<LINK REL="STYLESHEET" HREF="./includes/lang/fench/property.css">

On a déjà un double problème:
- cet élément de code ne respecte pas la syntaxe XHTML (or ta page est déclarée comme étant en XHTML 1.0 Strict);
- l'élément link ne peux pas être un enfant ou descendant de body, mais doit être placé dans le head de la page.

Voilà pour les problèmes de validation, qu'il serait bon de corriger.

Mais le fond du problème est surtout que le lien est erroné. Il s'agit d'un lien relatif à partir de la page en cours, et le fichier que le navigateur tentera de récupérer est le suivant:
http://www.cabinetlaemmel.com/includes/lang/fench/property.css
Fichier qui n'existe pas.
(En passant, le répertoire /propertymax/fench n'existe pas non plus... le serveur corrige apparemment l'erreur à la volée, mais il faudrait la corriger dans les pages. Smiley cligne )

Edit: grillé par Heyoan. Smiley biggol
Modifié par Florent V. (19 Jan 2008 - 15:44)
Merci pour vos réponse.

Les fichiers sont modifiés mais toujours la même erreur.

Modification :

- J'ai renommé le css (changé après quelques essais)

-
<link rel="stylesheet" type="text/css" media="all" href="./includes/lang/fench/style.css"/>
entre les balises head du fichier à inclure.
Ton lien est toujours erroné, car il pointe vers un fichier inexistant.

Je crois qu'à la fois Heyoan et moi-même t'avons indiqué ce problème. Il faudrait donc le corriger. Smiley cligne

De plus, pour l'emplacement de cet élément link tu as fait un peu n'importe quoi. Ta structure HTML ressemble maintenant à ceci:
<!DOCTYPE html>

<html>
	<head>
		<!-- Ici diverses infos et métadonnées -->
		<link ... />
	</head>
	<body>
		<!-- Ici du contenu -->
		<head>
			<link ... />
		</head>
	</body>
</html>

Si cela ne te semble pas problématique, il y a une grosse révision de HTML à faire!

Par ailleurs, le script que tu inclues génères un code HTML qui ne suit pas la syntaxe XHTML 1.0 Strict (ou même Transitional). Deux solutions:
- soit tu corriges le script inclus pour que le code qu'il génère suive la syntaxe XHTML;
- soit tu déclares tes pages en HTML 4.01 (Transitional, par exemple).
Le problème c'est que le fichier du script (location_.php) que j'essaye d'inclure est assez spécial. Je n'ai rien modifié au code donc pour les problèmes de syntaxes de vais voir ca. Pour le lien du css une petite erreur (fench au lieu de french) c'est corrigé Smiley cligne mais toujours le problème.

Le lien du css du script : http://www.cabinetlaemmel.com/propertymax/includes/lang/french/style.css

Mion fichier que je tente d'inclure :


<?php

  require ( "admin/config.php" );

  require ( "$FunctionFolder/CGI.php" );
  require ( "$FunctionFolder/SQL.php" );

  $cgi = new CGI ();
  $sql = new SQL ( $DBusername, $DBpassword, $server, $database );

  if ( ! $sql->isConnected () )
  {
    die ( $DatabaseError );
  }
   require ( "$FunctionFolder/CSQL.php" ); 
   require ( "$LanguageFolder/$language_pack/index.php" );
?>

<link rel="stylesheet" type="text/css" media="all" href="./includes/lang/french/style.css"/>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var submitcount=0;
function reset() {
document.emailform.name.value="";
document.emailform.email.value="";
document.emailform.address.value="";
}

function checkFields() {                    
if (                                    
 (document.emailform.name.value=="") ||
 (document.emailform.email.value=="")  ||
 (document.emailform.address.value==""))  
   {
   alert("<?php echo GENERAL_FORM_POPUP_ERROR_MESSAGE; ?>");
   return false;
   }
}
//  End --></SCRIPT> 

<?php
  
  if ( $cgi->getValue ( "op" ) == "SendInformationRequest" )
  {
    $yoursubject = "".EMAIL_SUBJECT." Ref: " . $cgi->getValue ( "propertyref" );
    $emailtext = "
-----------------------------------------------------------------------------
   ".EMAIL_TEXT_TITLE."
-----------------------------------------------------------------------------
".EMAIL_TEXT_BODY."

".EMAIL_PD."
".EMAIL_PROEPRTY_REF."      " . $cgi->getValue ( "propertyref" ) . "
".EMAIL_PROPERTY_ADDRESS."  " . $cgi->getValue ( "propertyaddress" ) . "
".EMAIL_PROPERTY_PRICE."    " . $cgi->getValue ( "propertyprice" ) . "

".EMAIL_RD."
".EMAIL_NAME."    " . $cgi->getValue ( "name" ) . "
".EMAIL_EMAIL_ADDRESS."   " . $cgi->getValue ( "email" ) . "

" . $cgi->getValue ( "address" ) . "

________________________________
".EMAIL_FOOTER."
";

    $yoursubject = stripslashes ( $yoursubject ); 
    $emailtext = stripslashes ( $emailtext );
    @mail ( $cgi->getValue ( "adminemailaddress" ), $yoursubject, $emailtext,
        "From: " . $cgi->getValue ( "email" ) ); 
?>
<br><br><br><p align=center><?php echo EMAIL_SUCCESS_MESSAGE; ?></p><br>
<p align="center"><a href="?op=search&po=R"><?php echo FORM_VIEW_RENT; ?></a></p><br><br>
<?php

  } 

  // VIEW MORE INFORMATION ABOUT PROPERTY
  if ( $cgi->getValue ( "op" ) == "mi" )
  {
  // Start of Display Output
    include "$TemplateFolder/layout_view.php";
  // End of Display output
  // START OF GET ESTATE AGENT DETAILS

    $arows = $sql->execute ( "SELECT * FROM " . $admin_table . " LIMIT 1",
        SQL_RETURN_ASSOC );
    $arow = $arows [ 0 ];

  
?>
<TABLE WIDTH="100%"  ALIGN="CENTER" class="lvp_top_nav_menu_bg">
<TR VALIGN="TOP">
<TD><P><?php echo LV_MORE_INFORMATION_TITLE; ?></P></TD>
</TR>
</TABLE>

<a name="CONTACT"></a>
<ul>
    <p align="left"><?php echo LV_MORE_INFORMATION_TEXT; ?></p>
</ul>
<p align="left">&nbsp;</p>
  <TABLE WIDTH="100%" align="left">
<TR><TD valign="top">
  
  </TD><TD>          <FORM METHOD="POST" NAME="emailform" ONSUBMIT="return checkFields()">
                <INPUT NAME="op" TYPE="hidden" VALUE="SendInformationRequest">
                  <INPUT NAME="propertyref" TYPE="hidden" VALUE="<?php echo $cgi->htmlEncode ( $row [ "propertyref" ] ); ?>">
                <INPUT NAME="propertyaddress" TYPE="hidden" VALUE="<?php echo $cgi->htmlEncode ( $row [ "propertyaddress" ] ); ?>">
                  <INPUT NAME="propertylocation" TYPE="hidden" VALUE="<?php echo $cgi->htmlEncode ( $row [ "propertylocation" ] ); ?>">
                    <INPUT NAME="propertyprice" TYPE="hidden" VALUE="<?php echo $cgi->htmlEncode ( $row [ "propertyprice" ] ); ?>">
                    <INPUT NAME="adminemailaddress" TYPE="hidden" VALUE="<?php
                    echo $cgi->htmlEncode ( $arow [ "adminemailaddress" ] ); ?>"> 
                  <TABLE CELLPADDING="1" CELLSPACING="1"> 
                   <TR> 
                    <TD ALIGN="RIGHT"> 
                      <P><?php echo LV_NAME; ?>&nbsp;</P></TD> 
                    <TD><INPUT TYPE="TEXT" NAME="name" SIZE="35"
                      MAXLENGTH="100"></TD> 
                   </TR> 
                   <TR> 
                    <TD ALIGN="RIGHT"> 
                      <P><?php echo LV_EMAIL; ?>&nbsp;</P></TD> 
                    <TD><INPUT TYPE="TEXT" NAME="email" SIZE="35"
                      MAXLENGTH="100"></TD> 
                   </TR> 
                   <TR> 
                    <TD ALIGN="RIGHT" VALIGN="TOP"> 
                      <P><?php echo LV_ADDRESS; ?>&nbsp;</P></TD> 
                    <TD><TEXTAREA NAME="address" ROWS="5" COLS="35"></TEXTAREA></TD> 
                   </TR>
<TR>
<TD ALIGN="RIGHT" VALIGN="TOP">&nbsp;</TD>
<TD><input name="" type="image" src="<?php print "$LanguageFolder/$language_pack"; ?>/buttons/button-send-request.gif"></TD>
</TR> 
                  </TABLE> 
                  <P>&nbsp;</P>
</FORM> </TD></TR></TABLE>
              
<?php
  }
  else if ( $cgi->getValue ( "op" ) == "search" )
  {
    $pt = $cgi->getValue ( "pt" );
    $pp = $cgi->getValue ( "pp" );
    $pb = $cgi->getValue ( "pb" );
    $pl = $cgi->getValue ( "pl" );
    $po = $cgi->getValue ( "po" );

    $query = "
      SELECT
        p.id                AS id,
        p.propertyoption    AS propertyoption,
        p.propertyprice     AS propertyprice,
        p.propertyaddress   AS propertyaddress,
        pl.propertylocation AS propertylocation,
        ps.propertystatus   AS propertystatus,
        pt.propertytype     AS propertytype,
        p.propertyref       AS propertyref,
        p.propertybedrooms  AS propertybedrooms,
        p.propertyphoto1    AS propertyphoto1,
        p.propertyphoto2    AS propertyphoto2,
        p.propertyphoto3    AS propertyphoto3,
        p.propertyphoto4    AS propertyphoto4,
        p.shortdescription  AS shortdescription,
        p.longdescription   AS longdescription
      FROM
        " . $property_table . " p
        INNER JOIN
        " . $propertytypes_table . " pt ON (p.propertytype=pt.id)
        INNER JOIN
        " . $propertylocations_table . " pl ON (p.propertylocation=pl.id)
        INNER JOIN
        " . $propertystatus_table . " ps ON (p.propertystatus=ps.id)
      WHERE
        p.propertyshow=1
      ";

    if ( $pt != "" )
      $query .= " AND p.propertytype=" . $sql->quote ( $pt );

    if ( $pp != "" )
      $query .= " AND p.propertyprice<=" . $sql->quote ( $pp );
    
    if ( $pb != "" )
      $query .= " AND p.propertybedrooms>=" . $sql->quote ( $pb );

    if ( $pl != "" )
      $query .= " AND p.propertylocation=" . $sql->quote ( $pl );

     if ( $po != "" )
      $query .= " AND p.propertyoption=" . $sql->quote ( $po );
    // set the query ordering
    if ( isset ( $property_search_order ) && $property_search_order != "" )
      $query .= "ORDER BY p." . $property_search_order . " " .
           ( "a" == strtolower ( substr ( $property_search_ordering, 0, 1 ) ) ?
             "ASC" : "DESC" );
    
    $results = $sql->execute ( $query, SQL_RETURN_ASSOC );
    
    $total_results = sizeof ( $results );

    if ( $total_results == 0 )
    {
      ?>
<br><br><p align="center"><?php echo GENERAL_NO_PROPERTIES_FOUND; ?></p>
<br><br><br>
<?php

    }
if ( $total_results  >0 ) {    
    $total_pages = ceil ( $total_results / $property_search_limit ); //total number of pages

    $page = $cgi->getValue ( "page" );

    if ( ! $page )
      $page = 1;
      
    $offset = ( $page - 1 ) * $property_search_limit; //starting number for displaying results out of DB 
    $max = $offset + $property_search_limit;
    $max = ( $max > $total_results ? $total_results : $max );
    
?>
<p align="center"><?php echo GENERAL_PROPERTIES_FOUND; ?></p><br>
<?php
 
    for ( $l = $offset; $l < $max; ++$l )
    { 
      $row = $results [ $l ];
      
      // Start of Display Output
      include "$TemplateFolder/layout_results.php";
      // End of Display output
    }  

    ##################################
    ?><div align="center"><p><?php echo GENERAL_PAGE; ?>  - <?php
    
    if ( $page != 1 )
    { 
    ?><a href="<?php echo $_SERVER [ 'PHP_SELF' ]; ?>?op=search&page=1&po=<?php echo $po; ?>&pt=<?php echo $pt; ?>&pp=<?php echo $pp; ?>&pb=<?php echo $pb; ?>&pl=<?php echo $pl; ?>">&lt;&lt; First</a>&nbsp;&nbsp;-&nbsp;<?php
      
      $prevpage = $page - 1; 
    }

    $to = ( $page < $total_pages - 2 ? $page + 3 : $total_pages );
    $from = ( $page >= 1 && $page <= 3 ? 1 : $page - 3 );

    for ( $i = $from; $i <= $to; ++$i ) 
    { 
      if ( $i == $total_results )
        $to = $total_results; 
        
      if ( $i != $page )
      { 
        ?><a href="?op=search&showold=yes&page=<?php echo $i; ?>&po=<?php echo $po; ?>&pt=<?php echo $pt; ?>&pp=<?php echo $pp; ?>&pb=<?php echo $pb; ?>&pl=<?php echo $pl; ?>"><?php echo $i; ?></a><?php
      } 
      else 
      { 
        ?><b>[<?php echo $i; ?>]</b><?php
      } 
      
      if ( $i != $total_pages ) 
        ?>&nbsp;&nbsp;<?php
    } 

    if ( $page != $total_pages )
    { 
      $nextpage = $page + 1; 

      ?>&nbsp;-&nbsp;&nbsp;<a href="?op=search&page=<?php echo $total_pages; ?>&po=<?php echo $po; ?>&pt=<?php echo $pt; ?>&pp=<?php echo $pp; ?>&pb=<?php echo $pb; ?>&pl=<?php echo $pl; ?>">Last &gt;&gt;</a><?php
    }

    ?></div><br><br><?php
  }
}
elseif ($_GET['sp'] == "y") {
      // Start of Display Output
      include "$TemplateFolder/layout_view_photos.php";
      // End of Display output
}

  else
  {
    // Fix to prevent end of table cut-off 
    if ( !$cgi->getValue ( "op" ) == "SendInformationRequest" )
  {
    ?>
<br>
<br>

       <TABLE WIDTH="95%" CELLPADDING="2" CELLSPACING="1" ALIGN="CENTER"> 
        <TR> <TD>

</SELECT></P></TD></TR>

<?php } ?>

<p align="center"><img src="/images/puce.gif" border="0">

<?PHP
 if(($display_sale) == "Y") { echo "<a href=\"?op=search&po=R\">".FORM_VIEW_RENT."</a>";}
?>

</p>

</FORM></TD> 
</TR> 
</TABLE>

<?php } ?>
Bon, c'est un peu laborieux. Apparemment, il y a des connaissances qui manquent aussi bien du côté de HTML que de celui de PHP, ou encore des liens relatifs et absolus.

Donc on va abréger un peu et donner une solution pas «toute cuite», mais au moins à moitié cuisinée.

En gros, il te faut le code HTML suivant au final:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">
	<title>Locations</title>
	<!-- Ici le reste du contenu de mon head, sauf appel aux feuilles de style -->
	<link rel="stylesheet" type="text/css" media="screen" href="/themes/defaut/defaut.css">
	[b]<link rel="stylesheet" type="text/css" media="screen" href="/propertymax/includes/lang/french/style.css">[/b]
</head>
<body>
	<!-- Contenu de la page, sans élément HEAD ou LINK dedans -->
</body>
</html>

Dans ce code que je propose, j'ai placé les éléments link au bon endroit, à savoir dans le head UNIQUE du document. J'ai par ailleurs utilisé des liens absolus, qui commencent par un /, c'est à dire que le navigateur va chercher les fichiers en suivant le chemin depuis le nom de domaine, et pas depuis la page en cours.

Comme la page est située à la racine du domaine, on aurait aussi pu avoir les liens relatifs suivants:
<link rel="stylesheet" type="text/css" media="screen" href="themes/defaut/defaut.css">
<link rel="stylesheet" type="text/css" media="screen" href="propertymax/includes/lang/french/style.css">
(ou avec un «./» au début, c'est la même chose).

Par contre, on ne peut pas avoir ceci:
<link rel="stylesheet" type="text/css" media="screen" href="./themes/defaut/defaut.css">
<link rel="stylesheet" type="text/css" media="screen" href="./includes/lang/french/style.css">
car le fichier http://www.cabinetlaemmel.com/includes/lang/french/style.css n'existe pas (je me répète, mais je crois que l'information n'était pas passée).

Allez, à tout hasard j'en rajoute une couche:
- http://www.cabinetlaemmel.com/includes/lang/french/style.css n'existe pas, et si on fait un lien vers ce fichier ben ça ne marche pas, forcément!
- http://www.cabinetlaemmel.com/propertymax/includes/lang/french/style.css existe, et il faut donc s'assurer que le link appelle bien ce fichier et pas un autre ou un fichier inexistant!

Voilà, j'espère que cette fois-ci ça sera plus clair.

Pour finir: pour ne pas avoir de link dans le code HTML, il faudra corriger le code PHP du script inclus pour qu'il ne génère plus cet appel à la feuille de styles. Il faudra placer cet appel dans le code de location.php, et pas ailleurs.
Modifié par Florent V. (19 Jan 2008 - 16:58)