Mik2000 Professor
16. oktober 2020 - 16:01 Der er 2 kommentarer og
1 løsning

Navn, adresse, postnr by i en sætning fra database hvor nogle kan være tomme

Jeg har tit et dumt lille "problem" som jeg tænkte I måske kender en løsning på

Vi har en tabel
id, navn, adresse, postnr, by

Jeg henter det ud, og har brug for at få output sådan her
navn - adresse, postnr, by

Men nogle gange kan felter være tomme
Det kan resulterer i
navn - adresse, , by
- adresse, , by
og lign.
hvis ikke man bruger noget if/else som også er bøvlet

Man kan flytte tegnet med ind i f.eks.
(!empty(navn)) ? navn." - " : "" ;
Men hvis så der kun er navn så slutter den med " - ", og på samme måde hvis der er navn og postnr så slutter den med ", "

Er der en nem måde at løse det på
arne_v Ekspert
16. oktober 2020 - 16:15 #1
Der er vel kun to tilgange.

1) erstatte en tom værdi med en placeholder
2) kun skrive komma hvis der er en værdi
Mik2000 Professor
16. oktober 2020 - 19:51 #2
Hvordan i praksis
I eksempel siger vi database værdier er hentet ud i variabler, så vi har værdierne fra databasen i $navn $adresse $postnr $by

// Hvis det sættes efter
echo (!empty($navn)) ? $navn." - " : "" ;
// Problemet er så hvis resten ikke er udfyldt, så er der en " - " til sidst

Så begynder det at blive en masse if/else

// Hvis det sættes før
echo (!empty($adresse)) ? " - ".$adresse : "" ;
// Problemet er så hvis navn ikke er udfyldt, så er der en " - " i starten

Men måske er der ingen smart løsning på det - tænkte bare der måtte være andre der oplevede noget lign.
arne_v Ekspert
16. oktober 2020 - 20:25 #3
Jeg tænker:


<?php

define('ASIS', 1);
define('REPLACE', 2);
define('SKIP', 3);

function dump($navn, $vej, $by, $strategy = ASIS, $replacement = '') {
    switch($strategy) {
        case ASIS:
            echo "$navn,$vej,$by\r\n";
            break;
        case REPLACE:
            if(empty($navn)) $navn = $replacement;
            if(empty($vej)) $vej = $replacement;
            if(empty($by)) $by = $replacement;
            echo "$navn,$vej,$by\r\n";
            break;
        case SKIP:
            $line = '';
            if(strlen($line) > 0 && !empty($navn)) $line = $line . ',';
            $line = $line . $navn;
            if(strlen($line) > 0 && !empty($vej)) $line = $line . ',';
            $line = $line . $vej;
            if(strlen($line) > 0 && !empty($by)) $line = $line . ',';
            $line = $line . $by;
            echo "$line\r\n";
            break;
    }
}

echo "ASIS:\r\n";
dump('navn','vej','by');
dump('navn','vej','');
dump('navn','','by');
dump('','vej','by');
dump('navn','','');
dump('','vej','');
dump('','','by');

echo "REPLACE:\r\n";
dump('navn', 'vej', 'by', REPLACE, '?');
dump('navn', 'vej', '', REPLACE, '?');
dump('navn', '', 'by', REPLACE, '?');
dump('', 'vej', 'by', REPLACE, '?');
dump('navn','','', REPLACE, '?');
dump('','vej','', REPLACE, '?');
dump('','','by', REPLACE, '?');

echo "SKIP:\r\n";
dump('navn', 'vej', 'by', SKIP);
dump('navn', 'vej', '', SKIP);
dump('navn', '', 'by', SKIP);
dump('', 'vej', 'by', SKIP);
dump('navn','','', SKIP);
dump('','vej','', SKIP);
dump('','','by', SKIP);

?>



ASIS:
navn,vej,by
navn,vej,
navn,,by
,vej,by
navn,,
,vej,
,,by
REPLACE:
navn,vej,by
navn,vej,?
navn,?,by
?,vej,by
navn,?,?
?,vej,?
?,?,by
SKIP:
navn,vej,by
navn,vej
navn,by
vej,by
navn
vej
by
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

Opret Preview

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





Premium
Derfor er SAP ramt af kæmpe nedtur trods stor stigning i indtjeningen
ComputerViews: Mægtige SAP’s markedsværdi er på et øjeblik styrtdykket i den største enkeltstående nedtur for selskabet siden 1999. Selskabet er krise. Se her hvorfor.
Computerworld
Salling Group lukker stor online-satsning efter kun et år
Millionsatsningen Fillop lukker ved årets udgang. I stedet er supermarkeds-giganten Salling Group nu på vej med en række helt nye online-satsninger, der er affødt af coronakrisen.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
Job & Karriere
Regner din ferie væk? Brug tiden på at søge en af disse otte stillinger, der er ledige netop nu
Det sjasker ned over hele Danmark. Du kan bruge de våde sommerdage på at søge et af disse otte job, der er ledige lige nu.
White paper
Sådan: Beskyt virksomheden effektivt mod mailbårne angreb
Mailserveren er rykket i skyen, typisk i form af Office 365, men det er truslerne også. For trods højt sikkerhedsniveau hos Microsoft er virksomhederne mindst lige så udsat for mailbårne cyberangreb som førhen. Enten i form af social engineering – hvor angriberne prøver at lokke adgangsgivende informationer ud af medarbejderne, i form af phishing eller gennem deciderede malwareangreb. Dertil kommer forsøg på svindel i form af eksempelvis CEO-fraud, falske fakturaer og meget andet. Denne hvidbog giver et opdateret overblik over angrebsformerne og konkrete bud på, hvordan du bedst forebygger, at din virksomhed rammes.