Avatar billede budda Nybegynder
06. juli 2005 - 14:20 Der er 20 kommentarer og
1 løsning

Søgning med check bokse

Jeg har en søge felt med følgende bokse:
checkbox:type1
checkbox:type2
checkbox:type3
.. (der kan være op til 100 men det er vel 1fedt?)
input:maxpris
checkbox:moeb

type checkboxene skal virke så man kan vælge flere og så vælger den fra cellen: tab_type
så hvis rækken har en af de valgte type chechboxe i tab_type (som kun indeholder 1 tal)
moeb skal virke som en ja nej, værdien i tab_moeb er enten 0 eller 1

Nogen der kan hjælp med en string? i MySQL?
Avatar billede barklund Nybegynder
06. juli 2005 - 14:23 #1
Det er jo bare:

SELECT
  *
FROM
  table
WHERE
  tab_type IN (1,2,3,4) AND
  pris <= maxpris AND
  moeb = moeb

Så skal du bare have strenget genereret korrekt ud fra formens data.
Avatar billede budda Nybegynder
06. juli 2005 - 14:29 #2
hvor kommer checkbox:type(et tal ind)
og der kan godt komme mange nemlig
Avatar billede barklund Nybegynder
06. juli 2005 - 14:39 #3
Det er jo bare i listen i IN (1,2,3,4,...,100) hvis det er alle hundrede - den kan du bare generere ud fra de checkbokse, som er markerede.
Avatar billede budda Nybegynder
06. juli 2005 - 15:26 #4
vi er enige om at tab_type er cellenavnet?
Og der skal stå (type1,type2 osv??
Eller har jeg misforstået ALT?
Avatar billede budda Nybegynder
06. juli 2005 - 15:42 #5
Og hvad skal value være i den checkbox?
Avatar billede barklund Nybegynder
06. juli 2005 - 16:02 #6
Altså, du kan ikke submitte en form direkte til sql - du har vel et eller andet sprog imellem, som skal generere din sql streng. For eksempel PHP, ASP, JSP, CF, CGI eller noget andet... SQL kan ikke læse dine post-variabler :)
Avatar billede budda Nybegynder
06. juli 2005 - 16:05 #7
Jeg bruger PHP
og har prøvet at lave en myqsl_num_rows på søgningen og den siger 0 selv om der skulle være 2
Nu er jeg med.. :)
Men så skal jeg få min PHP kode til at skrive 1,2,3 ? ik?
Noget du kan hjælpe med eller jeg skal ind i PHP forum??
Avatar billede barklund Nybegynder
06. juli 2005 - 16:11 #8
Det kan jeg sådan set godt - du skal få php'en til at løbe alle checkboksene igennem og skrive en sql streng - samt sætte de andre værdier ind i strengen. Det kan du vel nok finde ud af?
Avatar billede budda Nybegynder
06. juli 2005 - 16:16 #9
Ja men det er på en måde et fedt hvis det ikke virker når man skriver 1,2,3 ? altså selv for at teste

Jo kan godt lave sådan en list
Avatar billede budda Nybegynder
06. juli 2005 - 16:21 #10
Er lige ved at bullit teste.. nu ser det ud til at begynde at ligne noget :)
så PHP skal bare retunere 1,2,3 ?
Avatar billede budda Nybegynder
06. juli 2005 - 16:29 #11
Og nej kan ikke lave sådan en der skrevet 1,2,3
Avatar billede barklund Nybegynder
06. juli 2005 - 16:34 #12
Jeg er overhovedet ikke med på, hvad du siger? vi er enige om, at 1,2,3 er et eksempel på, at den skal søge efter elementer enten af type 1, type 2 eller type 3?
Avatar billede budda Nybegynder
06. juli 2005 - 16:38 #13
nemlig.
Det jeg mangler er hvordan checkboxen skal se ud.
dvs navn og value
og hvordan du laver det om til en variabel der kan indsættes i queryen
Avatar billede barklund Nybegynder
06. juli 2005 - 16:42 #14
Du laver bare noget med

<input name="type[]" value="1" /> Type 1
<input name="type[]" value="2" /> Type 2

Så vil de i php blive til array'et $_POST['type'] og kan indsætte i din sql som:

$sql = "SELECT ... WHERE tab_type IN ("+join(",",$_POST['type'])." ...";

Og så ellers eksekvere sql'en efterfølgende, hvis den altså bliver genereret korrekt - men det er jo et rent php-spørgsmål og har overhovedet intet med mysql at gøre :)
Avatar billede budda Nybegynder
06. juli 2005 - 17:01 #15
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1)' at line 1
Den ser sådan her ud:
SELECT * FROM tab_type IN ("+join(",",$_POST['type']).") LIMIT 0,1
Avatar billede budda Nybegynder
06. juli 2005 - 17:02 #16
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1) LIMIT 0,1' at line 1
Avatar billede barklund Nybegynder
06. juli 2005 - 17:07 #17
tja, måske du skal lave + om til . ;)
Avatar billede budda Nybegynder
06. juli 2005 - 17:13 #18
brugte implode men tak!
Svar`?
Avatar billede barklund Nybegynder
06. juli 2005 - 17:35 #19
join og implode er fuldstændig den samme funktion - fejlen var et + (plus) istedet for et . (punktum) :)
Avatar billede barklund Nybegynder
06. juli 2005 - 17:35 #20
Og et svar :)
Avatar billede barklund Nybegynder
06. juli 2005 - 17:45 #21
Tark for points :)
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
Computerworld tilbyder specialiserede kurser i database-management

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