Avatar billede rasmus_damberg Nybegynder
13. juli 2006 - 20:14 Der er 8 kommentarer

Mysql query "Ordering"

Jeg har 1500 records i min db. Jeg vil gerne have dem indekseret i min tabel som jeg kalder 'ordering'. Det skal være sådan at det sidst tilføjede content skal have 'ordering = 1' og så fremdeles. Anyone?
Avatar billede arne_v Ekspert
13. juli 2006 - 20:21 #1
Umiddelbart synes jeg ikke at du skal gemme den ordering i databasen.

SELECT * FROM tabelnavn ORDER BY insertdate DESC

og saa lad din applikation saette numre paa
Avatar billede rasmus_damberg Nybegynder
13. juli 2006 - 20:35 #2
Hele hurdlen bunder i at jeg har overført data fra en db til en anden ved hjælp at dette script:

<html>
    <head>
        <title>Lyngby BK - Kopier nyheder til ny DB</title>
    </head>

    <body>
<?php
function mysql_timestamp_to_human($dt)
{
    $yr=strval(substr($dt,0,2));
    $mo=strval(substr($dt,2,2));
    $da=strval(substr($dt,4,2));
    $hr=strval(substr($dt,6,2));
    $mi=strval(substr($dt,8,2));
    // $se=strval(substr($dt,10,2));

    return "20" . $yr . "-" . $mo . "-" . $da . " " . $hr . ":" . $mi . ":00";
}

// I første omgang finder vi ud af om der er nogen der har trykket på knappen
if (isset($HTTP_POST_VARS['mode']))
{
    // Hvis der er åbnes en connection til den gamle db
    $connection = mysql_connect("xxx","xxx","xxx");

    // Vi skal have trukket alle records ud af den gamle db
    $query1 = "SELECT * FROM xxx.artikler ORDER BY xxx.artikler.dato ASC";
    $foresp1 = mysql_query($query1);

    // Vi sætter nogle konstanter vi kan smide udtrækkene ind i
    $id = "";
    $dato = "";
    $overskrift = "";
    $underrubrik = "";
    $btext = "";
    $billede = "";
    $forfatter = "";
    $email = "";

    // Herefter starter vi med at kopiere alle records til den nye db
    while ($data = mysql_fetch_array($foresp1))
    {
        $id = $data[id];
        $dato = mysql_timestamp_to_human($data[dato]);

        $overskrift = $data[overskrift];
        $underrubrik = $data[underrubrik];
        $btext = $data[broedtext];
        $billede = $data[billede];
        $forfatter = $data[forfatter];
        $email = $data[email];

        $query2 = "INSERT INTO joomla.jos_content (joomla.jos_content.title, joomla.jos_content.title_alias, joomla.jos_content.introtext, joomla.jos_content.fulltext, joomla.jos_content.state, joomla.jos_content.sectionid, joomla.jos_content.catid, joomla.jos_content.created, joomla.jos_content.created_by, joomla.jos_content.created_by_alias, joomla.jos_content.publish_up, joomla.jos_content.images, joomla.jos_content.urls, joomla.jos_content.attribs, joomla.jos_content.metakey, joomla.jos_content.metadesc) VALUES ('$overskrift','','$underrubrik','$btext',1,7,35,'$dato',62,'','$dato','$billede','','','','')";
        $foresp2 = mysql_query($query2);

        $id = "";
        $dato = "";
        $overskrift = "";
        $underrubrik = "";
        $btext = "";
        $billede = "";
        $forfatter = "";
        $email = "";
    };

    // ... og til sidst lukker vi forbindelsen til db'en
    mysql_close($connection);

    echo "<h5>Kopieringen af nyheder er udført...</h5>";
    echo "<a href='db_move.php'>Gå tilbage...</a>";
}
else
{
?>
        <h2>Kopier nyheder fra gammel database til ny database</h2>

        Ved at trykke på nedenstående knap kopieres samtlige nyheder fra den gamle database til den nye!<br>
        Vær opmærksom på at data i den gamle database IKKE vil blive slettet.<br><br>

        Håber du ved hvad du gør. Hvis ikke så luk venligst denne side uden at foretage dig noget som helst!<br><br>

        <form action="db_move.php" method="post" onSubmit="this.submit.disabled=true">
            <input type="hidden" name="mode" value="move">
            <input type="submit" size="40" name="submit" value=" Kopier nyhederne nu...! ">
        </form>
<?php
}
?>
    </body>
</html>

Jeg mangler bare at give hver post et 'ordering nummer'. Som sagt skal nummer 1 i 'ordering' smides ind i post 1500 nummer 2 i 1499 osv. Mere forståeligt?

Som sagt SKAL jeg have dem indekseret så jeg kan styre hvad der skal vises i mit cms...
Avatar billede arne_v Ekspert
13. juli 2006 - 20:57 #3
hvad med

    $ordering = 1500;
    while ($data = mysql_fetch_array($foresp1))
    {
        // indsaet $ordering i databasen
        $ordering--;
    }
Avatar billede rasmus_damberg Nybegynder
13. juli 2006 - 21:05 #4
Skal lige siges at dette script ikke er et jeg selv har lavet, så ville være glad for yderligere hjælp. Altså hvor ville du indsætte dette stykke kode i min php-fil?
Avatar billede arne_v Ekspert
13. juli 2006 - 21:07 #5
$ordering = 1500;

lige over while loekken

$ordering--;

lige foer den } som afslutter while loekken
Avatar billede arne_v Ekspert
13. juli 2006 - 21:08 #6
og saa skal $query2 aendres til at indsaette $ordering
Avatar billede rasmus_damberg Nybegynder
13. juli 2006 - 21:46 #7
Ok det virkede næsten bortset fra at den nulstiller ved record 1195 og begynder at gå i minus (-)???

<html>
    <head>
        <title>Kopier nyheder til ny DB</title>
    </head>

    <body>
<?php
function mysql_timestamp_to_human($dt)
{
    $yr=strval(substr($dt,0,2));
    $mo=strval(substr($dt,2,2));
    $da=strval(substr($dt,4,2));
    $hr=strval(substr($dt,6,2));
    $mi=strval(substr($dt,8,2));
    // $se=strval(substr($dt,10,2));

    return "20" . $yr . "-" . $mo . "-" . $da . " " . $hr . ":" . $mi . ":00";
}

// I første omgang finder vi ud af om der er nogen der har trykket på knappen
if (isset($HTTP_POST_VARS['mode']))
{
    // Hvis der er åbnes en connection til den gamle db
    $connection = mysql_connect("xxx","xxx","xxx");

    // Vi skal have trukket alle records ud af den gamle db
    $query1 = "SELECT * FROM xxx.artikler ORDER BY xxx.artikler.dato ASC";
    $foresp1 = mysql_query($query1);

    // Vi sætter nogle konstanter vi kan smide udtrækkene ind i
    $id = "";
    $dato = "";
    $overskrift = "";
    $underrubrik = "";
    $btext = "";
    $billede = "";
    $forfatter = "";
    $email = "";
    $ordering = 1535;
   
    // Herefter starter vi med at kopiere alle records til den nye db
    while ($data = mysql_fetch_array($foresp1))
    {
        $id = $data[id];
        $dato = mysql_timestamp_to_human($data[dato]);

        $overskrift = $data[overskrift];
        $underrubrik = $data[underrubrik];
        $btext = $data[broedtext];
        $billede = $data[billede];
        $forfatter = $data[forfatter];
        $email = $data[email];

        $query2 = "INSERT INTO joomla.jos_content (joomla.jos_content.title, joomla.jos_content.title_alias, joomla.jos_content.introtext, joomla.jos_content.fulltext, joomla.jos_content.state, joomla.jos_content.sectionid, joomla.jos_content.catid, joomla.jos_content.created, joomla.jos_content.created_by, joomla.jos_content.created_by_alias, joomla.jos_content.publish_up, joomla.jos_content.images, joomla.jos_content.urls, joomla.jos_content.attribs, joomla.jos_content.ordering, joomla.jos_content.metakey, joomla.jos_content.metadesc) VALUES ('$overskrift','','$underrubrik','$btext',1,7,35,'$dato',62,'','$dato','$billede','','','$ordering','','')";
        $foresp2 = mysql_query($query2);

        $id = "";
        $dato = "";
        $overskrift = "";
        $underrubrik = "";
        $btext = "";
        $billede = "";
        $forfatter = "";
        $email = "";
        $ordering--;
    };

    // ... og til sidst lukker vi forbindelsen til db'en
    mysql_close($connection);

    echo "<h5>Kopieringen af nyheder er udført...</h5>";
    echo "<a href='db_move.php'>Gå tilbage...</a>";
}
else
{
?>
        <h2>Kopier nyheder fra gammel database til ny database</h2>

        Ved at trykke på nedenstående knap kopieres samtlige nyheder fra den gamle database til den nye!<br>
        Vær opmærksom på at data i den gamle database IKKE vil blive slettet.<br><br>

        Håber du ved hvad du gør. Hvis ikke så luk venligst denne side uden at foretage dig noget som helst!<br><br>

        <form action="db_move.php" method="post" onSubmit="this.submit.disabled=true">
            <input type="hidden" name="mode" value="move">
            <input type="submit" size="40" name="submit" value=" Kopier nyhederne nu...! ">
        </form>
<?php
}
?>
    </body>
</html>
Avatar billede arne_v Ekspert
14. juli 2006 - 04:14 #8
det forstår jeg simpelt hen ikke
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