12. marts 2010 - 10:52
Der er
7 kommentarer og
1 løsning
MySQL forespørgelse med PHP
Hejsa
Jeg forsøger på at lave et simpelt liga system i PHP
Jeg er dog stødt ind i et problem som jeg håber der er nogen der kan hjælpe med.
Jeg har følgende tabel i MySQL:
CREATE TABLE `league_teamdata` (
`id` int(11) NOT NULL auto_increment,
`team_name` text NOT NULL,
`league` text NOT NULL,
`matches` decimal(10,0) NOT NULL default '0',
`won` decimal(10,0) NOT NULL default '0',
`lost` decimal(10,0) NOT NULL default '0',
`p_score` decimal(10,0) NOT NULL default '0',
`n_score` decimal(10,0) NOT NULL default '0',
`points` decimal(10,0) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Jeg ønsker så at lave en form hvor det er muligt at "indmelde et kampresultat, det vil sige en form der indeholder 4 input felter, 2 x hold og 2 x resultat (point)
Da der er flere sæsoner i systemet, de gamle gemmes bare, ønsker jeg når jeg indmelder et resultat, kun at trække de hold som er med i den nyeste sæson.
Sæsonen bliver bestemt i SQL tabellen "league". Jeg skal altså kunne trække holdene fra den seneste sæson (league) og kun dem.
Har denne kode, men den hiver alle hold fra alle sæsoner, kan simpelthen ikke lure hvad jeg skal skrive i SQL forespørgelsen for at få det sorteret.
KODE:
echo "<form action='add_result.php' method='post' name='add_result'>";
//Hold 1 START
echo "<tr>\n";
echo "<td width='15%'>Hold 1</td>\n";
echo "<td width='85%'>Runder vundet</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td width='15%'>";
include "config.php";
$link = mysql_connect($dbhost, $dbuser, $dbpasswd) or die("Couldn't establish connection");
mysql_select_db($dbname);
$query = "SELECT * FROM league_teamdata ORDER BY team_name ASC";
$result = mysql_query($query);
echo "<select name='team_1' size='1'>";
echo "<option></option>";
while($row = mysql_fetch_array($result))
{
echo "<option>$row[team_name]</option>";
}
echo "</select>";
echo "</td>\n";
echo "<td width='85%'><input name='result_1' type='post' value=''</td>\n";
echo "</tr>\n";
//Hold 1 SLUT
12. marts 2010 - 19:14
#6
Der er ingen grund til at lave to mysql forespoergsler. Du vil have alt fra league_teamdata hvor league er den league der har det hoejeste id i league_no_of, ikke sandt?
Det stoerste id finder du ved at spoerge "SELECT MAX(id) FROM league_no_of"
Den league der svarer til det hoejeste id finder du saaledes:
"SELECT league FROM league_no_of WHERE id = (SELECT MAX(id) FROM league_no_of)"
Saa de data i league_teamdata hvor league er den der har det hoejeste id finder du saaledes:
SELECT * FROM league_teamdata WHERE league = (SELECT league FROM league_no_of WHERE id = (SELECT MAX(id) FROM league_no_of));
Hvis du vil have det ordnet og sorteret som du siger overfor bliver det til
$query = "SELECT * FROM league_teamdata WHERE league = (SELECT league FROM league_no_of WHERE id = (SELECT MAX(id) FROM league_no_of)) ORDER BY team_name ASC"
Jeg proevede det af ved at lave en league_teamdata og en league_no_of tabel som foelger og jeg fik dette resultat:
id team_name league matches won lost p_score n_score points
5 team5 league3 5 10 15 20 25 30
6 team6 league3 6 12 18 24 30 36
7 team7 league3 7 14 21 28 35 42
8 team8 league3 8 16 24 32 40 48
Her er mine tabeller:
INSERT INTO league_teamdata(team_name, league, matches, won, lost, p_score, n_score, points) VALUES ('team1', 'league1', 1, 2, 3, 4, 5, 6);
INSERT INTO league_teamdata(team_name, league, matches, won, lost, p_score, n_score, points) VALUES ('team2', 'league1', 2, 4, 6, 8, 10, 12);
INSERT INTO league_teamdata(team_name, league, matches, won, lost, p_score, n_score, points) VALUES ('team3', 'league2', 3, 6, 9, 12, 15, 18);
INSERT INTO league_teamdata(team_name, league, matches, won, lost, p_score, n_score, points) VALUES ('team4', 'league2', 4, 8, 12, 16, 20, 24);
INSERT INTO league_teamdata(team_name, league, matches, won, lost, p_score, n_score, points) VALUES ('team5', 'league3', 5, 10, 15, 20, 25, 30);
INSERT INTO league_teamdata(team_name, league, matches, won, lost, p_score, n_score, points) VALUES ('team6', 'league3', 6, 12, 18, 24, 30, 36);
INSERT INTO league_teamdata(team_name, league, matches, won, lost, p_score, n_score, points) VALUES ('team7', 'league3', 7, 14, 21, 28, 35, 42);
INSERT INTO league_teamdata(team_name, league, matches, won, lost, p_score, n_score, points) VALUES ('team8', 'league3', 8, 16, 24, 32, 40, 48);
CREATE TABLE league_no_of(id INT, league text);
INSERT INTO league_no_of VALUES(1,'league1');
INSERT INTO league_no_of VALUES(2,'league2');
INSERT INTO league_no_of VALUES(3,'league3');