Sec_NB Skrevet 8. mars 2010 Del Skrevet 8. mars 2010 Heisann, Jeg skal hente ut en variabel fra SQL som skal brukes videre i ett script. For å gjøre dette har jeg begynt med å lage ett "kallenavn" for variabelen som blir lagret i databasen, kallenavnet blir da %VARIABEL%. Når denne skal vises skal den vises som $variabel, og $variabel har allerede en verdi. Problemet her er at den ikke viser denne verdien når den blir hentet ut. Slik har jeg gjort det: function VisMail($innhold_mail){ $VisMail = array("%VARIABEL%" => "$variabel"); $parsedtext = str_replace(array_keys($VisMail), array_values($VisMail), $innhold_mail); return $parsedtext; } $vis_variabel = VisMail($variabel); echo $variabel; Noe forslag? Tusen takk for all hjelp på forhånd Lenke til kommentar
South_Bridge Skrevet 8. mars 2010 Del Skrevet 8. mars 2010 Jeg er forvirret, hvor er SQL spørringa di? Lenke til kommentar
Sec_NB Skrevet 8. mars 2010 Forfatter Del Skrevet 8. mars 2010 Jeg er forvirret, hvor er SQL spørringa di? Tenkte å være snill og begrense koden, hehe. $sql = mysql_query("SELECT * FROM tabell ORDER BY id DESC LIMIT 1"); $row = mysql_fetch_array($sql); function VisMail($innhold_mail){ $VisMail = array("%VARIABEL%" => "$variabel"); $parsedtext = str_replace(array_keys($VisMail), array_values($VisMail), $innhold_mail); return $parsedtext; } $vis_variabel = VisMail($row['variabel']); echo $variabel; Tar forbehold om noen skrivefeil da jeg skriver på mobilen. Kodene virker, jeg får ut tekst fra tabellen, men jeg får ikke vist variabelen.. Lenke til kommentar
radivx Skrevet 8. mars 2010 Del Skrevet 8. mars 2010 Muligens noen feil med globale variabler? http://php.net/manual/en/language.variables.scope.php Er selv av den oppfatning at en funksjon ikke bør benytte seg av globale variabler. Blir fort en masse rot og du vet ikke om andre funksjoner har endret variablene etc. (om en annen funksjon bruker samme globale variabel med string i stedet for tall har du fort noen timer med feilsøking foran deg). I kodesnutten din blir $variabel aldri satt bare echoet på slutten. Array deklarasjonen din er også feil. Den deklarerer en string med teksen $variabel ikke selve variabelen. Lenke til kommentar
South_Bridge Skrevet 8. mars 2010 Del Skrevet 8. mars 2010 Hmm... ta å print ut $row['var...'] og se at det faktisk ligger noe derfør: $vis_variabel = VisMail($row['variabel']); kan være du må bruke $row[0] i stede. Usikker. Lenke til kommentar
Sec_NB Skrevet 8. mars 2010 Forfatter Del Skrevet 8. mars 2010 Hmm... ta å print ut $row['var...'] og se at det faktisk ligger noe derfør: $vis_variabel = VisMail($row['variabel']); kan være du må bruke $row[0] i stede. Usikker. Ja, jeg får ut tekst; la inn følgende i tabellen: 'Test<br>%VARIABEL%' Det som kommer ut er ''Test*linjeskift*' .. Lenke til kommentar
Sec_NB Skrevet 8. mars 2010 Forfatter Del Skrevet 8. mars 2010 Muligens noen feil med globale variabler? http://php.net/manual/en/language.variables.scope.php Er selv av den oppfatning at en funksjon ikke bør benytte seg av globale variabler. Blir fort en masse rot og du vet ikke om andre funksjoner har endret variablene etc. (om en annen funksjon bruker samme globale variabel med string i stedet for tall har du fort noen timer med feilsøking foran deg). I kodesnutten din blir $variabel aldri satt bare echoet på slutten. Array deklarasjonen din er også feil. Den deklarerer en string med teksen $variabel ikke selve variabelen. $variabel er satt før kodesnutten.. Og jeg får frem verdien når jeg kjører print, men hva er isåfall feil i array deklarasjonen, slik jeg evt. kan få %VARIABEL% til å bli variabelen $variabel? Lenke til kommentar
radivx Skrevet 9. mars 2010 Del Skrevet 9. mars 2010 (endret) Blås i det med arraydeklarasjonen, har ingen tin å si men tenkte ala dette: $variabel = foo; $VisMail = array("%VARIABEL%" => "$variabel"); echo($VisMail['%VARIABEL%']); //skriver "$variabel" på skjermen $VisMail = array("%VARIABEL%" => $variabel); echo($VisMail['%VARIABEL%']); //skriver "foo" på skjermen Etter det jeg forstår vil array_keys returnere et nytt Array med en liste over nøkkelord i det forrige arrayet. Så å fortelle hva parsedtext egentlig skal gjøre/inneholde hadde ikke vært en dum ide. Se på slutten. Skriver du ut de testene du virkelig vil ha $variabel kontra $vis_variabel? Endret 9. mars 2010 av radivx Lenke til kommentar
Sec_NB Skrevet 9. mars 2010 Forfatter Del Skrevet 9. mars 2010 Du er inne på noe der.. Men ser at det ikke virker i stor sammenheng, har flere %X% som skal byttes ut med en variabel gjennom en hel tekst: function VisMail($innhold_mail){ $VisMail = array("&" => "&", "%NAVN%" => "$navn", "%DATO_BILDER%" => "$dato_bilder", "%EMAIL%" => "$email", "%AVTALENR%" => "$avtalenr", "%DATO%" => "$dato", "[b]" => "<b>", "[/b]" => "</b>", "[p]" => "<p>", "[/p]" => "</p>", "[i]" => "<i>", "[/i]" => "</i>", "[li]" => "<li>", "[/li]" => "</li>", "[ul]" => "<ul>", "[/ul]" => "</ul>", "[u]" => "<u>", "[/u]" => "</u>", "[img]" => "<img src='", "[/img]" => "'>", "æ" => "æ", "Æ" => "Æ", "ø" => "ø", "Ø" => "Ø", "å" => "å", "Å" => "Å"); $parsedtext = str_replace(array_keys($VisMail), array_values($VisMail), $innhold_mail); return $parsedtext; } Sett at $navn allerede er satt i session: $navn = $_SESSION['navn']; Noe forslag? Lenke til kommentar
radivx Skrevet 11. mars 2010 Del Skrevet 11. mars 2010 Hmm.. Gitt at koden din skal være en BBCode parser så funker det jo forsåvidt rimelig greit? Så eneste problemet er at den ikke er glad i $navn? $vars = array("navn" => $_GET['asd'], "dato_bilder" => $_GET['asd']); echo(VisMail("[i]Halla[/i] %NAVN%! denne teksten her er [b]fet[/b]", $var)); function VisMail($innhold_mail, $vars){ ... "%NAVN%" => $vars['navn'], ... } Funker fett. Er en uvane å forvente at funksjoner skal kunne bruke globale variabler. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå