Kom ihåg mig?
Home Menu

Menu


Alla lag får samma gruppid vid indelning

Ämnesverktyg Visningsalternativ
Oläst 2009-08-07, 22:58 #1
ksud ksud är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2008
Inlägg: 15
ksud ksud är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2008
Inlägg: 15
Hejsan!

Det är så att jag bygger upp ett cupscript. Jag har 16 lag i en tabell med kolumnerna: ckID (lagets unika id), namn, cupid och gruppid.

Jag vill dela upp de 16 lagen med id 1-16 i 4 grupper så 4 lag får gruppid 1; 4 får gruppid 2 etc.

Med det här delas lagen upp rätt i 4 grupper eftersom den plockar ut lagen med id 1-16 efter array:

<?php
include('settings.php');
if(isset($_GET['randomize'])) {
$alla_lag = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
for ($i=1; $i<=4; $i++) {
for ($j=1; $j<=4; $j++) {

$current_team = array_pop($alla_lag);
mysql_query("UPDATE $cuplag SET gruppid = '" . $i . "' WHERE ckID = '". $current_team . "'");
}}}
echo 'DONE';
?>

När jag försöker plocka ut lagen automatiskt genom mysql fetch funkar det inte. Det som händer är att alla lag får gruppid 1:

<?php
include('settings.php');
if(isset($_GET['randomize'])) {
$alla_lag=array();
$lagen2 = mysql_query("SELECT * from $cuplag WHERE cupid = 1") or die ("Det gick inte att hämta skribenten.2");
while ($lagen = mysql_fetch_array($lagen2)) {
$alla_lag[] = $lagen['ckID'];
for ($i=1; $i<=4; $i++) {
for ($j=1; $j<=4; $j++) {

$current_team = array_pop($alla_lag);
mysql_query("UPDATE $cuplag SET gruppid = '" . $i . "' WHERE ckID = '". $current_team . "'");
}}}}
echo 'DONE';
?>
ksud är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-07, 23:51 #2
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Du har gjort det lite omständigt för dig även om det fungerar.

En liten fråga, heter tabellen cuplag eller har du namnet i variabeln $cuplag?
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-08, 00:28 #3
Draqir Draqir är inte uppkopplad
Medlem
 
Reg.datum: May 2009
Inlägg: 125
Draqir Draqir är inte uppkopplad
Medlem
 
Reg.datum: May 2009
Inlägg: 125
Om du inte vill ha dom i oordning kan du ta bort första for satsen.
Kod:
$lag = *array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);

for($i = 1; $i <= 128; $i++){
	$t = rand(0,15);
	$u = rand(0,15);
	$temp = $lag[$t];
	$lag[$t] = $lag[$u];
	$lag[$u] = $temp;
}

for($i = 0; $i < 16; $i++){
 *mysql_query("UPDATE `tabell` SET gruppid='" . ceil(($i+1)/4) . "' WHERE ckID='" . $lag[$i] . "'");
}
Draqir är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-08, 00:43 #4
ksud ksud är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2008
Inlägg: 15
ksud ksud är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2008
Inlägg: 15
tartareandesire: Tabellen heter cuplag.

Draqir: jag vill inte att den uppdaterar min tabell med lagen som finns arrayen, utan lagen som jag hämtar från databasen, se den nedre lösningen;

$alla_lag=array();
$lagen2 = mysql_query("SELECT * from $cuplag WHERE cupid = 1") or die ("Det gick inte att hämta cuplagen");
while ($lagen = mysql_fetch_array($lagen2)) {

Den.
ksud är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-08, 00:55 #5
Draqir Draqir är inte uppkopplad
Medlem
 
Reg.datum: May 2009
Inlägg: 125
Draqir Draqir är inte uppkopplad
Medlem
 
Reg.datum: May 2009
Inlägg: 125
Du kör en while loop som loopar 16 ggr. Tar ut värdet på ett ckID och kör det 16 ggr. DVS varje ckID körs 16 ggr. Med andra ord det är lite svårt att förstå vad du vill göra med de 256 operationerna...

Citat:
Jag vill dela upp de 16 lagen med id 1-16 i 4 grupper så 4 lag får gruppid 1; 4 får gruppid 2 etc.
Detta löses som sagt enbart genom;

Kod:
$lag = *array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
for($i = 0; $i < 16; $i++) mysql_query("UPDATE `cuplag` SET gruppid='" . ceil(($i+1)/4) . "' WHERE ckID='" . $lag[$i] . "'");
Draqir är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-08, 01:00 #6
ksud ksud är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2008
Inlägg: 15
ksud ksud är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2008
Inlägg: 15
Hur ändrar jag arrayen så den plockar ut de lagen från tabellen cuplag med cupid 1? Så den inte loopar fram varje ckID 16 gånger.
ksud är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-08, 01:08 #7
Draqir Draqir är inte uppkopplad
Medlem
 
Reg.datum: May 2009
Inlägg: 125
Draqir Draqir är inte uppkopplad
Medlem
 
Reg.datum: May 2009
Inlägg: 125
Kod:
$i=1;
while($lag = mysql_fetch_assoc($lagen2){
  mysql_query("UPDATE cuplag SET gruppid='" . ceil($i/4) . "' WHERE ckID='" . $lag['ckID'] . "'");
  $i++;
}
Är nog det du letar efter. Men som sagt... :P
Draqir är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-09, 01:29 #8
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Denna uppgift är som klippt och skuren för en enkel SQL-sats (ingen loopande behövs i PHP över huvud taget för att exekvera uppgiften):

"ckID MOD 4" betyder att man tar värdet av lagid och tar modulus 4 av det, dvs det värdet kommer då at variera mellan 0,1,2,3 och så lägger vi till 1 så varierar det mellan 1,2,3,4 i stället. Du slipper helt att skicka med parametrar från PHP.

Jag förutsatte i detta att du redan har alla lagens id i tabellen cuplag och att kolumnen med lagens ID heter ckID.

Kod:
UPDATE cuplag SET gruppid = *(ckID MOD 4)+1
Kod:
mysql_query("UPDATE cuplag SET gruppid = (ckID MOD 4)+1");
Om du har flera cuper i samma tabell så får du lägga till en WHERE klausul med cupens ID givetvis.


Kod:
UPDATE cuplag SET gruppid = *(ckID MOD 4)+1 WHERE cupid = 1
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-15, 00:40 #9
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Hur gick det med uppgiften, var SQL-satsen tillräckliug för att lösa uppgiften?
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 19:55.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017