[PHP]Sorteren van optel prijsafspraken maar dan op volgorde

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Graag zou ik de prijsafspraken op volgorde van relatie_id willen. Maar op dit moment krijg ik alles door elkaar, zie onderstaand. Kortom hoe krijg ik voor elkaar dat hij relatie_id wel sorteert nadat hij de prijsafspraken heeft opgeteld.

Dank je.

PHP:
1
2
3
4
5
6
7
8
9
10
11
    db_connect();
    $query = mysql_query("SELECT DISTINCT(relatie_id) FROM prijsafspraken ORDER BY relatie_id ASC");
    $aantal_resultaten = mysql_numrows($query);
    if ($aantal_resultaten == '0') echo "Wij hebben geen resultaten gevonden, probeer opnieuw.";
    elseif ($aantal_resultaten == '1') echo "Wij hebben voor u één resultaat gevonden.";
    else echo "Wij hebben voor u $aantal_resultaten resultaten gevonden.";
    echo "<P>";
    while($result = mysql_fetch_array($query)) {
    $relatie_id = $result['relatie_id'];
    $query_afspraken = mysql_query("SELECT * from prijsafspraken WHERE relatie_id = '$relatie_id'");
    $aantal_afspraken = mysql_numrows($query_afspraken);



OUTPUT =

Bedrijf Aantal Prijsafspraken
Van XXXXXXXXXXX 3
De XXXXXXXXXXXX 122
UniXXXXXXXXXXXX 121

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Waarom doe je niet een COUNT icm Group BY, en order je op deze COUNT? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
    $query = mysql_query("SELECT COUNT(relatie_id) FROM prijsafspraken ORDER BY relatie_id ASC");


Werkt helaas niet krijg ik 0 resultaten.

Acties:
  • 0 Henk 'm!

  • HuMon
  • Registratie: Augustus 2004
  • Laatst online: 20-09 21:16
Moet je bij de tweede query geen ORDER BY doen?

$query_afspraken = mysql_query("SELECT * from prijsafspraken WHERE relatie_id = '$relatie_id ORDER BY relatie_id'");

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Werkt ook niet

Acties:
  • 0 Henk 'm!

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 08-09 21:45

RSpliet

*blink*

PHP:
1
2
$query_afspraken = mysql_query("SELECT * from prijsafspraken WHERE relatie_id = '$relatie_id'"); 
$aantal_afspraken = mysql_numrows($query_afspraken);


Sowieso zal onderstaande sneller werken:
PHP:
1
2
3
$query_afspraken = mysql_query("SELECT count(*) AS count from prijsafspraken WHERE relatie_id = '$relatie_id'"); 
$aantal_afspraken = mysql_fetch_array($query_afspraken,MYSQL_ASSOC);
$aantal_afspraken = $aantal_afspraken['count'];

Waarom? Dan hoeft niet ALLE data tussen de PHP client en de MySQL server worden rondgepompt, in plaats daarvan telt MySQL ze, en geeft 1 klein nummertje terug :).

Nu de query zelf
$query = mysql_query("SELECT DISTINCT(relatie_id) AS relatie_id FROM prijsafspraken ORDER BY relatie_id ASC");
zou kunnen werken, durf ik je niet met zekerheid te zeggen (of te testen :p)

[ Voor 19% gewijzigd door RSpliet op 21-11-2004 19:26 ]

Schaadt het niet, dan baat het niet


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het werkt nu inderdaad sneller, alleen sorteren werkt nog niet. Maar we komen er wel.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is niet de relatie_id welke het script moet sorteren maar bedrijf uit tabel relaties. Alleen onderstaande code geeft een enorme vertraging of loop? Wat doe ik fout?


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
    db_connect();
    $query = mysql_query("SELECT DISTINCT(p.relatie_id) AS relatie_id, r.bedrijf FROM prijsafspraken p, relaties r ORDER BY r.bedrijf DESC");
    $aantal_resultaten = mysql_numrows($query);
    if ($aantal_resultaten == '0') echo "Wij hebben geen resultaten gevonden, probeer opnieuw.";
    elseif ($aantal_resultaten == '1') echo "Wij hebben voor u één resultaat gevonden.";
    else echo "Wij hebben voor u $aantal_resultaten resultaten gevonden.";
    echo "<P>";
    while($result = mysql_fetch_array($query)) {
    $relatie_id = $result['relatie_id'];
    $query_afspraken = mysql_query("SELECT count(*) AS count from prijsafspraken WHERE relatie_id = '$relatie_id' ORDER BY relatie_id ASC");  
    $aantal_afspraken = mysql_fetch_array($query_afspraken,MYSQL_ASSOC); 
    $aantal_afspraken = $aantal_afspraken['count']; 
    ?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Soms is het complexer dan je denkt! Voor de liefhebbers de oplossing:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
    db_connect();
    // Eerst bedrijven op naam sorteren
    $query_relatie = mysql_query("SELECT * FROM relaties ORDER BY bedrijf ASC");
    
    //$query = mysql_query("SELECT DISTINCT(relatie_id) AS relatie_id FROM prijsafspraken ORDER BY relatie_id ASC"); 
    
    while($result_relatie = mysql_fetch_array($query_relatie)) {
    $relatie_id = $result_relatie['id'];
    $bedrijf = $result_relatie['bedrijf'];
    $query_afspraken = mysql_query("SELECT count(*) AS count from prijsafspraken WHERE relatie_id = '$relatie_id'");  
    $aantal_afspraken = mysql_fetch_array($query_afspraken,MYSQL_ASSOC); 
    $aantal_afspraken = $aantal_afspraken['count']; 
    ?>


Allen bedankt voor jullie bijdrage.
Pagina: 1