[PHP] max() error: Wrong parameter count for max() *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een query gemaakt om wat statistieken te maken alles werkt alleen het max aantal krijg ik niet uit mijn array.

hier mijn code waar ik het mee geprobeerd heb.

PHP:
1
2
3
$counter_orders = mysql_query("SELECT COUNT(*) AS aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time FROM orders GROUP BY time ORDER BY timestamp desc limit 30");
$max = max($counter_orders["aantal"]);
echo "max aantal:" . $max;


Warning: Wrong parameter count for max()

Wat doe ik fout, of hoe doe ik het goed :)

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Probeer eens te kijken naar mysql_result()

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
$counter_orders = mysql_query("SELECT COUNT(*) AS aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time FROM bestelling_factuuradres GROUP BY time ORDER BY timestamp desc limit 30");
$var = mysql_result($counter_orders);
$max = max($var["aantal"]);


bedoel je dit, want dit doet ook niets.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Kijk eens naar de handleiding:
http://nl.php.net/function.mysql_result :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je moet een array of meerdere waardes meegeven. Aangezien jij geen array meegeeft, maar een gewone integer, verwacht PHP meerdere parameters. Ik snap ook niet wat je wil doen, aangezien die COUNT in je query maar één waarde terug kan geven, en deze dus ook maar één max heeft.... Sorry, over GROUP BY heen gelezen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
$counter_orders = mysql_query("
    SELECT COUNT(*) AS aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time
    FROM bestelling_factuuradres
    GROUP BY time
    ORDER BY timestamp DESC
    LIMIT 30
");
$arr = array();
while ($var = mysql_fetch_object($counter_orders))
  $arr[] = $var->aantal;
$max = max($arr);

[ Voor 49% gewijzigd door NMe op 31-10-2004 13:03 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
volgens mij is het wel een array, aangezien ik wel gewoon een grafiek krijg:

PHP:
1
2
3
4
5
    while($var = mysql_fetch_array($counter_orders)) {

        $grafiek = 5 * $var["aantal"];
        echo "[img]../images/grafiek.gif[/img]";
    }


die werkt gewoon.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 31 oktober 2004 @ 13:01:
volgens mij is het wel een array, aangezien ik wel gewoon een grafiek krijg:

PHP:
1
2
3
4
5
    while($var = mysql_fetch_array($counter_orders)) {

        $grafiek = 5 * $var["aantal"];
        echo "[img]../images/grafiek.gif[/img]";
    }


die werkt gewoon.
Misschien omdat je daar mysql_fetch_array gebruikt en niet mysql_result... :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 31 oktober 2004 @ 13:01:
volgens mij is het wel een array, aangezien ik wel gewoon een grafiek krijg:
Volgens de handleiding niet.
mixed mysql_result ( resource result, int row [, mixed field])

[ Voor 11% gewijzigd door gorgi_19 op 31-10-2004 13:05 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
max() voer je uit op een array, niet op een resource. Je zult het resultaat van mysql_query() eerst om moeten zetten in een array. Dat kan met mysql_result, dat kan met mysql_fetch_array, en dat kan op nog tig andere manieren.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
okee,

dat het ik dus geprobeerd (als ik het zo goed doe).

PHP:
1
2
3
$counter_orders = mysql_query("SELECT COUNT(*) AS aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time FROM bestelling_factuuradres GROUP BY time ORDER BY timestamp desc limit 30");
$var = mysql_fetch_array($counter_orders);
$max = max($var["aantal"])


maar dit geeft dus een fout melding:
Warning: Wrong parameter count for max()

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
De handleiding:
mysql_fetch_array -- Fetch a result row as an associative array, a numeric array, or both
Het is dus een array per rij. Deze moet je eerst nog omzetten naar het soort array dat jij nodig hebt.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik heb de werkende oplossing allang gegeven in mijn eerste post in dit topic. :X

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
okee, maar via "mysql_fetch_array" heb ik hem toch omgezet naar een array?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
klopt NMe84,

maar ik wil graag ook weten waarom het niet wil lukken met max()
en wat ik nou fout doe.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Ok wat vind je hiervan?
PHP:
1
2
3
$counter_orders = mysql_query("SELECT COUNT(*) AS aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time FROM orders GROUP BY time ORDER BY timestamp desc limit 30"); 
while($array[] = list(mysql_fetch_assoc($counter_orders)));
$max = max($array);

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
okee, maar via "mysql_fetch_array" heb ik hem toch omgezet naar een array?
We nemen een willekeurige rij uit het resultaat van je query: een aantal en een tijd.
$var = mysql_fetch_array($counter_orders);
$max = max($var["aantal"])
voorbeeld:
$var[0]=12;
$var[1]=1099226633;

$var["aantal"] bestaat dus niet eens.

Wat je doet is je plaatst $var[0] in een nieuwe array, en hiervan ga je het maximum bepalen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 31 oktober 2004 @ 13:40:
klopt NMe84,

maar ik wil graag ook weten waarom het niet wil lukken met max()
en wat ik nou fout doe.
Ook dat is al gezegd. De functie max() wil meerdere waarden krijgen, die je expliciet geeft (door middel van meerdere parameters), of impliciet (door een array door te geven). Jij gaf maar één variabele door, en dat pikt PHP niet. Wil je er meerdere doorgeven als een array, dan zul je eerst zelf dat array moeten opbouwen, zoals ik in mijn codevoorbeeld ook voordeed.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Okee thanks voor de uitleg, maar nu het volgende:

PHP:
1
2
3
4
5
6
$counter_orders = mysql_query("SELECT COUNT(*) AS aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time FROM bestelling_factuuradres GROUP BY time ORDER BY timestamp desc limit 30");

$arr = array();
while ($var = mysql_fetch_object($counter_orders))
  $arr[] = $var->aantal;
$max = max($arr);

dit werkt alleen mijn grafiek werkt nu niet meer :?

PHP:
1
2
3
4
5
    while($var = mysql_fetch_array($counter_orders)) {

        $grafiek = 5 * $var["aantal"];
        echo "[img]../images/grafiek.gif[/img]";
    }

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
reset($counter_orders);

Zet dat er eens tussen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom de phpfunctie max? Je kunt toch ook gewoon de mysql-max gebruiken, lijkt me handiger.. http://dev.mysql.com/doc/mysql/en/GROUP-BY-Functions.html

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Geen verschil.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$counter_orders = mysql_query("SELECT COUNT(*) AS aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time FROM bestelling_factuuradres GROUP BY time ORDER BY timestamp desc limit 30");

$arr = array();

while ($var_max = mysql_fetch_object($counter_orders))
  $arr[] = $var_max->aantal;

$max = max($arr);
echo "max: " . $max;

reset($counter_orders);

    while($var = mysql_fetch_array($counter_orders)) {

        $grafiek = 5 * $var["aantal"];
        echo "[img]../images/grafiek.gif[/img]";
    }

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 31 oktober 2004 @ 14:22:
Waarom de phpfunctie max? Je kunt toch ook gewoon de mysql-max gebruiken, lijkt me handiger.. http://dev.mysql.com/doc/mysql/en/GROUP-BY-Functions.html
Hij wil de max van alle counts hebben, dus dat zou in MySQL een tweede query vereisen, en dus is het niet handig. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
eej Sidney,

Zoiets heb ik al geprobeerd maar dat wou niet echt werken:

PHP:
1
SELECT COUNT(*) AS aantal MAX(aantal) as max_aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time FROM bestelling_factuuradres GROUP BY time ORDER BY timestamp desc limit 30


maar dat wou niet erg....

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 31 oktober 2004 @ 14:29:
eej Sidney,

Zoiets heb ik al geprobeerd maar dat wou niet echt werken:

[...]

maar dat wou niet erg....
je bent iig een kommaatje vergeten aan t begin..
code:
1
... as ... , ... as ... , ... as ...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
klopt ;)

maar ook dan werkt hij niet ;(

Acties:
  • 0 Henk 'm!

Verwijderd

Vreemd, maar krijg je een foutmelding of krijg je gewoon geen kolom, wat krijg je :P

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 31 oktober 2004 @ 14:47:
Vreemd, maar krijg je een foutmelding of krijg je gewoon geen kolom, wat krijg je :P
Een foute waarde.... Hij wil de max van alle counts, en dus niet per group.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

NMe84 schreef op 31 oktober 2004 @ 14:53:
[...]

Een foute waarde.... Hij wil de max van alle counts, en dus niet per group.
Hij = JorJor ?

Dan doe je gewoon MAX(*) ?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 31 oktober 2004 @ 14:56:
[...]


Hij = JorJor ?

Dan doe je gewoon MAX(*) ?
Dat werkt ook niet, want TS wil niet de maximale waarde van alle velden, maar de maximale waarde van alle counts, en die krijg je zo niet..

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

NMe84 schreef op 31 oktober 2004 @ 15:03:
[...]

Dat werkt ook niet, want TS wil niet de maximale waarde van alle velden, maar de maximale waarde van alle counts, en die krijg je zo niet..
hmm, ja klopt natuurlijk.. Dan toch maar op de php-manier 8)7

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
goed, het werkt nu alleen nu dus nog steeds het volgende probleem waar ik ff niet uit kom:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$counter_orders = mysql_query("SELECT COUNT(*) AS aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time FROM bestelling_factuuradres GROUP BY time ORDER BY timestamp desc limit 30"); 

$arr = array(); 

while ($var_max = mysql_fetch_object($counter_orders)) 
  $arr[] = $var_max->aantal; 

$max = max($arr); 

    while($var = mysql_fetch_array($counter_orders)) { 

        $grafiek = 5 * $var["aantal"]; 
        echo "[img]../images/grafiek.gif[/img]"; 
    }

Okee, $max werkt nu alleen nu werkt mijn grafiek niet.

Als ik:
PHP:
1
2
3
4
5
6
$arr = array(); 

while ($var_max = mysql_fetch_object($counter_orders)) 
  $arr[] = $var_max->aantal; 

$max = max($arr);


weg haal, dan werkt mijn grafiek wel, alleen dan heb ik dus geen $max meer.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Aantallen zitten ook in $arr, dus het kan ook zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$counter_orders = mysql_query("
    SELECT COUNT(*) AS aantal, FROM_UNIXTIME( timestamp, '%d%m%y') AS time
    FROM bestelling_factuuradres
    GROUP BY time
    ORDER BY timestamp DESC
    LIMIT 30
");

$arr = array();

while ($var_max = mysql_fetch_object($counter_orders))
  $arr[] = $var_max->aantal;

$max = max($arr);

    for ($i = 0; $i < count($arr); $i++) {

        $grafiek = 5 * $arr[$i];
        echo "[img]../images/grafiek.gif[/img]";
    }

[ Voor 11% gewijzigd door NMe op 31-10-2004 15:27 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1