5568 sujets

Sémantique web et HTML

Bonjour,

imaginons un fichier trait.php qui me génère un schéma SVG, à savoir pour faire simple une ligne entre un point A et un point B.

<?php 
  header("Content-type: image/svg+xml"); 
  print('<?xml version="1.0" encoding="iso-8859-1"?>');
?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" ... >
<g inkscape:label="layer1" inkscape:groupmode="layer" id="layer1">
<?php  
  // Ligne du point A au point B
  $xA = 10.0;
  $yA = 10.0;
  $xB = 15.0;
  $yB = 20.0;
  echo '<path d="M '.$xA.','.$yA.' '.$xB.','.$yB.'" id="AB" />'."\n";
?>
</g>
</svg>


Imaginons maintenant un fichier HTML qui inclut cet object

<!DOCTYPE html>
<html>
<body>
<h1>Inclusion du SVG</h1>
  <object type="image/svg+xml" data="trait.php">
  </object>
</body>
</html> 


Maintenant là où ça se corse, c'est que je voudrais que les xA, yA, xB, yB soit des paramètres.


<!DOCTYPE html>
<html>
<body>
<h1>Inclusion du SVG</h1>
  <object type="image/svg+xml" data="trait.php">
    <param name="xA" value="15.0" />
    <param name="yA" value="12.5" />
    <param name="xB" value="5.5" />
    <param name="yB" value="-9.6" />
  </object>
</body>
</html> 


Comment récupérer ces valeurs dans le PHP ? Je précise que dans cet exemple simplifié
le PHP ne se justifie pas, mais dans mon cas oui. Je dois récupérer les paramètres pour
faire des calculs. Merci
Salut Ababdge,

Au lieu de faire un traitement comme tu le fait actuellement, tu peux créer des fonctions PHP et y mettre les paramètres que tu veux.
Pour ton exemple, tu peux créer une fonction trait() avec les 4 paramètres demandé (xA, yA, xB, yB).

Ensuite dans un fichier, tu initialises ta fonction avec les valeurs que tu souhaites pour tes paramètres.

Tu peux même créer une classe spécifique pour générer toi-même des SVG.
Les paramètres dans les <param> ne sont à aucun moment accessibles en php. Ces valeurs sont destinés uniquement au client. Tu pourais donc les utiliser en javascript, mais pas côté serveur.

Tu n'as pad d'autre choix que de passer des variables en GET
P.ex. <object ... data="image.php?x1=1&amp;x2=2&amp;...">

A noter que HTML5 permet d'enbarquer directement du SVG sans passer par un fichier externe (balise <svg>); je ne sais pas dans quelles mesures cette construction est reconnue par les navigateurs, mais ça pourrait éventuellement te simplifier les choses.

EDIT. Bug du forum, les entités HTML sont remplacés
Test rapide pour en être sûr et savoir comment contourner le problème: &amp; &lt; &gt; &euro; &rarr; &larr; &alpha, &&amp; &&lt; &&gt; &&larr; &&rarr; &&euro; &&alpha; \&amp; &\amp; &amp;amp; %26 &#38;
Désolé pour les désagréments causés.
Modifié par QuentinC (30 Oct 2013 - 15:52)
La balise SVG est reconu sur IE à partir de la version 9. Pour le support global cf. Caniuse...
Modifié par Olivier C (07 Dec 2013 - 11:07)
j'utilise toujours la balise <img src="image.svg" /> pour IE8 j'ai un warning d'aller mettre a jour
ce qu'on devrait tous faire pour forcer les gens a passer au loins a IE9

sinon tres facile de faire ca en php bien sur ou meme en jquery
Olivier C a écrit :
La balise SVG est reconu sur IE à partir de la version 9. Pour le support global cf. Caniuse...


Et elle est supportée par tous les navigateurs, à exception de Android 2.3 et moins, ce qui n'est en soi pas rédhibitoire :
http://caniuse.com/#search=svg