Hieronder een functie om uit de gegevens van table = 'match_kn' te berekenen welke wedstrijden er gespeeld gaan worden in de semifinals (table = 'match_half')

Echter, de waardes $names[0] t/m $names[3] zijn leeg.
Hoe komt dit?

<?php
function inHalf(){
$names = array();

$result = mysql_query("SELECT * FROM match_kn WHERE w_a_p<>0 ORDER BY id ASC LIMIT 4") or die(mysql_error());
while($obj = mysql_fetch_object($result)){
$names[] = $obj->w_a_p;
}
// Wedstrijden semifinals in database zetten
mysql_query("INSERT INTO match_half (thuis_team,gasten_team) VALUES ('{$names[0]}','{$names[1]}')") or die(mysql_error());
mysql_query("INSERT INTO match_half (thuis_team,gasten_team) VALUES ('{$names[2]}','{$names[3]}')") or die(mysql_error());

// Check op 1 zetten
mysql_query("UPDATE `checks` SET `funcsemi1` = '1' WHERE `funcsemi1` =0 LIMIT 1") or die(mysql_error());

// Laat even weten dat alles chill ging
echo "Alle berekeningen zijn goed gegaan en alles is goed in de database gevoerd. Deze pagina herlaadt zichzelf in 5 seconden waarna je nog wat aanvullende info in moet vullen. Die info is wederom <a href=\"http://www.uefa.com/Competitions/euro/index.html\"; target=\"blank\">hier</a> te vinden.";
}?>
Waar controleer jij of de query wel resultaten heeft opgelevert? Daar kun je nu geen zinnig woord over zeggen.

Verder zou ik ook nog maar eens naar je datamodel kijken. Een tabel voor de halve finales kan bijna niet correct zijn. Een halve finale is namelijk ook gewoon een wedstrijd en deze hoort dus in de tabel met wedstrijden thuis. Dat het een halve finale is volgt bijvoorbeeld uit het rondenummer dat ook in de tabel met wedstrijden opgeslagen is.
Ik gebruik voor iedere nieuwe ronde (poule,quarter,semi,final) een nieuwe table.
Hoe stel je voor dat ik de query controleer op resultaten?
@Niels: als je je database zo gebruikt zou ik de tip van Blanche maar eens opvolgen. Dit is absoluut niet handig. Hoe weet je nou (bijvoorbeeld) als je de datum van een wedstrijd weet in welke tabel je moet zoeken?

Je kan dus echt het beste alle wedstrijden in 1 tabel gooien en deze op een juiste manier koppelen. Teken het is eens uit, het maakt wel degelijk een groot verschil en het is uiteindelijk vele malen handiger!

En op je vraag terug te komen:

je moet weten hoeveel rijen je hebt opgehaald met die query -> [php]mysql_num_rows[/php]

Maar voordat je hier aan begint: ga normaliseren!
Ik gebruik voor iedere nieuwe ronde (poule,quarter,semi,final) een nieuwe table.
Dat datamodel klopt dus van geen kant! Wat nu als je bijvoorbeeld een extra ronde wilt toevoegen? Ga je dan een nieuwe tabel aanmaken?!

Of een wedstrijd een poule wedstrijd, kwart of halve finale is, is een eigenschap van die wedstrijd. Een aangezien je voor verschillende eigenschappen geen aparte tabellen gaat aanmaken, sla je die eigenschap dus gewoon op in een aparte kolom in de tabel met alle wedstrijden.

Kortom, ga normaliseren en zorg dat je pas verder gaat werken als je een goed genormaliseerd datamodel over hebt.
Heb genormaliseerd en alle pagina's aangepast aan het nieuwe databasemodel.

Heb nu 3 tabellen over:
checks
teams
matches (iedere match krijgt nu een type (poule,quart,semi of final))

Ik zit nog steeds met hetzelfde probleem.


Nieuwe code:
<?php
function inFinal(){
// Teams die de finale wedstrijd spelen uit db halen
$names = array();
$result = mysql_query("SELECT id, name, in_final FROM teams WHERE in_final='1' LIMIT 2") or die(mysql_error());
while($obj = mysql_fetch_object($result)){
$names[] = $obj->name;
}
// Wedstrijd in db zetten
mysql_query("INSERT INTO matches (type, thuis_team,gasten_team) VALUES ('final','{$names[0]}','{$names[1]}')") or die(mysql_error());

// Check op 1 zetten
mysql_query("UPDATE `checks` SET `final1` = '1' WHERE `final1` =0 LIMIT 1") or die(mysql_error());

// Laat even weten dat alles chill ging
echo "Alle berekeningen zijn goed gegaan en alles is goed in de database gevoerd. Deze pagina herlaadt zichzelf in 5 seconden waarna je nog wat aanvullende info in moet vullen. Die info is wederom <a href=\"http://www.uefa.com/Competitions/euro/index.html\"; target=\"blank\">hier</a> te vinden.";
}
?>

Reageren