Avatar billede cronick Nybegynder
04. november 2006 - 17:14 Der er 18 kommentarer og
1 løsning

celle1, celle2 from tabel1 and celle3, celle4 from tabel 2

Hey..

Jeg er stødt på dette problem.. Jeg vil gerne lave et udtræk fra to tabeller i samme "udtrækning", da jeg skal bruge noget fra den første tabel, til at hente fra den anden tabel..

altså, det skal være noget lign:
SELECT celle1, celle2 FROM tabel1 AND celle3 FROM tabel2 WHERE celle3 = celle1 AS SkalHentes WHERE SkalHentes != ''

Det virker måske nok lidt uoverskueligt, men det efter den første udtrækning (efter ..FROM tabel1) skal gå tilbage til den første, idet at det er her det egentlige skal udtrækkes..

- Håber nogen kan hjælpe..
Avatar billede coderdk Praktikant
04. november 2006 - 17:27 #1
Prøv med:

SELECT a.celle1, a.celle2, b.celle3 FROM tabel1 AS a INNER JOIN tabel2 AS b ON a.celle1 = b.celle3
Avatar billede cronick Nybegynder
04. november 2006 - 18:40 #2
Synes ikke lige jeg kan få det til at passe..

Måske hvis du lige får linien her, kan det måske hjælpe.. problemet ligger måske også i, at jeg har en where indblandet.. altså, jeg har en where, som ikke er der, hvis man ikke har valgt noget oplysninger, men hvis man har kan der være op til 10 (where .. and .. and ..), afhængig af hvor mange oplysninger man vælger at skrive..

Men her er koden sådan mere eller mindre:

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

if($_POST[profilbillede] == "Ja") {
$where .= "ON a.brugernavn = b.brugernavn ";
}else if($_POST[profilbillede] == "Nej") {
$where .= "ON a.brugernavn != b.brugernavn ";
}
$where = "WHERE brugernavn != 'Sponto'";
if($_POST[fornavn] != "") {
$where .= " AND fornavn LIKE '%$_POST[fornavn]%'";
}
if($_POST[efternavn] != "") {
$where .= " AND efternavn LIKE '%$_POST[efternavn]%'";
}
if($_POST[brugernavn] != "") {
$where .= " AND brugernavn LIKE '%$_POST[brugernavn]%'";
}
if($_POST[civilstatus] != "Ligegyldigt") {
$where .= " AND civilstatus = '%$_POST[civilstatus]%'";
}
if($_POST[online] == "Ja") {
$settime = time()-65;
$where .= " AND settime > '$settime'";
}
if($_POST[postnummer_start] != "" AND $_POST[postnummer_slut] != "") {
$where .= " AND postnummer >= '$_POST[postnummer_start]' AND postnummer <= '$_POST[postnummer_slut]'";
}
if($_POST[alder_start] != "" AND $_POST[alder_slut] != "") {
$where .= " AND ((time() - mktime(0,0,0,foedselsdag_maaned,foedselsdag_dag,foedselsdag_aar))/31536000) >= '$_POST[alder_start]' AND (time() - mktime(0,0,0,foedselsdag_maaned,foedselsdag_dag,foedselsdag_aar))/31536000 <= '$_POST[alder_slut]'";
echo "lala";
}

$find_users = mysql_query("SELECT a.settime, a.brugernavn, a.fornavn, a.efternavn, a.postnummer, b.brugernavn FROM tabel1 AS a INNER JOIN tabel2 AS b $where ORDER by settime DESC")or die(mysql_error());

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

en anden ting er så, at det med alderen ikke virker, hvilket du sikkert kan se ved at kigge på den..

- Men håber det hjælper lidt på det..
Avatar billede cronick Nybegynder
04. november 2006 - 18:47 #3
Jeg kan nok gøre det endnu mere præciserende; det skal være sådan, at hvis nu $_POST[profilbillede] == "Ja" skal den vælge dem fra tabel1, som har en række i tabel2.. her skal det finde ved "brugernavn", som eksisterer i begge tabeller..
Avatar billede coderdk Praktikant
08. november 2006 - 02:27 #4
Hvis profilbillede == ja, så skal du lave et join, ellers skal du ikke ;)
Avatar billede cronick Nybegynder
08. november 2006 - 13:22 #5
Okey, er godt nok ikke helt med.. Har prøvet med dette, men det virker ikke:

if($_POST[fornavn] != "" OR $_POST[efternavn] != "" OR $_POST[brugernavn] != "" OR $_POST[civilstatus] != "Ligegyldigt" OR $_POST[profilbillede] != "Ligegyldigt" OR $_POST[postnummer_start] != "" OR $_POST[alder_start] != "") {
$where = "";
if($_POST[profilbillede] == "Ja") {
$where .= "AS a INNER JOIN tabel2 AS b ON a.brugernavn = b.brugernavn ";
}else if($_POST[profilbillede] == "Nej") {
$where .= "AS a INNER JOIN tabel2 AS b ON a.brugernavn != b.brugernavn ";
}
$where .= "WHERE brugernavn != 'Sponto'";
if($_POST[fornavn] != "") {
$where .= " AND fornavn LIKE '%$_POST[fornavn]%'";
}
if($_POST[efternavn] != "") {
$where .= " AND efternavn LIKE '%$_POST[efternavn]%'";
}
if($_POST[brugernavn] != "") {
$where .= " AND brugernavn LIKE '%$_POST[brugernavn]%'";
}
if($_POST[civilstatus] != "Ligegyldigt") {
$where .= " AND civilstatus = '%$_POST[civilstatus]%'";
}
if($_POST[online] == "Ja") {
$settime = time()-65;
$where .= " AND settime > '$settime'";
}
if($_POST[postnummer_start] != "" AND $_POST[postnummer_slut] != "") {
$where .= " AND postnummer >= '$_POST[postnummer_start]' AND postnummer <= '$_POST[postnummer_slut]'";
}
if($_POST[alder_start] != "" AND $_POST[alder_slut] != "") {
$where .= " AND ((time() - mktime(0,0,0,foedselsdag_maaned,foedselsdag_dag,foedselsdag_aar))/31536000) >= '$_POST[alder_start]' AND (time() - mktime(0,0,0,foedselsdag_maaned,foedselsdag_dag,foedselsdag_aar))/31536000 <= '$_POST[alder_slut]'";
echo "lala";
}
}

$find_users = mysql_query("SELECT a.settime, a.brugernavn, a.fornavn, a.efternavn, a.postnummer, b.brugernavn FROM tabel1 $where ORDER by settime DESC")or die(mysql_error());
Avatar billede coderdk Praktikant
08. november 2006 - 14:10 #6
Det er lidt forvirrende kode. Gør det lige til en vane at indentere, så man kan læse koden. Du blander også PHP og SQL sammen i den sidste if, det går ikke. Koden jeg har lavet der, kræver min. MySQL v4.1.1 - Det kunne sikkert laves smartere, men kan ikke lige komme på hvordan.

Det lader til at du gemmer fødselsdato på en dum måde, nemlig et felt for dag, et for måned og et for år, og så blander du timestamps ind i det - det betyder at folk ikke kan være født før 1/1-1970 da det er dér unix timestamps starter...

Du selecter ikke profilbillede ud, selvom du joiner med den. Du henter endnu et brugernavn ud...

Du bruger $_POST[navn] hvor du skal bruge $_POST['navn'] - $_POST[navn] skal kun bruges inde i en "-streng...

Sidst men ikke mindst, så er det altid en god idé at skrive hvilken fejl du får!

Prøv dette:

    $sql = "
        SELECT
            a.settime
            ,a.brugernavn
            ,a.fornavn
            ,a.efternavn
            ,a.postnummer
        ";

    if ($_POST['profilbillede'] == "Ja")
    {
        $sql .= "
                ,b.brugernavn AS billednavn
            FROM
                tabel1 AS a
            INNER JOIN
                tabel2 AS b
            ON
                a.brugernavn = b.brugernavn
            ";
    }
    else
    {
        $sql .= "
            FROM
                tabel1 AS a
            ";
    }
    $sql .= "WHERE a.brugernavn != 'Sponto'";
    if ($_POST['fornavn'] != "")
    {
        $sql .= " AND a.fornavn LIKE '%$_POST[fornavn]%'";
    }
    if ($_POST['efternavn'] != "")
    {
        $sql .= " AND a.efternavn LIKE '%$_POST[efternavn]%'";
    }
    if ($_POST['brugernavn'] != "")
    {
        $sql .= " AND a.brugernavn LIKE '%$_POST[brugernavn]%'";
    }
    if ($_POST['civilstatus'] != "Ligegyldigt")
    {
        $sql .= " AND a.civilstatus = '%$_POST[civilstatus]%'";
    }
    if ($_POST['online'] == "Ja")
    {
        $settime = time()-65;
        $sql .= " AND a.settime > '$settime'";
    }
    if ( $_POST['postnummer_start'] != "" && $_POST['postnummer_slut'] != "")
    {
        $sql .= " AND a.postnummer >= '$_POST[postnummer_start]' AND a.postnummer <= '$_POST[postnummer_slut]'";
    }
    if ($_POST['alder_start'] != "" && $_POST['alder_slut'] != "")
    {
        $alder = "((UNIX_TIMESTAMP()-UNIX_TIMESTAMP(STR_TO_DATE(CONCAT(foedselsdag_aar,'/',foedselsdag_maaned,'/',foedselsdag_dag),'%Y/%m/%d')))/31536000)";
        $sql .= " AND $alder BETWEEN '$_POST[alder_start]' AND '$_POST[alder_slut]'";
    }
    $sql .= " ORDER by settime DESC";
   
    $find_users = mysql_query( $sql )or die(mysql_error());
Avatar billede cronick Nybegynder
08. november 2006 - 19:29 #7
Af en eller anden grund, så kommer den med fejlen, at der mangler at afslutte en { ( altså med en } ), når jeg bruger den du har skrevet der.. Hvad kan det evt. skyldes?
Avatar billede coderdk Praktikant
08. november 2006 - 22:22 #8
Hvad er fejlen præcist?
Avatar billede cronick Nybegynder
08. november 2006 - 23:42 #9
Parse error: parse error, unexpected $ ... on line 238
Avatar billede coderdk Praktikant
09. november 2006 - 03:23 #10
238? Hvad står der så på den linje, og linjerne omkring?
Avatar billede cronick Nybegynder
09. november 2006 - 16:02 #11
Der står ikke noget. Den sidste linje er 237..
Avatar billede coderdk Praktikant
09. november 2006 - 16:43 #12
Så er der en fejl i en af de foregående linjer.
Avatar billede cronick Nybegynder
09. november 2006 - 23:35 #13
Jammen, det er kun når jeg indsætter din kode, altså erstatter den med min egen.. Og,, kan ikke se der skulle være nogen steder, hvor jeg mangler at afslutte..
Avatar billede coderdk Praktikant
10. november 2006 - 01:47 #14
Hmm ok, jeg kan bare ikke se noget galt med koden...
Avatar billede cronick Nybegynder
10. november 2006 - 23:35 #15
Kan det ikke muligvis skyldes, at serveren siden kører på er MySQL 4.0.25 ?
Avatar billede coderdk Praktikant
11. november 2006 - 00:28 #16
Well, fejlen ser forkert ud. Men ja, som jeg skrev kræver min kode MySQL 4.1.1 eller nyere... Tror dog ikke at det der er den specifikke fejl - Den fejl du får er en fejl i PHP-koden, tror jeg.
Avatar billede cronick Nybegynder
11. november 2006 - 19:15 #17
Okey, det kan jeg egentlig også godt forstå.. Det er mig der ikke har haft overblik nok i min fil, og dermed ikke har kunnet se, at jeg manglede at afslutte en IF, et sted. Alt virker som det skal, takket være din hjælp. Tak! Nu mangler du bare at smide et svar.. (:
Avatar billede coderdk Praktikant
11. november 2006 - 19:48 #18
det lyder godt :)
Avatar billede cronick Nybegynder
19. november 2006 - 14:36 #19
Har lige oprettet spørgsmål, der er relateret hertil http://www.eksperten.dk/spm/745754 ;)
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