[php] maximum halen uit mysql.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Grablinco
  • Registratie: November 2001
  • Laatst online: 20-08-2023
Ik ben bezig met een forumpje, alleen ik kom niet meer verder met de maximum tijd selecteren.
Om direct te laten zien waar het om gaat:
PHP:
1
echo "hoi";


/edit
-->foutje

Acties:
  • 0 Henk 'm!

  • Skef
  • Registratie: April 2001
  • Laatst online: 17-09 09:49

Skef

Ik scheer.me

Is dit de enige PHP-code welke je tot nu toe hebt? Heb je misschien een database-structuur?

"Computer games don’t affect kids: I mean if Pac-Man affected us as kids, we’d all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28

Bosmonster

*zucht*

echo "hoi"; ?

Wat dacht je van SELECT MAX(timestamp) oid ?

Acties:
  • 0 Henk 'm!

  • joostdiepenmaat
  • Registratie: Maart 2001
  • Laatst online: 05-09-2022
huh? aarde contact: 'waar heb je het over, meer info graag!', over

Acties:
  • 0 Henk 'm!

  • Grablinco
  • Registratie: November 2001
  • Laatst online: 20-08-2023
sorry, er ging iets fout: (wilde eerst even "[ php ]" testen)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$query6 = "SELECT topic_id FROM topics WHERE forum_id = $f[0]";
$result6 = mysql_query($query6)
  or die(mysql_error());

while($t_id = mysql_fetch_row($result6)) { 
    $t_id0 = $t_id[0]; 

  $time0 = "";
  $query7 = "SELECT MAX(time) FROM posts WHERE topic_id = $t_id0";
  $result7 = mysql_query($query7)
    or die(mysql_error());

while($time = mysql_fetch_row($result7)) { 
  $time_topic = $time[0]; 
  }
  $time_highest = max($time_topic);
  }


ik wil dus het maximum weten van de tijd (unixtime) van het maximum uit alle topics...

uit MySQL haal ik nu dus de maximum uit alle topics die er worden aangesproken, maar nu wil ik dus ook de hoogste uit die er net zijn uitgehaald.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

[nohtml]
Grablinco schreef op 19 november 2002 @ 18:22:
ik wil dus het maximum weten van de tijd (unixtime) van het maximum uit alle topics...
Je hebt een query die net zo iets doet... En dan kan je dit niet bedenken?
select max(time) from topics;

Acties:
  • 0 Henk 'm!

Verwijderd

Dat als je de tijd v/d topics wilt hebben... Wil je de hoogste tijd uit alle post voor alle topics wordt het zo iets:

code:
1
SELECT MAX(time) FROM topics

Acties:
  • 0 Henk 'm!

  • Grablinco
  • Registratie: November 2001
  • Laatst online: 20-08-2023
Ik krijg dus ook de (maximum)tijden van uit de db, dat betekend dus dat ik de maximum van de topics al krijg, alleen ik wil daaruit weer het maximum hebben tussen alle (maximum) tijden die ik kreeg uit de topics.
(ik heb het vermoeden dat ik onduidelijk ben)

Dus eigenlijk ligt mijn probleem niet bij mysql, maar bij php, want ik wil het maximum halen uit de maximum tijd (bij topics).

Acties:
  • 0 Henk 'm!

  • Grablinco
  • Registratie: November 2001
  • Laatst online: 20-08-2023
voor de verandering een duidelijke beschrijving:

Ik wil de post met het hoogste getal(time) uit de database halen, daarmee krijg ik namelijk de laatste post die is geweest, daarvoor deze code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    $query6 = "SELECT topic_id FROM topics WHERE forum_id = $f[0]";
    $result6 = mysql_query($query6)
        or die(mysql_error());
    while($t_id = mysql_fetch_row($result6)) { 
        $t_id0 = $t_id[0]; 

        $query7 = "SELECT MAX(time) FROM posts WHERE topic_id = $t_id0";
        $result7 = mysql_query($query7)
            or die(mysql_error());
        while($time = mysql_fetch_row($result7)) { 
            $time_high = $time[0];
            }
        $time_highest = max($time_high);
        echo $time_highest;

        }


Als ik meerdere topics in een forum heb, krijg ik meer tijden (op dit moment 3).

Wat ik nu dus wil doen is het hoogste getal kiezen uit die drie, maar als ik:
PHP:
1
2
$time_highest = max($time_high);
echo $time_highest;

doe, krijg ik een error:
code:
1
Warning: Wrong parameter count for max()


Ik heb dus een sterk vermoeden dat ik max() verkeerd toepas, alleen hoe het dan goed moet weet ik niet.

Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 16:24

mulder

ik spuug op het trottoir

nu zegt dat commando mij niks, maar parameter count en een php manual gebruiken wel. effe moeite doen dus.

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

Verwijderd

Je wilt dus de allerlaatste post uit je database hebben, met de daarbijbehorende topic? Dat zou moeten kunnen met 1 MySQL query:

code:
1
2
3
4
5
6
7
8
9
10
11
SELECT
    topics.topic_id,
    MAX(time.posts) AS max_time
FROM
    topics, posts
WHERE
    forum_id = $f[0]
GROUP BY
    topics.topic_id
ORDER BY
    max_time


Zo iets iig, je kan gewoon velden toevoegen die je er ook bij wilt hebben ;)

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

code:
1
select id from topics order by time desc limit 1


Lijkt me vrij simpel :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

Verwijderd

DUH 8)7

Acties:
  • 0 Henk 'm!

  • Grablinco
  • Registratie: November 2001
  • Laatst online: 20-08-2023
Verwijderd schreef op 19 november 2002 @ 20:02:
code:
1
2
3
4
5
6
7
8
9
10
11
SELECT
    topics.topic_id,
    MAX(posts.time) AS max_time
FROM
    topics, posts
WHERE
    forum_id = $f[0]
GROUP BY
    topics.topic_id
ORDER BY
    max_time
Dit ligt volgens mij wil in de richting, maar eigenlijk wil ik dat hier ook de topic_id word ingevult, die dus is opgehaalt uit de topics met het forum_id. Er moeten namelijk meerdere tijden worden opgehaald uit verschillende topics waarin alle posts zich bevinden

Acties:
  • 0 Henk 'm!

Verwijderd

Sorry, maar daar begrijp ik geen snars van :?

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
Grablinco schreef op 19 November 2002 @ 19:18:
...
Als ik meerdere topics in een forum heb, krijg ik meer tijden (op dit moment 3).

Wat ik nu dus wil doen is het hoogste getal kiezen uit die drie, maar als ik:
PHP:
1
2
$time_highest = max($time_high);
echo $time_highest;

doe, krijg ik een error:
code:
1
Warning: Wrong parameter count for max()


Ik heb dus een sterk vermoeden dat ik max() verkeerd toepas, alleen hoe het dan goed moet weet ik niet.
Je zal moeten zorgen dat $time_high meer dan een waarde bevat zorg dus dat het een array is.
http://www.php.net/manual/en/function.max.php

je kan ook eens print_r($var) gebruiken om te kijken welke waarde een bepaalde variabele (in dit geval $var) bevat.

Acties:
  • 0 Henk 'm!

  • Grablinco
  • Registratie: November 2001
  • Laatst online: 20-08-2023
bedankt voor jullie hulp!
het werkt, ik heb wel een andere manier gebruikt die veel groter (en onlogischer) is, die werkt.

Dus om te laten zien wat ik heb gedaan is hier het script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    $old_time = "";

    $query6 = "SELECT topic_id FROM topics WHERE forum_id = $f[0]";
    $result6 = mysql_query($query6)
        or die(mysql_error());
    while($t_id = mysql_fetch_row($result6)) { 
        $t_id0 = $t_id[0]; 

    $query7 = "SELECT MAX(time) FROM posts WHERE topic_id = $t_id0";
    $result7 = mysql_query($query7)
        or die(mysql_error());
    while($time = mysql_fetch_row($result7)) { 
        $new_time = $time[0]; }

        if($new_time > $old_time) {
            $old_time = $new_time;
            $time_highest = $new_time;
            } else {
                $time_highest = $old_time;
                }
    }
    echo $time_highest,"<br>";
    $time_highest = "";


Zoals je ziet is het een appart bouwsel geworden, maar het werkt!

Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 16:24

mulder

ik spuug op het trottoir

Afgezien dat dit een beste puinhoop is, en een wondertje dat het werkt, een paar puntjes:
wat doet bv die 2e while?
Kijk ook eens naar hoe je variabelen noemt, bv qryTopics of topicQuery.
Is deze code zo uitgelijnd door de copy & paste?

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • Grablinco
  • Registratie: November 2001
  • Laatst online: 20-08-2023
die 2e while moet ik nog weghalen en dat uitlijnen, ik weet niet precies hoe het hoort, maar dat zal ik nog wel een netter proberen te maken.
Pagina: 1