waarde uit vorige rij ophalen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Vincent -

vincent -

06/03/2007 09:10:00
Quote Anchor link
ik zit hier met een klein probleempje
ik ben een forum aan het maken maar dan moet je bijvoorbeeld ook de verschillende forums omhoog of omlaag kunnen verplaatsen
nu zou je kunnen zeggen, verander de ID naar degene die erboven staat
dat is ook mijn idee
maar nu heb ik bijvoorbeeld id 1, 2 en 5.
en dan moetten 5 en 2 verwisseld worden, maar hoe doe ik dat dan ?

Vincent.
 
PHP hulp

PHP hulp

20/11/2024 09:43:25
 
Robert Deiman

Robert Deiman

06/03/2007 09:35:00
Quote Anchor link
@vincent

Iets meer uitleg graag. Waarom zou je verschillende forums omhoog of omlaag willen plaatsen? Het id moetje vanaf blijven, je kan wel een extra veld toevoegen, en die gaan verplaatsen. Ik heb daar geloof ik nog wel ergens een voorbeeldcode voor liggen.

http://phphulp.robertdeiman.net/menu.php

Als dit ongeveer is wat je zoekt kan ik de code wel posten. Maar ik dacht dat er voor het topic waarvoor ik dit maakte nog iemand was die zoiets had gemaakt, dat zag er erg goed uit.
 
Vincent -

vincent -

06/03/2007 09:48:00
Quote Anchor link
dat voorbeeld is wel ongeveer wat ik zoek ja
ik neem aan dat je bekent ben met de phpBB forums en hun manier van veplaatsen van forums
die link die je net postte was ongeveer net zo`n idee
 
Robert Deiman

Robert Deiman

06/03/2007 09:59:00
Quote Anchor link
Nee ik ben daar niet bekend mee, ik bouw altijd alles zelf, dus gebruik ook geen phpBB forums :)

Maar onderstaand is de voorbeeldcode hiervoor, moet je maar eens kijken wat je er mee kan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Wijzig menuvolgorde</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
.menuitem{
    display:block;
    background-color:#cccccc;
    width:50px;
    float:left;
    }

</style>
</head>

<body>

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// maak database verbinding
$db = mysql_connect("localhost","robertdeiman_net","dbpass") or die ( "Het maken van de verbinding met de database is mislukt");
//$db = mysql_connect("localhost","root") or die ( "Het maken van de verbinding met de database is mislukt");
  mysql_select_db("robertdeiman_net_1",$db);
if(!isset($_GET['up']) && !isset($_GET['down'])){
    for($i=1;$i<=4;$i++){
        mysql_query("UPDATE menu SET nummer = ".$i." WHERE id = ".$i)or trigger_error(mysql_error());
        }
}

//haal hoogste nummer op
$maxnr_row = mysql_fetch_assoc(mysql_query("SELECT MAX(nummer) AS maximum FROM menu"))or trigger_error(mysql_error());
$maxnr = $maxnr_row['maximum'];

//controleer of er op de downlink is geklikt
if(isset($_GET['down']) && is_numeric($_GET['down']) && isset($_GET['nummer']) && is_numeric($_GET['nummer'])){
    if($_GET['nummer'] > $maxnr || $_GET['nummer'] < 1){
        echo 'U moet het script zijn werk laten doen en er niet zelf mee gaan prutsen';
        }

    else{
        //bepaal het nummer van de andere link die van plaats veranderd
        $nr_change=$_GET['nummer']+1;
            //controleer of het wel mogelijk is een item nog verder op te schuiven
            if($nr_change >$maxnr){
            echo 'Dit Item kan niet nog verder naar het einde van het menu worden geschoven';
            }

            //als op kan schuiven, voer dan de update uit
        else{
            $downqry = "SELECT id FROM menu WHERE nummer = '".$nr_change."'";
            $downrow = mysql_fetch_assoc(mysql_query($downqry));
            $update_down = mysql_query("UPDATE menu SET nummer = nummer+1 WHERE id=".$_GET['down']);
            if (!$update_down){
                trigger_error(mysql_error());
                }

            $update_up = mysql_query("UPDATE menu SET nummer = nummer-1 WHERE id=".$downrow['id']);
            if (!$update_up){
                trigger_error(mysql_error());
                }
            }
        }
    }

    //controleer of op de uplink is geklikt
if(isset($_GET['up']) && is_numeric($_GET['up']) && isset($_GET['nummer']) && is_numeric($_GET['nummer'])){
    if($_GET['nummer'] > $maxnr || $_GET['nummer'] < 1){
        echo 'U moet het script zijn werk laten doen en er niet zelf mee gaan prutsen';
        }

    else{
        // bepaal het nummer van de andere link die van plaats veranderd
        $nr_change=$_GET['nummer']-1;
        // controleer of het mogelijk is het gekozen item nog verder omhoog te schuiven
        if($nr_change == 0){
            echo 'Dit Item kan niet nog verder naar het begin van het menu worden geschoven';
            }

            //als het goed is gekeurd, dan de rijen weer updaten.
        else{
            $upqry = "SELECT id FROM menu WHERE nummer = '".$nr_change."'";
            $uprow = mysql_fetch_assoc(mysql_query($upqry));
            $update_up = mysql_query("UPDATE menu SET nummer = nummer-1 WHERE id=".$_GET['up']);
            if (!$update_up){
                trigger_error(mysql_error());
                }

            $update_down = mysql_query("UPDATE menu SET nummer = nummer+1 WHERE id=".$uprow['id']);
            if (!$update_down){
                trigger_error(mysql_error());
                }
            }
        }
    }



$sql = "SELECT linknaam,url,id,nummer FROM menu ORDER BY nummer ASC";
$result = mysql_query($sql);
if($result){
    while($row = mysql_fetch_assoc($result)){
        echo '<p><a href="'.$row['url'].'" class="menuitem">'.$row['linknaam'].'</a>&nbsp;&nbsp;&nbsp;<a href="?up='.$row['id'].'&amp;nummer='.$row['nummer'].'">omhoog</a>&nbsp;&nbsp;<a href="?down='.$row['id'].'&amp;nummer='.$row['nummer'].'">omlaag</a></p>';
        }
    }

else{
    trigger_error(mysql_error());
    }

    

?>

</body>
</html>
 
Vincent -

vincent -

06/03/2007 10:05:00
Quote Anchor link
voor wat ik er uit kan opmaken is er een aparte rij waarin de posities worden bepaalt
en zodra je die aanpast dat het getal dan wordt opgeteld of er vanaf wordt gehaalt
maar dat zou betekenen dat ik een nieuwe rij met een nieuwe auto_increment moet maken
maar aangezien ik al type_id Primary en auto_increment heb gegeven is dit niet mogelijk
en om het zo simpel mogelijk te houden voor de administrator moet het niet zo zijn dat hij zelf nog helemaal moet gaan uitvogelen waar die komt te staan door zelf een getal te moeten invoeren
 
Robert Deiman

Robert Deiman

06/03/2007 10:10:00
Quote Anchor link
@vincent

Waarom ik dit zo heb gedaan is omdat je risico loopt als je met de id gaat werken. Als je die kolom nu toevoegd kan je een heel simpel scriptje maken waarmee je in eerste instantie alle waarden al aangeeft.

Als jij met je id gaat "schuiven" zal je een omweg moeten zoeken (de id die je wil verschuiven eerst een id geven die nog niet bestaat -> MAX id + 1) dan de andere id's veranderen, en dan de id die je wilt veranderen, terug zetten naar de waarde waar je wilt dat die komt.

Zoals je leest nogal ingewikkeld.
 
Vincent -

vincent -

06/03/2007 10:15:00
Quote Anchor link
hmmm
ik zal eens even kijken
iniedergeval bedankt :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.