Lijst maken van 3 kolommen
Ik zou mijn god niet weten hoe ik dit moet maken maar heb toch een poging gedaan!
Als aller eerst wat ik graag zou willen: een lijst van 3 kolommen uit 1 database, deze bevat een username, totaal behaalde punten en totaal level.
Dit moet per user allemaal naast elkaar staan en dan het liefst 30 op 1 pagina.
Ook moet dit in de volgorde van beste naar de slechte gebruiker.
Het lijkt allemaal veel maar ik kom er dus NIET uit.. mijn tabel heet hs_users
De volgende code heb ik ergens op internet gevonden en aangepast maar het lukt me maar niet!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
include ('config.php');
$sql = mysql_query("SELECT overall_xp,username FROM hs_users ORDER BY ID DESC LIMIT 10")or die(mysql_error());
WHILE ($rows = mysql_fetch_assoc($sql))
{
echo '
Id: '.$rows['overall_xp'].' <br />
Game: '.$rows['username'].' <br />
Genre: '.$rows['Genre'].' <br />
';
}
?>
include ('config.php');
$sql = mysql_query("SELECT overall_xp,username FROM hs_users ORDER BY ID DESC LIMIT 10")or die(mysql_error());
WHILE ($rows = mysql_fetch_assoc($sql))
{
echo '
Id: '.$rows['overall_xp'].' <br />
Game: '.$rows['username'].' <br />
Genre: '.$rows['Genre'].' <br />
';
}
?>
Hartelijk dank voor diegene die me kan helpen!
Groetjes,
Luuk.
Als je 3 zaken wilt weergeven vanuit de database, moet je deze 3 kolommen dus ook opvragen bij de database.
Dus SELECT overall_xp, username, genre
Daarnaast als je 30 resultaten wil, is het niet slim om te stellen 'LIMIT 10'. 'LIMIT 30' is dan logischer.
Ditzelfde geldt voor je vraag om het te sorteren van beste naar slechte gebruiker. Ik neem aan dat je dat bepaalt dmv overall_xp, dus doe je dan ook:
ORDER BY overall_xp DESC
Bedankt Ramon, maar hoe gaat zon code er dan uit zien?
Code (php)
1
$sql = mysql_query("SELECT overall_xp,username FROM hs_users ORDER BY ID DESC LIMIT 10")or die(mysql_error());
'or die' zou ik eruit halen, in het normale leven verwens je iemand namelijk ook niet gelijk dood als iets niet lukt. Al is het voor het debuggen inderdaad handig, later niet meer.
Je zou dus iets kunnen maken als:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$query = "SELECT overall_xp, username, genre FROM hs_users ORDER BY overall_xp LIMIT 30";
if($sql= mysql_query($query)){
if(mysql_num_rows($sql) > 0){
echo '<table>';
while($result = mysql_fetch_assoc($sql)){
echo '<tr>
<td>'.$result['overall_xp'].'</td>
<td>'.$result['username'].'</td>
<td>'.$result['genre'].'</td>
</tr>';
}
echo '</table>';
}
}
else{
echo mysql_error();
}
?>
$query = "SELECT overall_xp, username, genre FROM hs_users ORDER BY overall_xp LIMIT 30";
if($sql= mysql_query($query)){
if(mysql_num_rows($sql) > 0){
echo '<table>';
while($result = mysql_fetch_assoc($sql)){
echo '<tr>
<td>'.$result['overall_xp'].'</td>
<td>'.$result['username'].'</td>
<td>'.$result['genre'].'</td>
</tr>';
}
echo '</table>';
}
}
else{
echo mysql_error();
}
?>
Gewijzigd op 14/08/2013 17:32:11 door Ramon van Dongen
Ik heb dit al eens meer aan je gevraagd, maar leg nou in het vervolg eens duidelijk uit wat het probleem is. Het lukt niet is GEEN uitleg.
Toevoeging op 14/08/2013 18:19:48:
Hey Ramon,
De code heb ik een klein beetje aangepast en er het volgende van gemaakt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
include ('config.php');
$query = "SELECT overall_xp, username, FROM hs_users ORDER BY overall_xp LIMIT 30";
if($sql= mysql_query($query)){
if(mysql_num_rows($sql) > 0){
echo '<table>';
while($result = mysql_fetch_assoc($sql)){
echo '<tr>
<td>'.$result['overall_xp'].'</td>
<td>'.$result['username'].'</td>
</tr>';
}
echo '</table>';
}
}
else{
echo mysql_error();
}[/code]
Maar nu krijg ik de volgende error:
[code]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM hs_users ORDER BY overall_xp LIMIT 30' at line 1[/code]
include ('config.php');
$query = "SELECT overall_xp, username, FROM hs_users ORDER BY overall_xp LIMIT 30";
if($sql= mysql_query($query)){
if(mysql_num_rows($sql) > 0){
echo '<table>';
while($result = mysql_fetch_assoc($sql)){
echo '<tr>
<td>'.$result['overall_xp'].'</td>
<td>'.$result['username'].'</td>
</tr>';
}
echo '</table>';
}
}
else{
echo mysql_error();
}[/code]
Maar nu krijg ik de volgende error:
[code]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM hs_users ORDER BY overall_xp LIMIT 30' at line 1[/code]
Hier heb je dus in de query een komma achter username staan die daar niet thuis hoort.
Alleen is het nu zo dat hij de mensen met het laagste getal boven aan zet en het hoogste getal onderaan.
En hoe kan ik dit met meerdere paginas maken? Ook zodat als er mee bij komen er meer paginas bij komen.
Even een snel pagination voorbeeldje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$page = (!isset($_GET['page']) || (int) $_GET['page'] == 0) ? 1 :(int) $_GET['page'];
$count_sql = mysqli_query($link, 'SELECT COUNT(*) FROM hs_users');
$row = mysqli_fetch_row($count_sql);
$total_items = (int) $row[0];
$items_per_page = 30;
$query = "SELECT overall_xp, username
FROM hs_users
ORDER BY overall_xp DESC
LIMIT " . ($page - 1) * $items_per_page . "," . $items_per_page;
?>
$page = (!isset($_GET['page']) || (int) $_GET['page'] == 0) ? 1 :(int) $_GET['page'];
$count_sql = mysqli_query($link, 'SELECT COUNT(*) FROM hs_users');
$row = mysqli_fetch_row($count_sql);
$total_items = (int) $row[0];
$items_per_page = 30;
$query = "SELECT overall_xp, username
FROM hs_users
ORDER BY overall_xp DESC
LIMIT " . ($page - 1) * $items_per_page . "," . $items_per_page;
?>
Met het paginatie script krijg ik echter wel een error..
Code (php)
1
Notice: Undefined variable: link in /home/luukwa/domains/freedomx.biz/public_html/high/lijst2.php on line 4 Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/luukwa/domains/freedomx.biz/public_html/high/lijst2.php on line 4 Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, null given in /home/luukwa/domains/freedomx.biz/public_html/high/lijst2.php on line 5
Gewijzigd op 14/08/2013 19:18:28 door Ger van Steenderen
Ah ik ken dat niet echt mysqli ik heb zojuist die 'i' maar verwijdert maar dat verandert niet veel.
Gewijzigd op 14/08/2013 19:26:07 door Ger van Steenderen
Bedoel je $Link op regel 4?
Ik begin te dementeren :-(
Gewijzigd op 14/08/2013 19:32:50 door Ger van Steenderen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
include ('config.php');
$page = (!isset($_GET['page']) || (int) $_GET['page'] == 0) ? 1 :(int) $_GET['page'];
$count_sql = mysql_query('SELECT COUNT(*) FROM hs_users');
$row = mysql_fetch_row($count_sql);
$total_items = (int) $row[0];
$items_per_page = 30;
$query = "SELECT overall_xp, username
FROM hs_users
ORDER BY overall_xp DESC
LIMIT " . ($page - 1) * $items_per_page . "," . $items_per_page;
?>
include ('config.php');
$page = (!isset($_GET['page']) || (int) $_GET['page'] == 0) ? 1 :(int) $_GET['page'];
$count_sql = mysql_query('SELECT COUNT(*) FROM hs_users');
$row = mysql_fetch_row($count_sql);
$total_items = (int) $row[0];
$items_per_page = 30;
$query = "SELECT overall_xp, username
FROM hs_users
ORDER BY overall_xp DESC
LIMIT " . ($page - 1) * $items_per_page . "," . $items_per_page;
?>
Je moet dit wel inbouwen in je eerdere script, nu wordt er verder niets gedaan.
Ik heb werkelijk geen idee waar ik dan zou moeten beginnen, sorry.. :P
Ik kan het je wel voorkauwen, dan gaat het script werken, maar daar kom jij zelf ook niet verder mee.
En ik ga er vanuit dat je uiteindelijk zelfstandig scripts wilt kunnen schrijven.
Toevoeging op 14/08/2013 21:51:47:
Ik heb verschillende dingen geprobeerd en lopen puzzelen, maar ik kom er toch niet uit..
Dit is was ik heb op dit moment:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include ('config.php');
$page = (!isset($_GET['page']) || (int) $_GET['page'] == 0) ? 1 :(int) $_GET['page'];
$count_sql = mysql_query('SELECT COUNT(*) FROM hs_users');
$row = mysql_fetch_row($count_sql);
$total_items = (int) $row[0];
$items_per_page = 30;
$query = "SELECT overall_xp, username
FROM hs_users
ORDER BY overall_xp DESC
LIMIT " . ($page - 1) * $items_per_page . "," . $items_per_page;
echo '<table>';
echo '<tr>
<td>'.$result['overall_xp'].'</td>
</tr>';
echo '</table>';
?>
include ('config.php');
$page = (!isset($_GET['page']) || (int) $_GET['page'] == 0) ? 1 :(int) $_GET['page'];
$count_sql = mysql_query('SELECT COUNT(*) FROM hs_users');
$row = mysql_fetch_row($count_sql);
$total_items = (int) $row[0];
$items_per_page = 30;
$query = "SELECT overall_xp, username
FROM hs_users
ORDER BY overall_xp DESC
LIMIT " . ($page - 1) * $items_per_page . "," . $items_per_page;
echo '<table>';
echo '<tr>
<td>'.$result['overall_xp'].'</td>
</tr>';
echo '</table>';
?>
Toevoeging op 15/08/2013 09:12:58:
Nog een korte vraag, is het ook mogelijk om 2 dingen tegelijk te sorteren, dus de mensen met het hoogste totaal level en de meest punten bovenaan?
Het is mogelijk om op meerdere kolommen te sorteren.
Ik neem aan dat je de handleiding van MySQL al daar op nagezocht hebt? http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html