Avatar billede webcreator Nybegynder
25. maj 2004 - 12:21 Der er 4 kommentarer og
1 løsning

Indsæt ny row imellem 2 andre rows i databasen

Hej eksperter.

Jeg har en tabel der ser sådan ud :

ID  COUNT
1    1
2    2
3    3
4    4
5    5

Jeg kunne godt tænke mig at kunne indsætte en ny row mellem fx. COUNT 2 og 3, således at der blev 6 poster :

ID  COUNT
1    1
2    2
6    3
3    4
4    5
5    5

Ovenstående er sorteret efter COUNT.

Jeg har flg. kode, som ikke gør det ordentligt :

// Indeholder nummeret på den nye post som skal indsættes.
// Samtidig er det nummeret hvorfra de andre numre skal forhøjes med én.
$offset = $_POST["offset"];

$tests = mysql_query("SELECT * FROM testing") or die(mysql_error());
while ($test = mysql_fetch_array($tests)) {
   
    // Hvis COUNT fra DBen er højere eller lig $offset, så skal der ligges én til tallet i tabellen.
    if ($test["count"] >= $offset) {
        $where = $test["count"];
        mysql_query("UPDATE testing SET `count`=`count`+1 WHERE `count`='$where'") or die(mysql_error());
    }

}

// Det nye tal indsættes i databasen, og en ny row er dermed blevet oprettet
$insertSQL = "INSERT INTO tablecontent (`count`, `artikel`, `style`, `mobilcom`, `lagerbestand`) VALUES ('$newrow', '-', '-', '-', '-')";
mysql_query($insertSQL) or die(mysql_error());

Kan I se en fejl? Jeg er helt lost.
Avatar billede webcreator Nybegynder
25. maj 2004 - 12:23 #1
Hov, sidste linie var helt forkert. Skulle se sådan ud :

// Det nye tal indsættes i databasen, og en ny row er dermed blevet oprettet
$insertSQL = "INSERT INTO testing (`count`) VALUES ('$offset')";
mysql_query($insertSQL) or die(mysql_error());
Avatar billede webcreator Nybegynder
25. maj 2004 - 12:25 #2
Det er i øvrigt IF sætningen der giver problemer. Den nye row bliver indsat, men herefter bliver tallene i COUNT rettet forkert. De bliver nemlig ens.
Avatar billede erikjacobsen Ekspert
25. maj 2004 - 12:28 #3
Du burde kunne nøjes med een sql til ændring af de eksisterende:

mysql_query("UPDATE testing SET `count`=`count`+1 WHERE `count`>='$offset'") or die(mysql_error());
Avatar billede sostack Nybegynder
25. maj 2004 - 13:00 #4
måske:
mysql_query("UPDATE testing SET `count` += 1 WHERE `count` >= $offset") or die(mysql_error());

//sostack
Avatar billede webcreator Nybegynder
10. juli 2004 - 12:46 #5
Tak for input. Jeg er ved at lukke spørgsmål - hvis nogen føler de burde have points, så kontakt mig i et af mine aktive spørgsmål - så finder vi ud af noget dér.
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