Avatar billede nyst Nybegynder
09. februar 2004 - 11:34 Der er 19 kommentarer og
1 løsning

søgning i flere tabeller

Hi there,

jeg har en MySQLdatabase, hvor jeg har 2 tabeller.

Jeg kan søge i den ene, men vil gerne kunne søge i begge fra samme søgefelt.

Hvordan kan det gøres når de 2 tabeller ikke har ens rækker???

Koden for søg i den første tabel er:

<?php

mysql_connect("xx");

if($search){   

    mysql_select_db("yy");
    $noResult = "<BR>Deres søgning gav intet resultat.";   
    $query = mysql_query("SELECT * FROM sider WHERE indhold LIKE '%".addslashes($search)."%' AND godkendt='ja' ORDER BY afdeling");
    echo mysql_num_rows($query) . " resultater blev fundet og vist efter afdeling.<BR><BR>";
    while($row = mysql_fetch_array($query)){
        $id = $row["id"];
        $afdeling = $row["afdeling"];
        $overskrift = $row["overskrift"];
        $filnavn = $row["filnavn"];
        $indhold = $row["indhold"];
        $indhold = strip_tags($indhold);
        echo ("$afdeling<BR>");
        echo ("<a href=/$filnavn class=h>$overskrift</a><BR>");
        echo strlen($indhold) > 120 ? '<i>' .  substr($indhold, 0, 120) . '...</i>' : $indhold;
        echo ("<BR><BR>");       
    }
if (!$id){
        print ("$noResult");
    }
}
    mysql_close();
?>

den anden tabel i samme database hedder priser

er der hjælp at hente *S*
Avatar billede avlund Nybegynder
09. februar 2004 - 11:47 #1
Hænger dine tabeller sammen på nogen måde, eller har de stort set samme struktur?
Avatar billede nyst Nybegynder
09. februar 2004 - 11:50 #2
Hej,
de har nogenlunde samme struktur fornær et par felter der heder noget andet.

Der er flere felter der er ens i begge, idet de bruges til et lille rettesystem mm.
Avatar billede avlund Nybegynder
09. februar 2004 - 11:51 #3
I så fald vil jeg kraftigt foreslå dig at slå dem sammen til én tabel.
Avatar billede nyst Nybegynder
09. februar 2004 - 11:53 #4
tabel 'sider' har kopi, appetit hvor tabel 'priser' ikke har disse men pris
Avatar billede nyst Nybegynder
09. februar 2004 - 11:54 #5
det er ikke så godt idet tabel 'priser' senere skal udvides med flere datafelter, samt jeg gerne vi have disse adskilt
Avatar billede avlund Nybegynder
09. februar 2004 - 11:56 #6
Af hensyn til normalisering er det ikke en god idé at have to tabeller med næsten identisk struktur og indhold... altså, efter min mening er det bedste du kan gøre nok at slå dem sammen, lave et true/false felt som differentierer mellem deres typer, og så ellers udvider på denne.
Avatar billede nyst Nybegynder
09. februar 2004 - 11:58 #7
hvis nu man ændre til:

$query = mysql_query("SELECT * FROM sider AND priser WHERE indhold LIKE '%".addslashes($search)."%' AND godkendt='ja' ORDER BY afdeling");

og indsætter

$pris = $row["pris"];

kan man så ikke få echo til at blive korrekt på en eller anden måde
Avatar billede nyst Nybegynder
09. februar 2004 - 11:59 #8
jeg kan sagtens ændre indhold til noget andet i tabel priser - kaldte det bare det samme da jeg regnede med det gav en lettere søgning!!!
Avatar billede nyst Nybegynder
09. februar 2004 - 12:01 #9
kan kalde indhold for ydelse i tabel priser
Avatar billede avlund Nybegynder
09. februar 2004 - 12:02 #10
Nej, hvis du insisterer på at bruge det i to tabeller, skal du bruge en UNION i stedet - og den er kun understøttet fra MySQL 4.0. Men det ER altså stadig en dårlig løsning.
Avatar billede nyst Nybegynder
09. februar 2004 - 12:04 #11
echo ("$afdeling<BR>");
        echo ("<a href=/$filnavn class=h>$overskrift</a><BR>");
        echo strlen($indhold) > 120 ? '<i>' .  substr($indhold, 0, 120) . '...</i>' : $indhold;
        echo ("<BR><BR>");   

dette udtryk gælder jo fint for begge, dog måtte $pris gerne indflettes i udtrykket:
        echo strlen($indhold) > 120 ? '<i>' .  substr($indhold, 0, 120) . '...</i>' : $indhold;
Avatar billede nyst Nybegynder
09. februar 2004 - 12:08 #12
der står:

MySQL 3.23.58 kører på

så den skal så først opgraderes

men kan man så ikke undlade pris, så den kun viser $indhold og ikke pris
Avatar billede nyst Nybegynder
09. februar 2004 - 12:12 #13
jeg kan ikke se det er særlig smart at lægge dem sammen, idet sider viser 1 række pr side, mens priser viser op til 50 rækker pr side!!!
Avatar billede nyst Nybegynder
09. februar 2004 - 12:14 #14
hvad nu hvis jeg oprettede en seperat database for priser, altså ikke en table men ny MySQL database ville det hjælpe?
Avatar billede nyst Nybegynder
09. februar 2004 - 13:38 #15
har du droppet det?
Avatar billede avlund Nybegynder
09. februar 2004 - 17:00 #16
Jeg har været på arbejde :)

Jeg vil ikke foreslå at du begynder at oprette en ny database, tværtimod...

Kan du ikke poste de forskellige felter i de to tabeller, så jeg kan se deres opbygning?
Avatar billede nyst Nybegynder
10. februar 2004 - 11:18 #17
Tabel sider:

CREATE TABLE sider (
  id int(11) NOT NULL auto_increment,
  indeks tinytext NOT NULL,
  godkendt tinytext NOT NULL,
  filnavn tinytext NOT NULL,
  afd tinytext NOT NULL,
  list tinytext NOT NULL,
  afdeling tinytext NOT NULL,
  overskrift tinytext NOT NULL,
  indhold text NOT NULL,
  kopi tinytext NOT NULL,
  dag tinytext NOT NULL,
  appetit tinytext NOT NULL,
  PRIMARY KEY  (id),
  FULLTEXT KEY afd (afd)
) TYPE=MyISAM COMMENT='alle almindelige sider';

----------------------

tabel priser:

CREATE TABLE priser (
  id int(11) NOT NULL auto_increment,
  indeks tinytext NOT NULL,
  godkendt tinytext NOT NULL,
  filnavn tinytext NOT NULL,
  afd tinytext NOT NULL,
  list tinytext NOT NULL,
  afdeling tinytext NOT NULL,
  overskrift tinytext NOT NULL,
  indhold text NOT NULL,
  pris tinytext NOT NULL,
  dag tinytext NOT NULL,
  PRIMARY KEY  (id),
  FULLTEXT KEY tekst (indhold,pris)
) TYPE=MyISAM COMMENT='alle almindelige sider';

-------------------------

Håber det kan give ideer til løsning *S*
Avatar billede nyst Nybegynder
17. februar 2004 - 11:03 #18
var det en hjælp du fik opbygningen
Avatar billede nyst Nybegynder
02. december 2004 - 13:35 #19
hej avlund,

jeg har ikke fået svar fra dig og har heller ikke haft tid endnu, men vil gerne du smider et svar så du kan få dine points, så må jeg senere kontakte dig igen*S*

:-)
Avatar billede nyst Nybegynder
07. december 2004 - 11:39 #20
lukker denne da der ikke er respons
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