Avatar billede kiwankow Nybegynder
16. september 2009 - 08:32 Der er 7 kommentarer og
1 løsning

hjælp til php IF/THEN

Hej Jeg har lavet en fil hvor man kan ændre i sit stylesheet.

<p><b>Tekststørrelse :</b><br />
<input type="radio" name="smallsize" id="smallsize" value="10" checked/> 10
<input type="radio" name="smallsize" id="smallsize" value="14" /> 14
<input type="radio" name="smallsize" id="smallsize" value="18" /> 18</p>

Det valgte skrives til en variable.php således:
$smallsize        ="'.$_POST["smallsize"].'";

Det jeg ønsker er at et næste gang man loader den side der kan ændre tekststørrelsen skal det ikke automatisk være "10" der cheked men derimod den værdi der er gemt i variable.php.

Jeg forestiller mig noget i stil med at inkludere variable.php og så nogeti stil med IF $smallsize = 10 THEN et eller andet..??

Nogen der kan løse dette eller fortælle mig hvordan det kan gøres..??
Avatar billede acore Ekspert
16. september 2009 - 10:00 #1
Når du kører en php fil, så afvikles koden som en program, og når programmet afsluttes vises udskriften fra programmet lokalt i din browser som en html fil (lettere forsimplet - men i princippet).

Når du ser en siden i browseren er php programmet afsluttet, og dets variable eksisterer ikke mere. Næste gang php filen kaldes, starter du forfra.

Du skal altså kunne gemme valget mellem de to kørsler. Det kan gøres på flere måder: I en database på serveren, i en fil på serveren, i en session, i en cookie hos brugeren, eller du kan lade dine filer "transportere" informationen rundt som et argument i url'en.

Hvad der er muligt og hensigtsmæssigt kommer helt an på din samlede løsning, og det har jeg ikke oplysninger til at vurdere.

En løsning, der nok kunne spille i de fleste tilfælde, var at gemme oplysningen i et cookie hos brugeren, og så starte med at læse den cookie.

Prøv at kigge på http://dk.php.net/manual/en/function.setcookie.php til en begyndelse.
Avatar billede repox Seniormester
16. september 2009 - 11:41 #2
Jeg er noget interesseret i at vide hvordan du genererer CSS'en, siden du ikke har styr på conditions? (det kunne potentielt hjælpe med at pege dig mod en løsning)
Avatar billede kiwankow Nybegynder
17. september 2009 - 08:53 #3
Har prøvet følgende:

<?php include("variable.php"); ?>

<input <?php if ($headalign == $leftalign) {echo "checked="checked"";} ?>  type="radio" name="headalign" id="headalign" value="left" /> Left<br />

Men får denne fejl:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in tilpas.php on line 88

variable.php ser således ud:

<?php
$headalign        ="left";
$leftalign        ="left";
$centeralign        ="center";
$rightalign        ="right";
?>
Avatar billede repox Seniormester
17. september 2009 - 09:01 #4
Din parse error skyldes det echo din if-sætning outputter.
Når du bruger dobbelte quotes (") til at echo en streng ud med skal du også escape dobbelte quotes som du vil echo ud.
Prøv med:

<?php include("variable.php"); ?>

<input <?php if ($headalign == $leftalign) { echo "checked=\"checked\""; } ?>  type="radio" name="headalign" id="headalign" value="left" /> Left<br />


Læg mærke til de backslashes (\) jeg har sat foran de dobbelte quotes du vil echo ud.
Avatar billede kiwankow Nybegynder
17. september 2009 - 09:36 #5
SEJT..!! Det virker, men nu kunne jeg godt tænke mig at vide om man kunne gøre det endnu nemmere ved at undlade:

$leftalign        ="left";
$centeralign        ="center";
$rightalign        ="right";

fra variable.php

Altså det skal ikke være to variabler der skal sammenlignes men en variabel og så text-værdien heraf.

Altså ikke:
<?php if ($headalign == $leftalign)
Men noget i stil med:
<?php if ($headalign = "left"

Kan det lade sig gøre..??
Avatar billede repox Seniormester
17. september 2009 - 10:34 #6
Det ville faktisk være noget nemmere at guide dig til en bedre løsning, hvis man vidste hvad du prøvede at opnå.

Hvis du ønsker at lave et dynamisk stylesheet til dit website kan det jo laves på mange måder.

Hvis det bare skal være 'småt men godt' kunne man jo forestille sig at du angav nogle faste værdier til et element.
F.eks. et H1 tag:

<strong>H1 element</strong>
<p>
  Font Size:
  <select name="css[h1][font-size]">
    <option value="8px">8px</option>
    <option value="10px">10px</option>
    <option value="12px">12px</option>
  </select>
</p>
<p>
  Font Color:
  <select name="css[h1][color]">
    <option value="#FF0000">Red</option>
    <option value="#00FF00">Green</option>
    <option value="12px">12px</option>
  </select>
</p> 
...


Når du så modtager dine data kan du loope igennem dem og smide dem i en fil, f.eks:

<?php

  $css = $_POST["css"];
  $cssContent = "";

  foreach($css as $element => $values)
  {
    $cssContent .= $element." {\n";

    forach($values as $attribute => $attValue)
      $cssContent .= "\t".$attribute.": ".$attValue.";\n";

    $cssContent .= "}\n\n";
  }

  file_put_contents("mincssfil.css", $cssContent);
?>


roughly - ikke testet, men idéen er der...
Avatar billede kiwankow Nybegynder
17. september 2009 - 11:35 #7
repox:

Jeg har fået det til at virke som det skulle, så bare smid et svar så er der point til dig. :-)

Og tak for hjælpen
Avatar billede repox Seniormester
17. september 2009 - 11:41 #8
Jamen, selv tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester