Sorteren van teams

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roy L

Roy L

08/09/2009 23:34:00
Quote Anchor link
Ik zit met een probleem voor het sorteren van de plaats van me 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)
PHP script in nieuw venster Selecteer het PHP script
1
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());
}


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.
 
PHP hulp

PHP hulp

24/04/2024 19:59:16
 
- SanThe -

- SanThe -

08/09/2009 23:38:00
Quote Anchor link
Je moet een apart veld hebben voor de plaats. Het id moet je nooit wijzigen.
 
Roy L

Roy L

08/09/2009 23:41:00
Quote Anchor link
Dat heb ik nu toch ook?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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());
}


SET plaats=plaats+'1'
 
Whatever Whatever

Whatever Whatever

09/09/2009 00:15:00
Quote Anchor link
Gewoon 2 queries gelijk achter elkaar?

"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'""
 
Robert Deiman

Robert Deiman

09/09/2009 07:51:00
Quote Anchor link
En dat gaat fout, omdat je alle teams +1 doet, je moet in de WHERE wel aangeven dat je alleen de teams die hoger of gelijk staan dan dat nummer, in positie moeten stijgen. (plaats+1).

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.
 
Jaron T

Jaron T

09/09/2009 09:01:00
Quote Anchor link
Misschien een voorbeeld opzoeken met een sorteerbaar menu , dat werkt exact hetzelfde :) .. en tientallen te vinden op het internet.
 
Whatever Whatever

Whatever Whatever

09/09/2009 09:13:00
Quote Anchor link
@Robert,

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
 
Robert Deiman

Robert Deiman

09/09/2009 09:22:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE teams SET plaats=plaats+'1' WHERE teams_id='$teams_id';


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.


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
 
Whatever Whatever

Whatever Whatever

09/09/2009 12:42:00
Quote Anchor link
Ja je hebt gelijk de eerste query hoort de 2e optie: plaats+1 te zijn:

"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...
 
Roy L

Roy L

09/09/2009 20:59:00
Quote Anchor link
Ik krijg het nog niet voor elkaar Jacsoft.
Dus ik ga maar eens zoeken na een voorbeeld zoals Jaron zei.

Iniedergeval bedankt voor de hulp
 
Mark L

Mark L

09/09/2009 21:48:00
Quote Anchor link
Kan dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
Jan Koehoorn

Jan Koehoorn

09/09/2009 22:12:00
Quote Anchor link
@ Miloan: je wilt twee waarden verwisselen, en dat gaat niet zonder een derde variabele.
Test dit voorbeeldscriptje maar eens:
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
<?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>';
?>
 



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.