Avatar billede nikksen Nybegynder
28. september 2006 - 01:31 Der er 16 kommentarer og
1 løsning

Sammensætning er SQL-forespørgsler

Hejsa, jeg lurede på om nedestående SQL-forespørgsler kan bruges på éen gang? Indtilvidere vil den kun tillade mig at lave dem af to omgange og opdelt som følger:

/// 1. forespørgsel:

CREATE TABLE `offpisteguide_d`.`nikksite_testtemp` (
`testnavn` text NOT NULL
) TYPE = MYISAM ;

INSERT  INTO  `offpisteguide_d`.`nikksite_testtemp` (  `testnavn`  )
SELECT `testnavn`
FROM  `offpisteguide_d`.`nikksite_test`;

TRUNCATE TABLE `nikksite_test`


/// 2. forespørgsel

INSERT  INTO  `offpisteguide_d`.`nikksite_test` (  `testnavn`  )
SELECT `testnavn`
FROM  `offpisteguide_d`.`nikksite_testtemp`;

DROP TABLE `nikksite_testtemp`


Jeg vil gerne have at jeg bare kan klikke på et link på mit site og dermed aktivere forespørgselerne på éen gang. Det jeg gerne vil opnå med det her er at resette autoid i `nikksite_test`.
Avatar billede coderdk Praktikant
28. september 2006 - 01:46 #1
Ikke for noget, men hvorfor vil du det? Jeg kan regne ud at du gerne vil af med eventuelle "huller" i ID-rækken, men det plejer at være et tegn på at man gør noget forkert ;)
Avatar billede nikksen Nybegynder
28. september 2006 - 01:50 #2
tja, problemet med "hullerne" opstår i mit galleri med hvor man bladre fra billede til billede vha. hhv. "Næste" og "Forrige". Er der et hul kan den ikke finde ud af at finde det næste billede.
Avatar billede coderdk Praktikant
28. september 2006 - 01:53 #3
Kan det ikke klares med ét statement? I statementet under antager jeg at du har en primærnøgle med navnet testid:

ALTER TABLE `nikksite_test` DROP PRIMARY KEY, DROP COLUMN testid, ADD COLUMN testid INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (testid);
Avatar billede coderdk Praktikant
28. september 2006 - 01:54 #4
nikksen, Er det så ikke bedre at lave frem-/tilbage-funktionaliteten om?
Nu jeg tænker mig om, skrev jeg ikke noget kode der gjorde det, til dig?
Avatar billede nikksen Nybegynder
28. september 2006 - 01:58 #5
jo, det kunne man godt. :) lige med undtagelse at den tilføjede id-kollonnen efter `testnavn` istedet for før, men det er vel noget der bare lige skal tilføjes i den der statement.

havde søgt her på eksperten.dk hele aftenen for at finde en mulighed og den jeg har stående ovenover var den eneste løsning jeg fandt. hehe
Avatar billede coderdk Praktikant
28. september 2006 - 01:59 #6
Det er vel ligemeget hvilken rækkefølge kolonnerne har?
Avatar billede nikksen Nybegynder
28. september 2006 - 02:00 #7
ikke lige den del af mit galleri.. den del har jeg fundet et sted her og brugt. den er her:


$query = mysql_query("SELECT * FROM nikksite_billeder WHERE bid = '".rawurldecode($billede)."'");
while ($billedeinfo = mysql_fetch_array($query)){   
    $billedebeskrivelse = nl2br($billedeinfo['billedebeskrivelse']);
       
    $forrigeurlbillede = $billede+1;
    $query = mysql_query("SELECT * FROM nikksite_billeder WHERE bid = '$forrigeurlbillede'");
    while ($forrigebilledeinfo = mysql_fetch_array($query)){
        if($forrigebilledeinfo[billedeuge] == $billedeinfo[billedeuge] && $forrigebilledeinfo[billedested] == $billedeinfo[billedested]) {
            if ($billedeinfo[bid] != 0) {
                $forrige = $billedeinfo[bid]+1;
                $forrigelink = "<a href=\"?billede=$forrige\">&#9668; Forrige</a> ";
            }
        }
    }

    $naesteurlbillede = $billede-1;
    $query = mysql_query("SELECT * FROM nikksite_billeder WHERE bid = '$naesteurlbillede'");
    while ($naestebilledeinfo = mysql_fetch_array($query)){
        if($naestebilledeinfo[billedeuge] == $billedeinfo[billedeuge] && $naestebilledeinfo[billedested] == $billedeinfo[billedested]) {
            if ($billedeinfo[bid]+1 != $billede) {
                $naeste = $billedeinfo[bid]-1;
                $naestelink .= "<a href=\"?billede=$naeste\">Næste &#9658;</a>";
            }
        }
    }

    eval("\$site_body = \"".template("nikk_valdisere0607_galleri_view_bid")."\";");
}
Avatar billede nikksen Nybegynder
28. september 2006 - 02:01 #8
det ved jeg ikke.. er det ligemeget? jeg troede det havde en betydning når man kørte forespørgsler som f.eks. UPDATE eller INSERT.
Avatar billede coderdk Praktikant
28. september 2006 - 02:06 #9
Rækkefølgen har ingen betydning, med mindre at du laver INSERT's uden en feltbetegnelse - Altså INSERT INTO tabel (felt1, felt2) VALUES ('værdi1','værdi2') altså hvis du undlader at skrive (felt1, felt2) så betyder rækkefølgen noget...
Anyway man kan bruge FIRST i en ADD COLUMN, altså:

ALTER TABLE `nikksite_test` DROP PRIMARY KEY, DROP COLUMN testid, ADD COLUMN testid INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (testid);

2 sek, laver lige din første/næste om!
Avatar billede nikksen Nybegynder
28. september 2006 - 02:07 #10
ja, fandt selv lige ud af det med at bruge FIRST. Og ja jeg bruger insert uden at skrive (felt1, felt2).

cool cool..
Avatar billede coderdk Praktikant
28. september 2006 - 02:10 #11
Værsgo:

    $forrigelink = "";
    $sql = "SELECT * FROM nikksite_billeder WHERE bid < $billede ORDER BY bid DESC LIMIT 1";
    $query = mysql_query($sql) or die( mysql_error() );
    if ( $row = mysql_fetch_assoc( $query ) )
    {
        $forrigelink = "<a href=\"?billede=$row[bid]\">&#9668; Forrige</a> ";   
    }

    $naestelink = "";
    $sql = "SELECT * FROM nikksite_billeder WHERE bid > $billede ORDER BY bid LIMIT 1";
    $query = mysql_query($sql) or die( mysql_error() );
    if ( $row = mysql_fetch_assoc( $query ) )
    {
        $naestelink .= "<a href=\"?billede=$row[bid]\">Næste &#9658;</a>";
    }

:)
Avatar billede nikksen Nybegynder
28. september 2006 - 02:14 #12
Tak. Jeg kan stadigvæk godt bruge mine if-statements i det script ikke? Med det tænker jeg på denne del:

if($forrigebilledeinfo[billedeuge] == $billedeinfo[billedeuge] && $forrigebilledeinfo[billedested] == $billedeinfo[billedested]) {

}

Billederne er nemlig sorteret først under hvor de er fra og derefter hvilken uge de er fra. Det er for at undgå at billederne fra andre steder eller uger pludselig åbnes ved "Næste".
Avatar billede coderdk Praktikant
28. september 2006 - 02:22 #13
Ah ja, men så skal du live lave variablene om:

if($row['billedeuge'] == $billedeinfo['billedeuge'] && $row['billedested'] == $billedeinfo['billedested']) {

}

Og samme med næste...
Avatar billede nikksen Nybegynder
28. september 2006 - 02:26 #14
Kanon.. jeg accepterer lige dit svar. Hvis du vil have flere point åbner jeg gerne en tråd til med point til dig for det var jo to løsninger i éen tråd. :)

Hvis du i øvrigt for tid på et tidspunkt og har lyst, så har jeg et stort problemer i denne tråd som der ikke rigtigt er nogen der kan/gider løse og du har jo haft lidt med mine mærkelige kodning at gør tidligere. :) here goes:

http://www.eksperten.dk/spm/734417
Avatar billede coderdk Praktikant
28. september 2006 - 02:28 #15
Næh tak, 15 pts er fint nok :)
Avatar billede coderdk Praktikant
28. september 2006 - 02:29 #16
Jeg vil i seng nu, skal nok prøve at kigge på spm - Hvis du vil forklare det lidt nærmere ;)
Avatar billede nikksen Nybegynder
28. september 2006 - 02:32 #17
alright.. jeg lægger lige en forklaring og så er jeg også på vej i seng.
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