01. maj 2007 - 09:11Der er
7 kommentarer og 1 løsning
string replace
Jeg har feltet 'emne' i DB, som indeholder en række emner adskilt med et komma. Når jeg trækker emnere ud bruger jeg en explode(",", $emne) for at skille dem ad.
Nu skal der være en mulighed for at slette et emne fra siden vha en dropdown. Emnet man vælger hedder 'valgt_emne'. Jeg har nedestående:
$nye_emner = str_replace(','.$valgt_emne, '', $gl_emne); $rediger_emner = "UPDATE bruger SET emne='$nye_emner' where brugernavn='$brugernavn'";
Det virker jo fint hvis 'valgt_emne' ligger midt i en streng og derfor rent faktisk starter med et komma. Men hvis 'valgt_emne' ligger først i strengen kan den selvf. ikke finde emnet, da den forventer at det starter med en komma.
Løsningen kunne være at lave flere str_replace. F.eks først fjerne emnet, så lave to kommaer om til et osv.. men jeg tænkte der måske var en nemmere løsning... hvor jeg selvf. stadig beholder min oprindelige tanke med at alle emner ligger i samme DB felt adskilt at kommaer.
CREATE TABLE `bruger` ( `id` int(11) NOT NULL auto_increment, `niveau` text NOT NULL, `status` text NOT NULL, `brugernavn` text NOT NULL, `kodeord` text NOT NULL, `mail` text NOT NULL, `navn` text NOT NULL, `billed` text NOT NULL, `emne` text NOT NULL, `hp` text NOT NULL, `tekst` text NOT NULL, PRIMARY KEY (`id`) )
bruger brugerid niveau status brugernavn kodeord mail navn billede hp tekst
emne emneid emnenavn
brugeremne brugerid emneid
På den måde har du emnerne i en seperat tabel. Så bruger du "brugeremne" tabellen til at holde en bruger sammen med et emne.
Derudover bør du overveje hvilken datatype du sætter et felt til. Varchar(X), hvor X er 1-255 tegn kan bruges på mange af dine felter. hvis niveau er et tal, kan du måske bruge INT eller TINYINT.
Fordi det giver problemer, og databaser og beregnet til at man laver flere tabeller for at løse denne problemstilling. Ellers kunne du lige så godt gemme det i en tekstfil.
Det er altid nemmere at lave sin database først, så den overholder normal former, og så lave koden bagefter.
Synes godt om
Ny brugerNybegynder
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.