Avatar billede emelik.com Nybegynder
01. maj 2001 - 21:53 Der er 13 kommentarer og
1 løsning

Søge i 2 table

Hvordan gør jeg sådan at jeg fra min søgeside kan afkrydse nogle nogle checkboxes som den så sørger for er i tabel?

Jeg skriver på søgesiden at prisen pr uge skal være 4000...
Men  jeg afkrydser fra min søge side også at sommerhuset skal have tv, radio og flere!
Den skal så gå ind i min anden tabel: huspiktogrammer og finde et hus der i er delt op i flere rows:
table:
id, husid, piktogramid...

Npår den så har fundet id på huse der har alle de afkrydserede values, skal den tage husid og gå over i table: huse og vælge dem der har pris = 4000
Avatar billede mortenfn Nybegynder
01. maj 2001 - 21:57 #1
du er nød til at foretage to søgninger - første resultat lægges i en array som så bruges til at søge i den anden søgning.

Avatar billede erikjacobsen Ekspert
01. maj 2001 - 22:01 #2
Du skal vel bare lave en join: har du strukturen af de 2 tabeller?
Avatar billede ghanic Nybegynder
01. maj 2001 - 22:04 #3
Hvis jeg forstår dig korrekt har du to tabeller:
  huspiktogrammer
  huse

Disse har 1 til 1 relation. Dvs. at der findes en record i hver tabel med samme husID.

Din SQL query kommer så til at se sådan ud:

select whatever
from huse H, huspiktogrammer P
where H.husID=P.husID
and H.pris=4000
and ...

Håber du kan bruge det. Ellers må du lige poste strukturen af dine tabeller.
Avatar billede mortenfn Nybegynder
01. maj 2001 - 22:09 #4
der står noget meget fornuftigt her:

http://www.mysql.com/doc/J/O/JOIN.html
Avatar billede emelik.com Nybegynder
02. maj 2001 - 07:13 #5
her:


CREATE TABLE huse (
  id int(4) DEFAULT \'0\' NOT NULL auto_increment,
  bilstimini varchar(255) NOT NULL,
  bilstistor varchar(255) NOT NULL,
  udlegerid varchar(255) NOT NULL,
  bmini varchar(255) NOT NULL,
  bmini2 varchar(255) NOT NULL,
  bstor text NOT NULL,
  bstor2 text NOT NULL,
  boligid varchar(255) NOT NULL,
  adresse varchar(255) NOT NULL,
  lunid varchar(255) NOT NULL,
  prisaa varchar(255) NOT NULL,
  prisbb varchar(255) NOT NULL,
  priscc varchar(255) NOT NULL,
  prisdd varchar(255) NOT NULL,
  infobil varchar(255) NOT NULL,
  infobil2 varchar(255) NOT NULL,
  prisa varchar(255) NOT NULL,
  prisb varchar(255) NOT NULL,
  prisc varchar(255) NOT NULL,
  prisd varchar(255) NOT NULL,
  UNIQUE id (id)
);




CREATE TABLE huspiktogrammer (
  id int(4) DEFAULT \'0\' NOT NULL auto_increment,
  piktoid varchar(4) NOT NULL,
  husid varchar(4) NOT NULL,
  valuen varchar(10) NOT NULL,
  UNIQUE id (id)
);






Meget af det skal ijo slet ikke bruge :o)
Avatar billede erikjacobsen Ekspert
02. maj 2001 - 07:25 #6
Jeg tror vi bliver nødt til at have nogle typiske data for et (eller flere huse) også.
Er der flere piktoid-er pr hus, og er det husid i huspiktogrammer, der er lige med id
i huse?
Avatar billede emelik.com Nybegynder
02. maj 2001 - 12:43 #7
Ja der er flere rows i huspiktogrammer pr hus, hver chekbox = 1 row hvis huset har det... ja igen, husid = id i huse...

-Mathis
Avatar billede the_nest Nybegynder
03. maj 2001 - 10:25 #8
Ville det ikke værer en idé at lave en attribute pr. checkbox i huspiktogrammer ?

Hvor ligger dine verdier af dine checkbox\'es ?

Jeg kan godt skrive et hint til dig.
Avatar billede the_nest Nybegynder
03. maj 2001 - 11:11 #9
$db = mysql_connect(\"localhost\", \"user\", \"pass\")
    or die(\"Error conneting to database.\");
mysql_selecy_db(\"database\")
    or die(\"Erroe selecting database.\");
$result = mysql_query(\"SELECT hus_id, alle_checkbox_verdier FROM tabel_med_checkbox_verdier\")
    or die(\"Query error.\")

$row = mysql_fetch_array($result);

//    Denne while laver en array med de huses id der er ok i frohold til checkbox\'ene.

while(is_array($row)) {

    extract($row);

    if($checkbox1_verdi != \"\") {
   
        if($checkbox1_verdi == $checkbox1_verdi_fra_db) {

            $hus_ok[] = \"1\";

        } else {

            $hus_ok[] = \"0\";

        }

    }

    if($checkbox2_verdi != \"\") {
   
        if($checkbox2_verdi == $checkbox2_verdi_fra_db) {

            $hus_ok[] = \"1\";

        } else {

            $hus_ok[] = \"0\";

        }


    }

//        Og så vider en \"if\" for hver checkbox. Forudsætter at en checkbox er li \"\" hvis den ikke er sat.
//      ellers insættes \'|| $checkbox1_verdi != \"0\"\' hvis det er nul.

    if(!in_array(\"0\", $hus_ok)) {

        $huse_arry[] = $hus_id_fra_db;

    }

    $row = mysql_fetch_array($result);

}

//    Nu kan der så søges i database 2 efter priser.

for($loop = 0; $loop >= (sizeof($huse_array - 1)); $loop++) {

    $result = mysql_query(SELECT hus_id, hus_pris FORM tabel_med_priser WHERE $hus_di = \'$huse_array[$loop]\')
        or die(\"Query error\");

    $row = mysql_fetch_array($result);

    extract($row);
   
    if($hus_pris <= $pris_valg) {

        $huse_ok_array[] = $hus_id_fra_db;

    }

}
mysql_close($db);

// $huse_ok_array indeholder nu de huse der er ok. Og du kan hente data om dem fra
// databasen som jag gjore oven over.


Prøv om du kan bruge noget af dette, jeg skal bruge mere info om db\'en for at lave en mere rigtg kode :)
Avatar billede emelik.com Nybegynder
05. maj 2001 - 12:03 #10
the_nest....
Ja altså du har table structure oven over er det ikke nok?
Kan lige forklarer igen så du ved helt præsis hvd det er der skal laves!

Man afkrydser fra søgesiden hvad huset skal have fx: TV, Radio og at prisen skal være 4000 så skal den gå ind og udvælge de huse der har en pris på 4000 og så gå over i huspiktogrammer og tage dem der upfylder alle krav om ting der skal i!

Havudsigt        1
Parabol        2
Gynge            3
Brændeovn        4
Husdyr        5
Sandkasse        6
Radio            7
Vaskemaskine    8
TV            9
Telefon ind    10


Det er dem man skal kunne søge på!
Jeg vil godt afsætte lidtr flere point hvis det er nødvendigt!

-Mathis
Avatar billede the_nest Nybegynder
07. maj 2001 - 08:32 #11
Har du et ICQ eller noget ligende, for jeg vil gerne hjælpe men det er svært at overskue hvis jeg ikke hved hvordan du gemmer dine verdier for dine checkbox\'es :)

Jeg forstår godt hvordan dein db er opbygget men ikke hvor verdierner for chechbox\'ene ligger og hvordan de er gemt.
Avatar billede emelik.com Nybegynder
08. maj 2001 - 14:43 #12
The_nest.....

Jeg dropper det her det er blevet for avanceret så jeg putter bare min piktogrammer ind i hus db\'en...

-Mathis
Avatar billede the_nest Nybegynder
08. maj 2001 - 21:44 #13
ok :)

Det er måske også det nemmeste når du opratter et nyt hus så skal du ikke ind i 2 tabeller og tilføje det :)

Tak for udfordringen :)
Avatar billede emelik.com Nybegynder
08. maj 2001 - 23:03 #14
Hehe No problemos skulle det være en anden gang!

-Mathis
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