Ik ben bezig met een webtool voor het spel FM2011. Vind PHPen erg leuk en FM2011 ook wel, dus een mooie combinatie.
Ben inmiddels al aardig op weg.
Hieronder staan twee query's. De eerste selecteert de 4 beste spelers voor (in dit geval) de spits positie. De tweede query selecteert de 2 beste jeugdspelers.
De bedoeling van deze query's is om de beste keuze te maken voor de spits positie, en ook te weten welke jeugdspelers af en toe mee kunnen doen om ervaring op te doen in het eerste.
<?php
$PosSC = "
SELECT *
FROM beoordeling
JOIN speler
ON beoordeling.SpelerID = speler.SpelerID
WHERE datum>='$checkdate'
AND pos='SC'
ORDER BY score DESC
LIMIT 4";
$run_PosSC = mysql_query($PosSC);
while ($row = mysql_fetch_assoc($run_PosSC)) {
echo '<div class="V_naam">'.$natuurimage[$row["natuur"]].' '.$stars[$row["nu"]].' '.$row["Bijnaam"].' ('.floor(((strtotime("now") - strtotime($row["Geboortedatum"])) / (60*60*24*365))).') '.$stars[$row["pot"]].' <span class="tekst9">'.date("y", strtotime($row["ContractBegin"])).'</span>-'.date("y", strtotime($row["ContractEind"])).'</div>';
}
$PosSC2 = "
SELECT *
FROM beoordeling
JOIN speler
ON beoordeling.SpelerID = speler.SpelerID
WHERE speler.Jeugd='1'
AND beoordeling.SpelerID!='124'
AND beoordeling.datum>='$checkdate'
AND pos='SC'
ORDER BY score DESC
LIMIT 2";
$run_PosSC2 = mysql_query($PosSC2);
while ($row2 = mysql_fetch_assoc($run_PosSC2)) {
echo '<div class="V_naam">'.$natuurimage[$row2["natuur"]].' '.$stars[$row2["nu"]].' '.$row2["Bijnaam"].' ('.floor(((strtotime("now") - strtotime($row2["Geboortedatum"])) / (60*60*24*365))).') '.$stars[$row2["pot"]].' <span class="tekst9">'.date("y", strtotime($row2["ContractBegin"])).'</span>-'.date("y", strtotime($row2["ContractEind"])).'</div>';
}
?>
Er zijn twee tabellen. In de tabel 'speler' staat informatie als bijvoorbeeld spelersnaam, bijnaam, geboortedatum, jeugd/eerste... In de tweede tabel 'beoordeling' komen 3-maandelijkse beoordelingen (gebasseerd op klasse nu en klasse potentieel) van de spelers om zo uit te rekenen wie de beste speler is. Hiervoor moest ik dus een JOIN gebruiken, wat verder ook allemaal werkt.
Maar nu komt het volgende probleem. Bij de 4 beste spelers zit Kolseth en bij de 2 beste jeugdspelers zit ook Kolseth. Ik wil dus in dit geval Kolseth alleen bij de 4 beste spelers hebben en bij de jeugdspelers de volgende jeugdspeler in de rij zien.
Ik had in de 2e query al een begin gemaakt met "beoordeling.SpelerID!='124'", maar ipv dat ik hier handmatig het speler ID zet moet dit dus automatisch gaan. Wel weet ik hieruit dat kolom!='id' werkt.
Dus hoe kan ik het beste de resultaten uit de vorige query gebruiken in de nieuwe query?
Groeten Chris
[size=xsmall]Toevoeging op 18/07/2011 14:45:53:[/size]
<?php
$thelimit = 4;
$PosSC = "
SELECT *
FROM beoordeling
JOIN speler
ON beoordeling.SpelerID = speler.SpelerID
WHERE datum>='$checkdate'
AND pos='SC'
ORDER BY score DESC
LIMIT $thelimit";
$run_PosSC = mysql_query($PosSC);
while ($row = mysql_fetch_assoc($run_PosSC)) {
echo '<div class="V_naam">'.$natuurimage[$row["natuur"]].' '.$stars[$row["nu"]].' '.$row["Bijnaam"].' ('.floor(((strtotime("now") - strtotime($row["Geboortedatum"])) / (60*60*24*365))).') '.$stars[$row["pot"]].' <span class="tekst9">'.date("y", strtotime($row["ContractBegin"])).'</span>-'.date("y", strtotime($row["ContractEind"])).'</div>';
}
$resulteen = mysql_query("
SELECT speler.SpelerID, Bijnaam
FROM beoordeling
JOIN speler
ON beoordeling.SpelerID = speler.SpelerID
WHERE datum>='$checkdate'
AND pos='SC'
ORDER BY score DESC
LIMIT 1");
$roween = mysql_fetch_row($resulteen);
$resulttwee = mysql_query("
SELECT speler.SpelerID, Bijnaam
FROM beoordeling
JOIN speler
ON beoordeling.SpelerID = speler.SpelerID
WHERE datum>='$checkdate'
AND pos='SC'
ORDER BY score DESC
LIMIT 1,1");
$rowtwee = mysql_fetch_row($resulttwee);
$resultdrie = mysql_query("
SELECT speler.SpelerID, Bijnaam
FROM beoordeling
JOIN speler
ON beoordeling.SpelerID = speler.SpelerID
WHERE datum>='$checkdate'
AND pos='SC'
ORDER BY score DESC
LIMIT 2,1");
$rowdrie = mysql_fetch_row($resultdrie);
$resultvier = mysql_query("
SELECT speler.SpelerID, Bijnaam
FROM beoordeling
JOIN speler
ON beoordeling.SpelerID = speler.SpelerID
WHERE datum>='$checkdate'
AND pos='SC'
ORDER BY score DESC
LIMIT 3,1");
$rowvier = mysql_fetch_row($resultvier);
$poging1 = $roween[0];
$poging2 = $rowtwee[0];
$poging3 = $rowdrie[0];
$poging4 = $rowvier[0];
$PosSC2 = "
SELECT *
FROM beoordeling
JOIN speler
ON beoordeling.SpelerID = speler.SpelerID
WHERE speler.Jeugd='1'
AND beoordeling.SpelerID!='$poging1'
AND beoordeling.SpelerID!='$poging2'
AND beoordeling.SpelerID!='$poging3'
AND beoordeling.SpelerID!='$poging4'
AND beoordeling.datum>='$checkdate'
AND pos='SC'
ORDER BY score DESC
LIMIT 2";
?>
Dit werkt wel maar ik denk dat het nog veel korter kan. Want moet nog 10 andere posities, dus wordt denk ik een dikke lap tekst.
Als iemand weet, of mij een duw in de richting kan geven, hoe je in één keer de resultaten hergebruikt uit de eerdere query zou dat geweldig zijn!
Groeten