Avatar billede thb Nybegynder
15. juni 2009 - 12:25 Der er 6 kommentarer og
1 løsning

Replace variabler

Hej alle,

Ved ikke helt hvad jeg skal kalde det her spørgsmål, men her er det:

Jeg har et felt i databasen som hedder title indholdet kan f.eks se således ud:

: $_POST["felt1"], $_POST["felt2"] og $_POST["felt3"]

Så er det meningen at når folk har skrevet noget i en form så skal den kunne det felt fra db'en erstatte $_POST værdierne med de rigtige, og så gemme den fulde title i db'en:

: peter, jens og thomas

Håber I forstår.

Thomas
Avatar billede repox Seniormester
15. juni 2009 - 13:34 #1
Er det fordi du ikke ved hvordan du skal smide det i tabellen?

<?php
//forbind til mysql

$title = $_POST["felt1"].", ".$_POST["felt2"]." og ".$_POST["felt3"];

$sql = "INSERT INTO tabel (title) VALUES ('".$title."')";
$res = mysql_query($sql);
if(!$res)
    echo mysql_error();

?>
Avatar billede thb Nybegynder
15. juni 2009 - 13:39 #2
Nej, jeg må have forklaret mig dårligt, der er flere som ikke kan forstå det :)

Jeg har en formular hvor folk vælger nogle ting, skriver noget eller lign. Når de trykker send kommer de videre hvor en title skal generes udfra det de har indtastet.

Dertil vil jeg gerne have et form for pattern i databasen, så titlen bliver lavet ud fra det med $_POST værdierne i tabellen.

Lige nu er jeg ude i noget lang kode med str_replace() osv., men havde håbet på nogle kortere og mere simpelt.

Håber det var bedre forklaret :)
Avatar billede repox Seniormester
15. juni 2009 - 13:47 #3
Det var det ikke - jeg forstår ihvertfald ikke hvad du vil.

Sådan som jeg læser det, så har du rent faktisk en entry i din database der har indholder værdien:
"$_POST["felt1"], $_POST["felt2"] og $_POST["felt3"]"

Og du vil så gerne hente det indhold ud fra databasen og have indholdet kørt som var det rent faktisk PHP, for derefter at sætte skidtet tilbage i databasen?
Avatar billede thb Nybegynder
15. juni 2009 - 14:44 #4
Jeps det er lige præcis det....

Lige nu har jeg ændret det til at være et pattern som ser således ud :

"[[felt]], [[felt2]] og [[felt3]]"

Og så kører jeg

$title = str_replace("[[felt1]]", $_POST["felt1"], $title);

og det virker vel egentlig fint nok.

Men søgte nok noget kode hvor jeg ikke skulle køre alle felter igennem osv..
Avatar billede repox Seniormester
15. juni 2009 - 14:50 #5
Umiddelbart vil jeg ikke anbefale dig at gemme PHP syntaks i databasen som du vil trække frem til at parse som PHP. Det skaber seriøse sikkerhedsproblemer.

Umiddelbart vil jeg mene at din str_replace() løsning vil være både tilstrækkelig og forsvarlig/sikker til dit brug.

Hvis du gerne vil have det skal være lidt mere dynamisk kunne du jo lave noget ala:

$udtraek_fra_databasen = "[[felt]], [[felt2]] og [[felt3]]";

foreach($_POST as $key => $value)
{
    $felt = "[[".$key."]]";
    $title = str_replace($felt, $value, $title); 
}
Avatar billede thb Nybegynder
15. juni 2009 - 15:01 #6
okay, tak for hjælpen....

Jeg holder mig til den anden løsning...
Smid et svar og få point for din tid :)
Avatar billede repox Seniormester
15. juni 2009 - 15:07 #7
Værso'
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