Sorteren van teams
Voorbeeld beheer:
1. + - Naam
2. + - Naam
3. + - Naam
4. + - Naam
5. + - Naam
Als ik bijvoorbeeld bij nummer 2 op + klik dan gaat die na positie 3.
Probleem is dat ik dan 2 nummers 3 heb.
Zelfde is natuurlijk bij de -.
Ik doe het nu middels deze function
Code (php)
1
2
3
4
2
3
4
public function plaatsPlus() {
$teams_id = $_GET['teams_id'];
mysql_query("UPDATE teams SET plaats=plaats+'1' WHERE teams_id='$teams_id'") or die (mysql_error());
}
$teams_id = $_GET['teams_id'];
mysql_query("UPDATE teams SET plaats=plaats+'1' WHERE teams_id='$teams_id'") or die (mysql_error());
}
Is het mogelijk om te zorgen dat als ik bijvoorbeeld bij 3 op + klik dat de huidige nummer 3 de nummer 2 word en de nieuwe 3 word.
En dit natuurlijk ook zo werkend met -.
Dus dat je niet het probleem hebt met dubbele nummers.
B.V.D.
Je moet een apart veld hebben voor de plaats. Het id moet je nooit wijzigen.
Code (php)
1
2
3
4
2
3
4
public function plaatsPlus() {
$teams_id = $_GET['teams_id'];
mysql_query("UPDATE teams SET plaats=plaats+'1' WHERE teams_id='$teams_id'") or die (mysql_error());
}
$teams_id = $_GET['teams_id'];
mysql_query("UPDATE teams SET plaats=plaats+'1' WHERE teams_id='$teams_id'") or die (mysql_error());
}
SET plaats=plaats+'1'
"UPDATE team SET plaats=plaats-1 WHERE plaats = (SELECT plaats FROM teams WHERE teams_id='$teamd_id'); UPDATE teams SET plaats=plaats+'1' WHERE teams_id='$teams_id'""
Daarna plaats je pas de nieuwe speler.
In het voorbeeld van Jacsoft gebeurt er uiteindelijk niet veel. De 1e query pakt 1 van de plaatsen uit de teams die dat bepaalde team ook heeft en verminderd die met 1, echter verhoogt die daarna (2e query) alle plaatsnummers weer met 1.
Iets logisch nadenken helpt al wel.
Misschien een voorbeeld opzoeken met een sorteerbaar menu , dat werkt exact hetzelfde :) .. en tientallen te vinden op het internet.
Dat is niet waar wat je zegt over mijn query. Mijn query gaat uit van unieke plaatsen. Ze veranderen beide dus dan maximaal 1 team.
De eerste query zoekt het team waarvan de plaats degene is welke we voor het andere team willen instellen en verlaagt die met 1. De tweede query verhoogt de plaats van het huidige team met 1. Op die manier zijn dus 2 teams omgewisseld:
Vorrbeeld:
TeamID,Plaats
1,1
2,2
3,3
4,4
5,5
6,6
Nu gaan we team 3 verhogen (dus naar plaats 4).
Query1:
TeamID,Plaats
1,1
2,2
3,3
4,3
5,5
6,6
Query2:
TeamID,Plaats
1,1
2,2
3,4
4,3
5,5
6,6
Code (php)
1
UPDATE team SET plaats=plaats-1 WHERE plaats = (SELECT plaats FROM teams WHERE teams_id='$teamd_id');
Goed, de 1e query: Stel je hebt teams en plaatsen:
1,1
2,2
3,3
4,4
5,5
Wat hier in bovenstaande query hoort te gebeuren als je team_id 3 wilt veranderen:
Hij veranderd de plaats van team 3 in 3-1 = 2, je krijgt nu:
1,1
2,2
3,2
4,4
5,5
Query 1 gaat dus al fout omdat je hier al die dubbele waarde krijgt
Vervolgens doe je in deze query voor hetzelfde team_id (blijft 3, die verander je in tussentijd niet) plaats+1, dus wordt het weer:
1,1
2,2
3,3
4,4
5,5
edit:
Overigens valt me nu pas op dat je $teamd_id en $teams_id gebruikt, hoe bepaal je het huidige team? Je geeft als het goed is alleen maar een enkel team_id mee en een actie voor dat team id.
Je antwoord is verre van compleet en ook niet bepaald duidelijk.
Je antwoord is verre van compleet en ook niet bepaald duidelijk.
Wat verander je uiteindelijk dan?
Daarnaast snap ik ook niet waarom je de 1 tussen quotes ( ' ) zet in deze 2e query
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
"UPDATE team SET plaats=plaats-1 WHERE plaats = (SELECT (plaats+1) as plaats FROM teams WHERE teams_id='$teams_id'); UPDATE teams SET plaats=plaats+1 WHERE teams_id='$teams_id'"
Zaten wat schoonheidsfoutjes in, want was niet getest. Maar ging meer om het idee. Zo zou die beter moeten zijn...
Dus ik ga maar eens zoeken na een voorbeeld zoals Jaron zei.
Iniedergeval bedankt voor de hulp
Code (php)
1
"UPDATE team AS t1, team AS t2 SET t1.plaats = t2.plaats, t2.plaats = t1.plaats WHERE t1.teams_id = '" . $teams_id . "' AND t2.teams_id = '" . $teams_id . "'"
Of klopt dat niet? Ik heb het eerlijk gezegd niet getest en ben wel benieuwd. Kunnen aliassen wel in een update-query en kunnen aliassen wel bij dezelfde tabellen?
Gewijzigd op 01/01/1970 01:00:00 door Mark L
Test dit voorbeeldscriptje maar eens:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$var1 = 'een';
$var2 = 'twee';
$var1 = $var2;
$var2 = $var1;
echo '<pre>' . print_r ($var1, true) . '</pre>';
echo '<pre>' . print_r ($var2, true) . '</pre>';
$var1 = 'een';
$var2 = 'twee';
$tmp = $var2;
$var2 = $var1;
$var1 = $tmp;
echo '<pre>' . print_r ($var1, true) . '</pre>';
echo '<pre>' . print_r ($var2, true) . '</pre>';
?>
$var1 = 'een';
$var2 = 'twee';
$var1 = $var2;
$var2 = $var1;
echo '<pre>' . print_r ($var1, true) . '</pre>';
echo '<pre>' . print_r ($var2, true) . '</pre>';
$var1 = 'een';
$var2 = 'twee';
$tmp = $var2;
$var2 = $var1;
$var1 = $tmp;
echo '<pre>' . print_r ($var1, true) . '</pre>';
echo '<pre>' . print_r ($var2, true) . '</pre>';
?>