Lijst maken van 3 kolommen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 volgende »

Luuk Waka

Luuk Waka

14/08/2013 17:14:09
Quote Anchor link
Hallo beste mensen!

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)
PHP script in nieuw venster Selecteer het PHP script
1
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 />
'
;
}

?>


Hartelijk dank voor diegene die me kan helpen!

Groetjes,
Luuk.
 
PHP hulp

PHP hulp

17/11/2024 15:33:43
 
Ramon van Dongen

Ramon van Dongen

14/08/2013 17:24:16
Quote Anchor link
Hallo,

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
 
Luuk Waka

Luuk Waka

14/08/2013 17:25:30
Quote Anchor link
Bedankt Ramon, maar hoe gaat zon code er dan uit zien?
 
Ramon van Dongen

Ramon van Dongen

14/08/2013 17:31:15
Quote Anchor link
Je hebt nu voor het ophalen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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();
}

?>
Gewijzigd op 14/08/2013 17:32:11 door Ramon van Dongen
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 17:41:28
Quote Anchor link
Luuk,

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.
 
Luuk Waka

Luuk Waka

14/08/2013 18:15:46
Quote Anchor link
Wat is er niet duidelijk aan Ger? Ik heb mijn uiterste best gedaan om het te beschrijven..

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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]
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 18:27:14
Quote Anchor link
Kijk dit is nu duidelijk ;-). "Het lukt niet" zegt niet zoveel, wat lukt er niet is veel beter.
Hier heb je dus in de query een komma achter username staan die daar niet thuis hoort.
 
Luuk Waka

Luuk Waka

14/08/2013 18:35:02
Quote Anchor link
Ah bedankt Ger het is me geluk en hij displayed nu een mooie lijst!
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 19:01:33
Quote Anchor link
ORDER BY is in SQL standaars ASC (oplopend) als je niets opgeeft. Dus ORDER BY ... DESC als je het aflopend wilt.
Even een snel pagination voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
?>
 
Luuk Waka

Luuk Waka

14/08/2013 19:08:47
Quote Anchor link
Bedankt Ger, door het toevoegen van DESC is gelukt!
Met het paginatie script krijg ik echter wel een error..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 19:14:12
Quote Anchor link
Ja, ik heb mezelf voor genomen geen mysql_* functies meer te gebruiken in codes die ik hier op het forum plaats, die gaan vervallen, en kan je dus beter bij nieuwe scripts nu al overschakelen naar mysqli en/of PDO.
Gewijzigd op 14/08/2013 19:18:28 door Ger van Steenderen
 
Luuk Waka

Luuk Waka

14/08/2013 19:19:52
Quote Anchor link
Ah ik ken dat niet echt mysqli ik heb zojuist die 'i' maar verwijdert maar dat verandert niet veel.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 19:25:37
Quote Anchor link
Dan moet je ook "$link, " weghalen (op regel 5).
Gewijzigd op 14/08/2013 19:26:07 door Ger van Steenderen
 
Luuk Waka

Luuk Waka

14/08/2013 19:28:38
Quote Anchor link
Bedoel je $Link op regel 4?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 19:32:17
Quote Anchor link
Sorry, ja het dat was regel 4.
Ik begin te dementeren :-(
Gewijzigd op 14/08/2013 19:32:50 door Ger van Steenderen
 
Luuk Waka

Luuk Waka

14/08/2013 20:13:07
Quote Anchor link
Nu is de pagina geheel wit, dit is mijn code op dit moment:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 20:23:11
Quote Anchor link
Je moet dit wel inbouwen in je eerdere script, nu wordt er verder niets gedaan.
 
Luuk Waka

Luuk Waka

14/08/2013 20:29:13
Quote Anchor link
Ik heb werkelijk geen idee waar ik dan zou moeten beginnen, sorry.. :P
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 20:47:55
Quote Anchor link
Geeft niet, maar probeer het zelf eens uit te vinden.
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.
 
Luuk Waka

Luuk Waka

14/08/2013 20:51:59
Quote Anchor link
Ik zal het eens proberen Ger en kijken hoe ver ik kom, mocht ik vast lopen dan plaats ik dat hier.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
?>


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?
 
Ramon van Dongen

Ramon van Dongen

15/08/2013 10:21:37
Quote Anchor link
Je hebt door dat je $query die je op regel 8 aanmaakt nergens uitvoert dmv mysql_query($query); ?

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
 

Pagina: 1 2 3 4 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.