Je deviens dingue avec fopen !

Fermé
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 3 mai 2013 à 00:31
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 3 mai 2013 à 13:07
Bonjour,

J'essaie de générer des feuilles de style dynamiquement avec fopen.
Je récupère les variable depuis l'url, et je les envoie dans la classe Styles qui doit normalement créer ma feuille style.temp.css.

J'ai ainsi une variable $fontfamily qui est bien reconnue puisque echo $fontfamily m'affiche bien une valeur.

Par ailleurs, si je fais :
$feuille = "ok";
if (@mkdir ("CSS/")) {}
$ouverture = fopen("CSS/style.temp.css", "w");
fwrite($ouverture, $feuille); 
fclose($ouverture);

pas de problème, ça m'enregistre bien "ok" dans ma feuille.

Si je fais
if ($fontfamily !='') {echo "ok";} 
, là aussi, ça fonctionne nickel.

Mais si je fais
if ($fontfamily !='') { $feuille ="font-family: $fontfamily"; }
f (@mkdir ("CSS/")) {}
$ouverture = fopen("CSS/style.temp.css", "w");
fwrite($ouverture, $feuille); 
fclose($ouverture);
, là, rien à faire, ça ne m'enregistre rien, pas même "font-family : "...

Quelqu'un a une idée d'où ça peut venir?
Je trouve ça complètement irrationnel et ça me rend folle!!
Merci d'avance pour votre aide !

4 réponses

loupix57 Messages postés 316 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 1 juin 2015 14
Modifié par loupix57 le 3/05/2013 à 10:04
petit souci avec les quotes ?

Essaie
if ($fontfamily !='') { $feuille ="font-family: '$fontfamily'"; }

ou
if ($fontfamily !='') { $feuille ="font-family: ".$fontfamily; }
1
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
3 mai 2013 à 11:09
Merci de ta réponse, loupix, mais non, ça ne change rien...
Ce que je ne comprends pas, c'est que les autres variables ne posent pas de problème, donc ça semble venir de la variable elle-même, mais qu'est-ce qui peut bien faire que la condition if ($fontfamily !='') est remplie ou pas remplie selon ce qu'on lui demande d'exécuter après???

Par ailleurs, il arrive de temps en temps que d'un seul coup, ça fonctionne, ça me crée bien ma feuille de style, mais dès que j'actualise la page d'envoi des infos, de nouveau, ça déconne...
0
Utilisateur anonyme
3 mai 2013 à 11:54
Salut salut,

C'est vrai que ça parait plutôt bizarre!
Tu peux poster le bout de code entier de ce qui ne fonctionne pas , peut être il y a t il quelque chose que nous n'avons pas vu.
0
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
3 mai 2013 à 13:05
c'est à dire que le code complet est très long, et je ne sais pas trop à quel endroit ça peut déconner, mais je vous met tout ce qui concerne $fontfamily.

Traitement du formulaire

$url = $_GET;
$donnees = array(
[...]
'fontfamily' => $url['fontfamily'],
$fontgroup = $url['fontgroup'],
[...]
);

Je récupère les infos stockées en serialize dans la bdd pour (re)créer la feuille de style et mettre à jour la table :

if ($css = Styles::getcssbase($idsite))
{
      $nstyle = unserialize($css);

      foreach ($donnees as $id => $val)
      {      
            $method = 'set'.ucfirst($id);
            if (method_exists($nstyle, $method))
            {
                  $nstyle->$method($val);
            }
            else { echo "pb avec $id<br />";}
      }  
}
else
{	
     $nstyle = new Styles ($donnees); 
}

$nstyle -> create_file($cont, 'temp', $idsite, '');


Jusqu'ici, le code a toujours fonctionné jusque là.

 public function create_file($type, $action, $site)
{
     if ($action=='temp') 
     {
          $cont = $type.".temp";
     }
     else { $cont = $type; }

     $fontgroup= $this -> _fontgroup; 
     //on récupère les polices associées au groupe de polices
     $fontgroup = Fontgroups::getlistfonts($fontgroup); 
     $fontfamily= $this -> _fontfamily; 
     // on récupère la bonne police à afficher
     $fontfamily = $fontgroup[$fontfamily]; 
}


A ce stade, un echo $fontfamily m'affiche bien la police recherchée.
Je crée ma feuille de style :

if ($type == 'style')
 {
	echo "fontfamily = $fontfamily ";              
	if ($fontfamily != '') {echo "ben oui ça marche ! "; }    
	$feuille .= "font-family1 ";
	$feuille .= "font-family2: $fontfamily ";
	if ($fontfamily !='') { $feuille .= "font-family3 : $fontfamily; ";} 
 }

if (@mkdir ("CSS/")) {}
$ouverture = fopen("CSS/$cont.css", "w");

echo "feuille = $feuille dans CSS/$cont.css";
fwrite($ouverture, $feuille); 
fclose($ouverture);
echo "<a href='CSS/$cont.css'>lien</a>";



A l'écran, j'ai bien:
fontfamily = Unkempt ben oui ça marche ! feuille = font-family1 font-family2: Unkempt font-family3 : Unkempt; dans CSS/style.temp.css

mais dans ma feuille de style, j'ai juste :
font-family1 font-family2:

PAR CONTRE si je lui indique $fontfamily = 'arial' (ou n'importe quoi d'autre), là ça fonctionne parfaitement.

Je ne sais pas si ça va permettre d'y voir beaucoup plus clair, moi je nage en pleine 4ème dimension, là...
0
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
3 mai 2013 à 13:07
edit: je sais qu'il y a d'abord 4 paramètres dans ma fonction create_file, puis 3 dans sa définition, mais c'est juste une erreur de copier-coller, parce que je continue des tests en même temps, mais il y a bien 3 et 3 en réalité.
0