Avatar billede bas Forsker
05. marts 2004 - 15:14 Der er 32 kommentarer og
1 løsning

Hent kun data, der indeholder noget

Hej

Jeg er ved at lave en drop down der skal hente bynavne
fra en tabel.
Den henter godt nok resultaterne, men den henter også
de tomme resultater - altså felter, hvor der iukke står noget.
Hvordan undgår jeg det ?

Jeg vil mene, at det er noget med WHERE....

$query = mysql_query("SELECT ByNavn FROM tblpostnummer WHERE .... ORDER BY ByNavn ASC")or die(mysql_error());

På forhånd tak.

/Martin
Avatar billede taskmgr Nybegynder
05. marts 2004 - 15:18 #1
("SELECT ByNavn FROM tblpostnummer WHERE ByNavn != '' ORDER BY ByNavn ASC")
Avatar billede bas Forsker
05. marts 2004 - 15:25 #2
Det ser ud til at virke fint.
Mange tak for det.

Poster du lige et svar ?

/Martin
Avatar billede taskmgr Nybegynder
05. marts 2004 - 15:28 #3
Nej det var vist forkert...

Hvis de har NULL værdi:
WHERE ByNavn IS NOT NULL

Hvis de er blanke:
WHERE ByNavn <> ''

Hvis de har et whitespace:
WHERE TRIM(column) <> ''
Avatar billede taskmgr Nybegynder
05. marts 2004 - 15:30 #4
Nå, troede lige at jeg havde blandet et par sprog sammen :)

Men godt du kunne bruge det.
Avatar billede taskmgr Nybegynder
05. marts 2004 - 15:32 #5
Bare til en anden gang: Stil MySQL spørgsmål i den dertil indrettede kategori ;)

Go' weekend!
Avatar billede bas Forsker
05. marts 2004 - 16:01 #6
Nå, jeg har ikke tjekket for Null og whitespace.
Kan man lave et tjek for det hele -
WHERE ByNavn != '' AND ByNavn <> '' AND ByNavn TRIM(column) <>'' ?

I mit tilfælde skal der hentes poster de steder,
hvor der er indtastet en by.


Jeg skal nok prøve at huske, at stille spr.
i den rigtige kategori fremover.

Tak, og i lige måde.

/Martin
Avatar billede taskmgr Nybegynder
05. marts 2004 - 16:14 #7
Det handler sådan set om hvordan dit ByNavn felt er indrettet. Hvis du har sat den til en autovalue på NULL, så er "WHERE ByNavn IS NOT NULL" jo rigeligt.

Du ka lave flere tjecks med:
WHERE ByNavn != '' AND WHERE ByNavn <> '' AND WHERE ByNavn TRIM(column) <> ''

Men "WHERE ByNavn != ''" og "WHERE ByNavn <> ''" tjekker jo det samme :)
Avatar billede bas Forsker
05. marts 2004 - 17:13 #8
Ok, så tror jeg lader det være ved WHERE ByNavn != ''
indtil videre.

Mange tak for svarene.

Min næste opgave bliver så at finde ud af, hvordan
siden skal hente en ny side med resultater på baggrund
af det valgte.

Altså: Hvis f.eks. Århus er valgt (markeret med blåt)
og der bliver klikket på "Søg / submit" knappen,
så skal den nye side hente en række poster, som er knyttet til "Århus".

Ved du noget om det, eller kan du henvise til et sted på nettet med et eksempel ?

Hilsen Martin
Avatar billede taskmgr Nybegynder
06. marts 2004 - 12:37 #9
Her er et eksempel:

<form action="videre.php" method="post">
  <select name="by">
    <option value="Aarhus">Århus</option>
    <option value="Odense">Odense</option>
  </select>
  <input type="submit" value="Submit" />
</form>

Din "videre.php" ser så f.eks. sådan ud:

<?php

$by = $_POST["by"]; // kommer fra navnet på din select

echo "Du valgte " . $by;

?>

Du kan så lave quieries efter $by, f.eks.:
mysql_query("SELECT * FROM dintabel WHERE ByNavn=" . $by);

Se evt. http://www.webcafe.dk/artikler/php/htmlformularer/
Avatar billede bas Forsker
08. marts 2004 - 12:06 #10
Mange tak skal du have!

Jeg kigger lige på det i løbet af dagen.

/Martin
Avatar billede bas Forsker
08. marts 2004 - 14:25 #11
Dit eksempel virker, men byerne i min drop down boks
bliver hemtet fra en database.

Mit option tag ser sådan ud:

while($row = mysql_fetch_array($query))
{
  echo "<option value='$row[by]'>$row[ByNavn]</option>";
}

Hvordan skal echo i min videre.php så se ud ?

echo "Du valgte " . $by; virker ikke, men måske

echo "Du valgte " . $row[by]; ?
Avatar billede taskmgr Nybegynder
08. marts 2004 - 14:31 #12
$_POST fanger navnet på din <select> og returnerer værdien i den valgte option :)

Så, hvis din select hedder 'by', så kommer værdien i $_POST['by']
Avatar billede bas Forsker
08. marts 2004 - 14:49 #13
Gider du kigge på de to nedenstående filer ?

Der bliver godt skrevet "Du valgte, men byen
bliver ikke skrevet ud.

http://www.detour.dk/dropdown/1.phps

http://www.detour.dk/dropdown/2.phps

Resultatet kan ses her:

http://www.detour.dk/dropdown/1.php

/Martin
Avatar billede sukos Juniormester
08. marts 2004 - 14:55 #14
du skal bruge store bogstaver, ikke:

$by = $_post['by'];

men

$by = $_POST['by']
Avatar billede taskmgr Nybegynder
08. marts 2004 - 14:56 #15
prøv lige med $_POST['by'], altså POST med stort.
Avatar billede sukos Juniormester
08. marts 2004 - 14:56 #16
Hov, og så kalder jo din select for byform og ikke by
Avatar billede taskmgr Nybegynder
08. marts 2004 - 14:57 #17
Nå der var sukos hurtigere :)

Variabler i PHP er case-sensitive, dvs:
$foo er ikke det samme som $foO eller $fOo
Avatar billede taskmgr Nybegynder
08. marts 2004 - 14:58 #18
<select name="by" style='width: 150px;'>

Den skulle da være go' nok... han kalder hans form for bynavn
Avatar billede bas Forsker
08. marts 2004 - 14:59 #19
ok, nu skete der noget, jeg får

parse error, unexpected T_ECHO
på
echo "Du valgte " . $by;

Det er vel noget der ikke er afsluttet eller
kapslet forkert ind
Avatar billede taskmgr Nybegynder
08. marts 2004 - 15:02 #20
Den linie er der ikke noget galt i. Hvordan ser linien før ud?
Avatar billede bas Forsker
08. marts 2004 - 15:05 #21
Jeg havde glemt ; efter

$by = $_POST['by'];

Men nu viser den igen bare "du valgte"

Øv. jeg troede lige den var der :-)
Avatar billede taskmgr Nybegynder
08. marts 2004 - 15:12 #22
Det er klart... du har ikke nogle values i dine options :)

Du laver en SELECT ByNavn, og laver denne echo:
echo "<option value='$row[by]'>$row[ByNavn]</option>";

$row[by] er ikke sat

prøv med:
echo "<option value='" . $row['ByNavn'] . "'>" . $row['ByNavn'] . "</option>";
Avatar billede bas Forsker
08. marts 2004 - 15:18 #23
sad lige og læste lidt højere oppe.
skal der ændres / slettes noget ved
name="byform" id="byform" i formen ?

Er der nogen der har et bud på, hvor den ikke
viser byen ?
Jeg føler, at taskmgr har sporet mig ret tæt på
løsningen, og det er da lidt irriterende, hvis det bare er en eller
anden latterlig ting der skal ændres :-)
Avatar billede bas Forsker
08. marts 2004 - 15:19 #24
hvor = hvorfor
Avatar billede taskmgr Nybegynder
08. marts 2004 - 15:28 #25
Se min sidste kommentar, navnet på din form er ligegyldigt her
Avatar billede bas Forsker
08. marts 2004 - 15:29 #26
>> taskmgr

BINGO!!!

echo "<option value='" . $row['ByNavn'] . "'>" . $row['ByNavn'] . "</option>";

ser ud til at have løst problemet.

Jeg siger rigtig mange TAK.
Er der en måde, hvorpå jeg kan give dig en stak ekstra points ?

Ikke fordi jeg skal forgrene den ud i et videre spørgsmål, men
hvis jeg skal bruge den valgte by i en forespørgsel skal jeg
vel bare bruge den $by jeg har fået pillet ud her i forspørgslen.

Bare svar med et ja eller nej :-)

Endnu en gang tak.

Hilsen Martin
Avatar billede taskmgr Nybegynder
08. marts 2004 - 15:43 #27
Det har du ret i :)

Du kan oprette et nyt spørgsmål og referere til dette spørgsmål med et link, http://www.eksperten.dk/spm/473531

Hvis du altså mener at jeg har fortjent ekstra point ;)
Avatar billede bas Forsker
08. marts 2004 - 15:47 #28
Altså bare oprette et nyt spr.

og så lægge linket der ?
Avatar billede taskmgr Nybegynder
08. marts 2004 - 15:49 #29
nemlig
Avatar billede bas Forsker
08. marts 2004 - 15:53 #30
Nu har jeg oprettet et spørgsmål
i kategorien PHP, der hedder ekstra points.

/Martin
Avatar billede kenp Novice
08. marts 2004 - 15:53 #31
der er en som skal hente ekstra point her! http://www.eksperten.dk/spm/474670 ;)
Avatar billede bas Forsker
08. marts 2004 - 15:58 #32
Ja, det kan godt være, at jeg har været for rundhåndet der,
men jeg er bare glad for at det lykkedes :-)

/Martin
Avatar billede taskmgr Nybegynder
08. marts 2004 - 16:00 #33
og de blev hentet ;)
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