Likes Likes:  0
Resultaten 1 tot 11 van de 11
Geen
  1. #1
    entries omhoog/omlaag plaatsen (sorteren)
    geregistreerd gebruiker
    118 Berichten
    Ingeschreven
    07/01/04

    Locatie
    Almere

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: Nee
    KvK nummer: 39085401
    Ondernemingsnummer: nvt

    Thread Starter

    entries omhoog/omlaag plaatsen (sorteren)

    Hallo,

    Misschien begin ik verkeerd, maar ik waag een gokje...
    Ik weet vrij weinig tot niets van PHP (ik doe meer grafisch werk) maar samen met mijn collega (die wel php doet) bouwen wij websites.

    Nu zit ik met een redelijk simpele functie die hij op 1 of andere manier niet werkend krijgt.
    Nu heb ik in een geintje gebluft dat ik dat wel ff oplos...jaja, niet dus :-)

    Aangezien ik denk dat het een redelijke simpele functie is durf ik hier wel een gokje te wagen.

    Het gaat om het volgende, stel je hebt een pagina waar je telkens een entry bijplaatst (tekst)

    ID SORT NR

    1 1
    2 2
    3 3
    4 4
    5 5
    6 6

    Stel ik wil ID4 omhoog plaatsen, naar de 3e positie (doormiddel van een beheer pagina waar de entries staan druk ik op een knop OMHOOG, nu zou de entry 1 postie onhoog moeten schuiven en zou het er zo uitzien

    1 1
    2 2
    4 3
    3 4
    5 5
    6 6

    Echter: ID1 mag nooit -1 zijn, en de hoogste mag nooit +1 zijn, want die bestaan immers niet

    Is er iemand die me helpen kan (als de functie inderdaad zo simpel is als ik denk, dan ga ik een goeie week tegemoed :-)

  2. #2
    entries omhoog/omlaag plaatsen (sorteren)
    geregistreerd gebruiker
    3.705 Berichten
    Ingeschreven
    26/11/05

    Locatie
    Duivendrecht

    Post Thanks / Like
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    27 Berichten zijn liked


    Naam: Gert Jan
    KvK nummer: 34272910

    als positie is 1 disable omhoog knopje ?

  3. #3
    entries omhoog/omlaag plaatsen (sorteren)
    geregistreerd gebruiker
    118 Berichten
    Ingeschreven
    07/01/04

    Locatie
    Almere

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: Nee
    KvK nummer: 39085401
    Ondernemingsnummer: nvt

    Thread Starter
    Daar was ik inmiddels al uit, en bij de laatste positie is het precies andersom.
    Maar nu de hamvraag....hoe het veranderen van die sort. id's

  4. #4
    entries omhoog/omlaag plaatsen (sorteren)
    sleepless
    621 Berichten
    Ingeschreven
    25/11/06

    Locatie
    Antwerpen

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    wel er zijn verschillende manieren waaraan ik denk
    als je dit bvb met php en mysql script kan je een kolom in je tabel van records aanmaken bvb rangorder, en hierin dan 1-2-3..
    en dan simpel:
    SELECT *
    FROM tabelnaam
    ORDER BY rangorder

    Een andere mogenlijkheid is te werken met een array, het hangt er maar vanaf wat de precies implementatie is ...

  5. #5
    entries omhoog/omlaag plaatsen (sorteren)
    Uuuuuhhh
    382 Berichten
    Ingeschreven
    06/11/06

    Locatie
    Voorburg

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    1 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: 27290746
    Ondernemingsnummer: nvt

    Ik doe het zo, d.m.v. AJAX:

    Code:
    <img src="omhoog.gif" class="button" alt="Omhoog" title="Omhoog" onClick="paginaVolgorde(\'omhoog\', \'$id\');" />
    Dan de functie "paginaVolgorde()":

    Code:
    function paginaVolgorde($w, $pagid) {
    	createXMLHttpRequest();
    	
    	pagid				= $pagid;
    	
    	var url 			= "http://url.ext/inc.php?timestamp=" + new Date().getTime();
    	var queryString		= "w=" + $w + "&paginaid=" + pagid;
    	
    	xmlHttp.open("POST", url, true);
    	xmlHttp.onreadystatechange = callbackPaginaVolgorde;
    	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
    	xmlHttp.send(queryString);
    }
    Next, de PHP-pagina:

    PHP Code:
    $SQL->query(1, "
                                SELECT volgorde
                                FROM pagina
                                WHERE id = '" 
    . mysql_real_escape_string($_POST['paginaid']) . "'
                                "
    );
                                
            if(
    $SQL->fetch_numrows(1)) {
                
    $dbpagina                = $SQL->fetch_array(1);
                
                if(
    $w == 'omhoog') {
                    
    $volgorde            = $dbpagina['volgorde'] - 1;
                }else{
                    
    $volgorde            = $dbpagina['volgorde'] + 1;
                }
                
                
    $SQL->query(1, "
                                UPDATE pagina SET
                                volgorde = '" 
    . $volgorde . "',
                                datumtijd = " 
    . mktime() . "
                                WHERE id = '" 
    . mysql_real_escape_string($_POST['paginaid']) . "'
                                "
    ); 
    Moet je alleen nog even die check inbouwen voor -1 +1 en callback functie.

  6. #6
    entries omhoog/omlaag plaatsen (sorteren)
    geregistreerd gebruiker
    1.352 Berichten
    Ingeschreven
    15/05/07

    Locatie
    Best

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    47 Berichten zijn liked


    Bedrijf: YolkNet Internetservices
    Functie: CEO
    URL: www.yolknet.nl
    Registrar SIDN: nee
    KvK nummer: 27281066
    Ondernemingsnummer: nvt

    Ik heb een cms gemaakt waarbij ik ook zoiets gebruik. Dit zijn de stappen:
    1. select order where id=4
    2. $order1 = order
    3. als move==up dan select id where id=$order-1. (Anders select id where id=$order+1)

    nu heb je 2 id's en van 1 weet je de order. Nu kun je met "update where id=xx" de orders van die twee omdraaien.

    Ik hoop dat ik het niet al te ingewikkeld heb uitgelegd. Anders pm maar als het niet lukt.

    EDIT:
    Oh ja, en natuurlijk "if order==1" dan geen move up laten zien
    En bij je query nog iets van MAX(order) zetten. Dan kun je met "if order==max" voorkomen dat gebruikers de laatste entry niet nog verder kunnen verplaatsen

  7. #7
    entries omhoog/omlaag plaatsen (sorteren)
    geregistreerd gebruiker
    4.175 Berichten
    Ingeschreven
    09/12/05

    Locatie
    Almere

    Post Thanks / Like
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)
    76 Berichten zijn liked


    Naam: Ramon Fincken
    Bedrijf: Klarned Managed Hosting / Halvar.io
    Functie: CEO
    URL: www.klarned.is
    Registrar SIDN: Nee
    KvK nummer: 30262182
    TrustCloud: ramonfincken
    View ramonfincken's profile on LinkedIn

    Hier een stukje code welke de pageorder omflipt, de datatabel ziet er zo uit ( stukjes weggeknipt ) en ik laat alleen het eerste stuk ( oude ) code zien.

    Hier zit een check in , dat als er geen hogere of lagere pageorder gevonden word hij niets doet.
    zie:
    PHP Code:
                // SWAP
                
    if ($id2 > -1) { 

    CREATE TABLE IF NOT EXISTS `data` (
    `id` int(11) NOT NULL auto_increment,
    `parentid` int(11) default '-1',
    `pageorder` int(6) default '30',
    `subpageorder` int(5) default '10',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM;

    Bij toevoegen nieuwe data entry zorg dat je pageorder en evt je subpageorder een hoger getal krijgen dan de al bestaande.

    dbconnect() en dbclose() kun je deleten als je beschikking hebt over een openstaande DB connectie.

    PHP Code:
    // LEGACY

    // Change
    function change_direction($tablename = 'data', $idname = 'id', $idparentname = 'parentid', $pageordername = 'pageorder', $subpageordername = 'subpageorder') {
       global 
    $_GET;

       
    // Input parent ----
       
    if (isset ($_GET['changeid']) && isset ($_GET['direction']) && intval($_GET['changeid']) > 0) {
          if (
    $_GET['direction'] == 'up' || $_GET['direction'] == 'down') {
             
    dbconnect();
             if (
    $_GET['direction'] == 'up') {
                
    $sql = "select $idname, $pageordername FROM $tablename WHERE $idname = " . intval($_GET['changeid']) . " LIMIT 1";
                
    $result = dbquery($sql);
                
    // GRAB this value
                
    while ($row = mysql_fetch_array($result)) {
                   
    $id1 = $row[$idname];
                   
    $pageorder1 = $row[$pageordername];
                }
                
    // GRAB lower pageorder
                
    $sql = "select $idname, $pageordername FROM $tablename WHERE $pageordername <= " . intval($pageorder1) . " AND $idname != " . $id1 . " AND $idparentname = -1 ORDER BY $pageordername DESC LIMIT 1";
                
    $result = dbquery($sql);
                
    $id2 = '-1';
                while (
    $row = mysql_fetch_array($result)) {
                   
    $pageorder2 = $row[$pageordername];
                   
    $id2 = $row[$idname];
                }
                
    // SWAP
                
    if ($id2 > -1) {
                   
    $sql = "UPDATE $tablename SET $pageordername = '" . $pageorder2 . "' WHERE $idname = " . $id1 . " LIMIT 1";
                   
    $result = dbquery($sql);
                   
    $sql = "UPDATE $tablename SET $pageordername = '" . $pageorder1 . "' WHERE $idname = " . $id2 . " LIMIT 1";
                   
    $result = dbquery($sql);
                }
             } else {
                
    $sql = "select $idname, $pageordername FROM $tablename WHERE $idname = " . intval($_GET['changeid']) . " LIMIT 1";
                
    $result = dbquery($sql);
                
    // GRAB this value
                
    while ($row = mysql_fetch_array($result)) {
                   
    $id1 = $row[$idname];
                   
    $pageorder1 = $row[$pageordername];
                }
                
    // GRAB higher pageorder
                
    $sql = "select $idname, $pageordername FROM $tablename WHERE $pageordername >= " . intval($pageorder1) . " AND $idname != " . $id1 . " AND $idparentname = -1 ORDER BY $pageordername asc LIMIT 1";
                
    $result = dbquery($sql);
                
    $id2 = '-1';
                while (
    $row = mysql_fetch_array($result)) {
                   
    $pageorder2 = $row[$pageordername];
                   
    $id2 = $row[$idname];
                }
                
    // SWAP
                
    if ($id2 > -1) {
                   
    $sql = "UPDATE $tablename SET $pageordername = '" . $pageorder2 . "' WHERE $idname = " . $id1 . " LIMIT 1";
                   
    $result = dbquery($sql);
                   
    $sql = "UPDATE $tablename SET $pageordername = '" . $pageorder1 . "' WHERE $idname = " . $id2 . " LIMIT 1";
                   
    $result = dbquery($sql);
                }

             }
             
    dbclose();
          }
       }
       
    // Input parent ----

       // Input sub ----

       // Weggeknipt voor WHT

       // Input sub ----
    }
    // Change

    // LEGACY 
    Klarned Managed hosting Hosting, optimalisatie & debugging door WP Core developers

  8. #8
    entries omhoog/omlaag plaatsen (sorteren)
    geregistreerd gebruiker
    3.705 Berichten
    Ingeschreven
    26/11/05

    Locatie
    Duivendrecht

    Post Thanks / Like
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    27 Berichten zijn liked


    Naam: Gert Jan
    KvK nummer: 34272910

    Daar heb je geen while voor nodig, ze moeten stuivertje wisselen met degene die er boven/onder ligt.

    Code:
    $id = selected_id
    als (omhoog) {
      // verplaats record boven huidige eentje omlaag
      update tabel a, tabel b set a.positie = b.positie waar a.positie = (b.positie - 1) en b.id=$id
      // verplaats huidige eentje omhoog
      update tabel set positie = positie - 1 waar id=$id
    } anders {
     // doe het omlaag zetten
      update tabel a, tabel b set a.positie = b.positie waar a.positie = (b.positie +1) en b.id=$id
      update tabel set positie = positie + 1 waar id=$id
    }
    En als je eentje ergens tussen zet dan kan je dat op dezelfde manier doen, je schuift alles er onder eentje naar beneden:
    Code:
    $id = plaats_hier_voor
    update tabel set positie = positie + 1 waar positie >= (selecteer positie van tabel waar id=$id)
    // invoegen
    insert in tabel positie=select (positie - 1) van tabel waar id=$id

  9. #9
    entries omhoog/omlaag plaatsen (sorteren)
    Uuuuuhhh
    382 Berichten
    Ingeschreven
    06/11/06

    Locatie
    Voorburg

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    1 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: 27290746
    Ondernemingsnummer: nvt

    Citaat Oorspronkelijk geplaatst door gjtje Bekijk Berichten
    Daar heb je geen while voor nodig, ze moeten stuivertje wisselen met degene die er boven/onder ligt.

    Code:
    $id = selected_id
    als (omhoog) {
      // verplaats record boven huidige eentje omlaag
      update tabel a, tabel b set a.positie = b.positie waar a.positie = (b.positie - 1) en b.id=$id
      // verplaats huidige eentje omhoog
      update tabel set positie = positie - 1 waar id=$id
    } anders {
     // doe het omlaag zetten
      update tabel a, tabel b set a.positie = b.positie waar a.positie = (b.positie +1) en b.id=$id
      update tabel set positie = positie + 1 waar id=$id
    }
    En als je eentje ergens tussen zet dan kan je dat op dezelfde manier doen, je schuift alles er onder eentje naar beneden:
    Code:
    $id = plaats_hier_voor
    update tabel set positie = positie + 1 waar positie >= (selecteer positie van tabel waar id=$id)
    // invoegen
    insert in tabel positie=select (positie - 1) van tabel waar id=$id
    Je hebt ook weleens dat je wil dat ze op hetzelfde niveau zitten en op alfabetische volgorde worden getoond.

  10. #10
    entries omhoog/omlaag plaatsen (sorteren)
    Banned
    794 Berichten
    Ingeschreven
    02/03/05

    Locatie
    Mijdrecht

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    1 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: 30203392
    Ondernemingsnummer: nvt

    Een botte manier, maar makkelijk bedacht.
    Geeft de sort kolom alleen waardes van 10-tallen. Bij omhoog schuiven tel je er 15 bij op, en bij verlagen haal je er 15 vanaf. Daarna een functie erover heen om alles weer 10-tallen te maken:

    ID SORT
    1 10
    2 20
    3 30
    4 40

    3 voor 2 plaatsen:
    ID SORT
    1 10
    2 20
    3 15
    4 40

    Nu de functie om weer 10 tallen er van te maken
    1 10
    2 30
    3 20
    4 40

    Functie om weer 10 tallen te maken:

    PHP Code:
    begin transactie
    SELECT sort FROM tabel ORDER BY sort
    $i 
    = 10;
    Foreach (
    sort as s)
    {
      
    update tabel set sort=$i where sort=s;
      
    $i+=10;
    }
    commit transactie. 
    Zolang de tabellen niet teveel records krijgen
    En een insert ergens tussen is makkelijk te doen, neem een waarde waar die tussen moet, run de functie en alles is weer 10-tallen.
    Ook de eerste verlagen (naar -5) is geen probleem omdat de na de functie weer op 10 staat.

  11. #11
    entries omhoog/omlaag plaatsen (sorteren)
    geregistreerd gebruiker
    4.175 Berichten
    Ingeschreven
    09/12/05

    Locatie
    Almere

    Post Thanks / Like
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)
    76 Berichten zijn liked


    Naam: Ramon Fincken
    Bedrijf: Klarned Managed Hosting / Halvar.io
    Functie: CEO
    URL: www.klarned.is
    Registrar SIDN: Nee
    KvK nummer: 30262182
    TrustCloud: ramonfincken
    View ramonfincken's profile on LinkedIn

    Citaat Oorspronkelijk geplaatst door deCube Bekijk Berichten
    Je hebt ook weleens dat je wil dat ze op hetzelfde niveau zitten en op alfabetische volgorde worden getoond.
    jup, in mijn geval kun je de while als IF lezen en heb je 2niveau's ( hence de parentid en de subpageorder )

    @bakkerl, werkt ook prima, phpbb2 werkt in de ACP zo met de volgorde van forums. Je zou om het wat lichter te maken nog een where statement kunnen toevoegen

    ik denk dat al met al de TS aardig uit de voeten kan met alle functions hier
    Klarned Managed hosting Hosting, optimalisatie & debugging door WP Core developers

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics