Toon posts:

[PHP+MYSQL] Probleem met Update catagorie volgorde forum

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleempje met mijn zogenaamde zelfgemaakte forum in wording. Aangezien het heel stoer en tof is om een eigen forum te hebben ben ik ook maar eens aan de gang gegaan met een forum :D , ben nu bijna klaar hiermee, maar ik loop nog tegen 1 probleem, Dat is namelijk het inbouwen van een vooraf instelbare categorie volgorde in het forum.

Ik heb nu bijvoorbeeld 3 categorieen gemaakt, deze heb ik met phpmyadmin even een CAT_ORDER nummer gegeven. Dit is het nummer dat bepaald in welke volgorde de categorien op mijn scherm komen.

Dus:
Catagorie 1 heeft CAT_ORDER 0
Catagorie 2 heeft CAT_ORDER 1
Catagorie 3 heeft CAT_ORDER 2

Als ik nu een categorie vóór categorie 1 wil plaatsen, dan moeten de CAT_ORDER nummers van iedere catagorie nummer met 1 worden verhoogd.

Hiervoor had ik (mbv TFS van GOT) het volgende op "bedacht"

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    $CAT_ORDER = intval(substr($CAT_ORDER,0,1));

    echo "You've added cat nr. $CAT_ORDER<br>";
    
    $sql = "SELECT CAT_ORDER FROM forum_catagories";
        $resultaat = mysql_query($sql);
        $aantal = mysql_num_rows($resultaat);
    
    for($i=$CAT_ORDER;$i<$aantal;$i++){
    
        $NEW_NR = intval($i+1);
    
        mysql_query("UPDATE forum_catagories SET CAT_ORDER=CAT_ORDER+1 
                              WHERE CAT_ORDER=$i") or die("Oops...");

        //mysql_query("UPDATE forum_catagories SET CAT_ORDER=$NEW_NR 
                               WHERE CAT_ORDER=$i") or die("Oops...");

        echo "Changed $i to: $NEW_NR<br>";
    }



Hiermee zou elke categorie met een CAT_ORDER nummer boven het gegeven $CAT_ORDER, met 1 moeten worden verhoogd.

Als ik mijn script uitvoer, dan krijg ik dit te zien in mijn browser..

--------------
You've added cat nr. 0
Changed 0 to: 1
Changed 1 to: 2
Changed 2 to: 3
---------------

Als ik dan met phpmyadmin in mijn tabel met categorieen kijk, dan staat er echter

Catagorie 1 heeft CAT_ORDER 3
Catagorie 2 heeft CAT_ORDER 3
Catagorie 3 heeft CAT_ORDER 3
Catagorie 4 heeft CAT_ORDER 0

Ik maak dus duidelijk ergens een fout in de loop oid. Het leek me alleen wel raar dat de uitvoer in het browservenser wel correct is.

Dus weet iemand wat ik verkeerd doe? :*)

edit:
ik verkneukel gelijk alweer de lay out... hmz..

[ Voor 15% gewijzigd door Verwijderd op 12-03-2003 20:28 ]


  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21-08 06:33

Tux

Staan aardig wat typo's in zeg maar ;)

Catagorie --> Categorie :)

[ Voor 49% gewijzigd door Tux op 12-03-2003 20:25 ]

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Verwijderd

Topicstarter
Tux schreef op 12 maart 2003 @ 20:24:
Staan aardig wat typo's in zeg maar ;)

Catagorie --> Categorie :)
Tja sorry... eeem... :D das nogaltijd moelijk, gloof dat het komt doordat ik het forum voornamelijk in het engels probeer te schrijven, maar dat is dus nu een beetje semi-engels/nederlands oid ;) en dan maak je dus telkens dit soort typo's

/me krijgt ingeving :D
Volgens mij weet ik al wat ik fout doe,

volgens mij gaat hij zichzelf weer overschrijven enzo,

eerst krijg je stap 1, die begint bijvoorbeeld bij 0, we gaan zoeken naar cat_order nummers met 0

Dan wordt Categorie 1 Die op 0 stond op 1 gezet,

Dan gaan we zoeken naar cat_order nummers met 1,

Maar dan vindt ik dus niet de juiste omdat ik er net 1 op 1 heb gezet enzo

hmzz. es even gaan proberen op te lossen, bijvoorbeeld achterwaards de lus doorlopen :D

[ Voor 47% gewijzigd door Verwijderd op 12-03-2003 21:27 ]


Verwijderd

Topicstarter
*Vreugdevolle schop!

Woei, tis alweer gelukt, na enig klooien en uittekenen e.d is het toch eigenlijk heel logisch,

Wat ik dus fout deed, is de manier van loopen, zie post van mij hierboven,

Wat ik nu heb is dus:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    $CAT_ORDER = intval(substr($CAT_ORDER,0,1));

    echo "You've added cat nr. $CAT_ORDER<br>";
    
    $sql = "SELECT CAT_ORDER FROM forum_catagories";
        $resultaat = mysql_query($sql);
        $aantal = mysql_num_rows($resultaat);
        $totaal = intval($aantal);
    
    for($i=$totaal-1;$i>=$CAT_ORDER;$i--){
    
        $NEW_NR = intval($i+1);
    
        mysql_query("UPDATE forum_catagories SET CAT_ORDER=CAT_ORDER+1 
                             WHERE CAT_ORDER=$i") or die("Oops...");

        //mysql_query("UPDATE forum_catagories SET CAT_ORDER=$NEW_NR 
                             WHERE CAT_ORDER=$i") or die("Oops...");

        echo "Changed $i to: $NEW_NR<br>";
    }


Nou, iig allemaal bedankt voor jullie hulp :D ... eem... tja..

naja.. iig Tux, bedankt voor je opmerking van mijn spelvauten dan :+

Woei! :D

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-08 10:39

Janoz

Moderator Devschuur®

!litemod

Je kunt natuurlijk ook
SQL:
1
UPDATE forum_catagories SET CAT_ORDER=CAT_ORDER+1 WHERE CAT_ORDER>$location

doen. Voor $location vul je dan de positie in de de nieuwe categorie moet krijgen.

Of ben ik nu flauw ;)...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op 12 maart 2003 @ 21:42:
Je kunt natuurlijk ook
SQL:
1
..

doen. Voor $location vul je dan de positie in de de nieuwe categorie moet krijgen.

Of ben ik nu flauw ;)...
Flauwerd! :P

Jah, kan inderdaad, maar, ik met mijn gebrek aan SQL knowledge heeft de for loop maar gewijzigd (for loop skillz woei!) ... Maar dat idee van jou was natuurlijk minder werk geweest..

Maargoed, desondanks ik radeloos mijn vraag op tweakers gepoost heb, ben ik toch wel trots dat ik zelf (ook) een werkende oplossing heb gevonden hihi... /me lijkt wel egotrippert

Maar toch bedankt ;)

[ Voor 7% gewijzigd door Verwijderd op 12-03-2003 22:05 ]

Pagina: 1