Avatar billede dingkee Nybegynder
13. december 2004 - 10:36 Der er 13 kommentarer og
1 løsning

Problem med sql

Hej Eksperter...

Jeg har en lidt svær sql streng her, som jeg ikke helt kan finde ud af hvordan jeg kringler...

Fra min url, henter jeg et fil navn, det hedder $fil ud fra det skal jeg udvælge alle de id'er, hvor $fil står i colonnen bl1...

Det har jeg fundet ud af hvordan jeg gør, koden er her:

$fil = $_GET['fil'];

$sql = "SELECT * FROM sch_side  WHERE bl1 = '$fil'";
$result = mysql_query($sql) or die (mysql_error());
while($r = mysql_fetch_array($result)) {

Så bagefter skal jeg have alle de id'er jeg lige har fundet og hente et felt der hedder Overskrift i tabellen sch-kategori hvor den id jeg lige har fundet er det samme som id i den tabel...

Hvordan gør jeg lige det??
Avatar billede jakobdo Ekspert
13. december 2004 - 10:40 #1
Alstå du har en fil, du skal finde dens id (eller kan der være flere?) og så finde overskriften som hører til den eller alle disse id'er?
Avatar billede dingkee Nybegynder
13. december 2004 - 10:52 #2
jeps...

Altså henter $fil fra min url f.eks. index.php?fil=blahblah

Så skal jeg finde alle de steder i sch_side hvor bl1 = blahblah, der fra tager jeg så de id'er hvor blahblah står i bl1....

Disse id'er skal jeg så bruge i sch_kategori, hvor jeg tager feltet Overskrift...

Lidt indvirklet, men kan man det?
Avatar billede jakobdo Ekspert
13. december 2004 - 10:54 #3
Men så vil du kunne få flere overskrifter?
Eller skal du kun have en overskrift returneret?
Avatar billede jakobdo Ekspert
13. december 2004 - 10:56 #4
Måske noget i stil med:
SELECT sch_kategori.overskrift
FROM sch_side, sch_kategori
WHERE sch_side.bl1 = '$fil'
AND sch_side.id = sch_kategori.side_id
Avatar billede jakobdo Ekspert
13. december 2004 - 11:00 #5
Måske denne:
SELECT sch_kategori.overskrift
FROM sch_kategori
INNER JOIN sch_side
ON sch_side.id=sch_kategori.side_id
AND sch_side.bl1 = '$fil'
Avatar billede dingkee Nybegynder
13. december 2004 - 11:08 #6
hmm... hvordan sætter jeg det lige ind i den kode jeg har nu?? lige efter??
Avatar billede jakobdo Ekspert
13. december 2004 - 11:11 #7
Jeg er ikke sikker på dine tabeller hedder hvad jeg har i min sql og felterne er korrekt navngivet, men:

$fil = $_GET['fil'];

$sql = "
SELECT
    sch_kategori.overskrift as katOver
FROM
    sch_kategori
INNER JOIN
    sch_side
ON
    sch_side.id=sch_kategori.side_id
AND
    sch_side.bl1 = '$fil'
";

$result = mysql_query($sql) or die (mysql_error());
while($r = mysql_fetch_array($result))
{
    echo $r['katOver'] . "<br>";
}
Avatar billede boomshanka Nybegynder
13. december 2004 - 12:07 #8
Lige en hurtig sidebemærkning...

Der kan være forskel på om du i php bruger ' (enkeltpling) eller " (anførselstegn) om en variabel i SQL. Med php er det nemlig sådan, at man kan bruge anførselstegn hvis man vil opbygge en streng, men bruger man enkeltpling tvinger man php til at sætte variablen til netop det "man skriver". Nedenstående:

$var1 = "Hello";
$var2 = "World!";

$resultat = "$var1 $var2";
echo $resultat;

...vil skrive Hello World! ud, mens det her:

$var1 = "Hello";
$var2 = "World!";

$resultat = '$var1 $var2';
echo $resultat;

...vil skrive $var1 $var2. Derfor når du i din SQL-sætning skriver WHERE bl1 = '$fil'"; så leder den efter et id som er $fil og ikke værdien af variablen!
Avatar billede jakobdo Ekspert
13. december 2004 - 12:52 #9
Ok, så skal det være:

sch_side.bl1 = $fil
evt:

sch_side.bl1 = " . $fil . "
Avatar billede boomshanka Nybegynder
13. december 2004 - 13:26 #10
Ja, med mindre databasen brokker sig over der ikke er enkeltpling rundt om værdierne, hvor du så derfor bliver nødt til at skrive:

sch_side.bl1 = '" . $fil . "';

He he, det kan nemt bliver fuldstændig uterligt...men hvis det ikke gør nogen forskel så skulle begge alternativer virke
Avatar billede jakobdo Ekspert
13. december 2004 - 13:29 #11
Nu stopper du! :o)
Avatar billede boomshanka Nybegynder
13. december 2004 - 13:40 #12
:-D okay hvis jeg skal være helt ærlig så tror jeg ikke MySQL brokker sig over om man husker enkeltpling eller ej i sine SQL-statements...men jeg har efterhånden i stille vrede accepteret, at man aldrig kan regne med noget i programmering
Avatar billede dingkee Nybegynder
13. december 2004 - 16:09 #13
Det virkede... fantastisk...

Takker mange gange... ;)

Svar = point...
Avatar billede jakobdo Ekspert
13. december 2004 - 16:36 #14
svar
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