Avatar billede coolzone Nybegynder
10. maj 2004 - 01:31 Der er 13 kommentarer

Henter den forkerte artikel

Hej alle.

Jeg har følgende stående:

                                <?
                                    print $_GET[id];
                                    mysql_connect("localhost", "nobody"); mysql_select_db("realiteten");
                                    $tilWhile = mysql_query("SELECT * FROM sundhed,verden WHERE verden.titel='$_GET[id]' OR sundhed.titel='$_GET[id]'");
                                   
                                    $resultater = mysql_num_rows($tilWhile);

                                    while ($row = mysql_fetch_array($tilWhile)){
       
                                print ("$row[tekst]<br />");
                                    }
                                    mysql_close();
                                ?>

Nogen der kan spotte en fejl?
Avatar billede tjp Mester
10. maj 2004 - 02:12 #1
Får du noget ud?
Eller hjælper det at ændre:
print ("$row[tekst]<br />");
til:
print ("{$row['tekst']}<br />");
Avatar billede coolzone Nybegynder
10. maj 2004 - 02:28 #2
Jeg får noget ud. Problemet ligger i at jeg ikke kan få den til at gennemsøge begge tabeller.

Jeg ville mene det skulle lyde:

$tilWhile = mysql_query("SELECT * FROM sundhed,verden WHERE titel='$_GET[id]'");

Søg i BÅDE 'sundhed' og 'verden' indtil du finder det som står I $_GET[id]

Det virker bare ikke. Så har jeg prøvet med det indlæg jeg startede med her men det virker heller ikke.

Jeg har to tabeller som skal gennemsøges og den af dem som indeholder $_GET[id]'s værdi skal udskrives.
Avatar billede tjp Mester
10. maj 2004 - 02:48 #3
Et mellemrum mellem 'sundhed,verden' gør vel heller den store forskel?
Hvilken af tabellerne gennemsøger den?

Mht. "Jeg har to tabeller som skal gennemsøges og den af dem som indeholder $_GET[id]'s værdi skal udskrives.", mener du at rækken skal udskrives - vel ikke hele tabellen?
Avatar billede coolzone Nybegynder
10. maj 2004 - 02:58 #4
Mellemrummet betyder ikke noget - jeg har checket.

Jo jeg mener ræken i den pågældende tabel der måtte ligge inde med informationerne :-)
Avatar billede tjp Mester
10. maj 2004 - 03:01 #5
Du glemte det mest spændende:
Hvilken af tabellerne gennemsøger den? ;-)
Avatar billede coolzone Nybegynder
10. maj 2004 - 03:06 #6
Den skal gennemsøge dem begge. I dette tilfælde $tilWhile = mysql_query("SELECT * FROM sundhed,verden WHERE titel='$_GET[id]'");

Melder den bare fejl: Supplied argument is not a valid MySQL result.

Hvis jeg bruger:

  $tilWhile = mysql_query("SELECT * FROM sundhed,verden WHERE verden.titel='$_GET[id]' OR sundhed.titel='$_GET[id]'");

Så kommer den ikke med de rette resultater.

Jeg håber det giver mening.
Avatar billede tjp Mester
10. maj 2004 - 03:17 #7
Men hvad er mønstret i de resultater, der så kommer i den anden version? De har vel forbindelse til '$_GET[id]' eller hvad? Hvormange rækker får du? Og kommer de kun fra den ene tabel?
Avatar billede coolzone Nybegynder
10. maj 2004 - 03:27 #8
Lad mig omformulere: Hvordan laver man en SELECT der finder en given artikel i en artikel database der indeholder flere tabeller (for hvert emne)?

Database artikler.
Tabel 1 = Biler
Tabel 2 = Motorcykler
Tabel 3 = Udstyr

Tabel Biler:
id
forfatter
titel
tekst

De to andre tabeller ser ud på samme måde.

Jeg skal lave en SELECT der henter titel "min slæde" fra hvilken som helst tabel  der måtte ligge inde med en artikel med den titel.
Avatar billede coolzone Nybegynder
10. maj 2004 - 03:34 #9
Den skal simpelthen løbe alle titel felterne i alle tabellerne i hele databasen igennem og udskrive den rækkes id.
Avatar billede tjp Mester
10. maj 2004 - 03:56 #10
Tja, jeg ville gætte på noget i stil med det du allerede har lavet:

$titel = "min slæde"
$tilWhile = mysql_query("SELECT * FROM tabel1, tabel2, tabel3 WHERE tabel1.titel='$titel' OR tabel2.titel='$titel' OR tabel3.titel='$titel'")
osv.

Tilgengæld undre det mig lidt at du har 3 stort set ens tabeller i din DB. Ville det ikke være en god idé at nøjes med én tabel og udvide denne med et felt som kunne hedde 'artikeltype' eller bare 'type' og sættes til hhv. 'Biler', 'Motorcykler', 'Udstyr'. Det ville gøre det meget nemmere at udvide antallet af typer senere hen, fremfor nu, hvor du skal oprette en ny tabel for hver type.
Avatar billede coolzone Nybegynder
10. maj 2004 - 04:02 #11
Jeg har prøvet det som du skriver men kan ikke få det til at virke.

Jo jeg er enig det er et godt forslag. Grunden til at jeg har opdelt den har været dels fordi jeg tænker langsigtet og dels fordi jeg gerne ville blive dygtigere til at rode med flere tabeller.
Avatar billede coolzone Nybegynder
10. maj 2004 - 05:04 #12
Anyone?
Avatar billede lap Nybegynder
10. maj 2004 - 21:29 #13
virker UNION i mysql - i så fald er løsningen:

$tilWhile = mysql_query("SELECT * FROM sundhed WHERE titel='$_GET[id]' UNION SELECT * FROM verden WHERE titel='$_GET[id]'");

Det kræver at antallet af kolonner er den samme i begge tabeller.
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