Seite 1 von 2

höchsten Wert ermitteln

Verfasst: 08.08.2005 14:10
von Martin Truckenbrodt
Hallo,
ich habe eine Tabelle mit einigen Datensätzen mit zugehöriger id.
Ich möchte den Wert der höchste ID ermitteln:

Code: Alles auswählen

$sql = "SELECT pic_id FROM $album_table WHERE 1 ORDER BY pic_id DESC LIMIT 0,1";

$result = mysql_query($sql) or die; 
$maxpic_id = mysql_fetch_array($result);
Funzt leider nicht. Wo liegt das Problem?

Danke und Gruß Martin

Verfasst: 08.08.2005 14:16
von SD582
Hi

Ist pic_id ein Textfeld?
Wenn ja, dann wird Textuell sortiert, das heißt, daß 20 vor 3 kommt und 30 vor 4 und 354675865 auch vor 4

Wahrscheinlich bleibt dann nur, das Zeugs in ein Array auszulesen und dabei auf nummerisch umzuwandeln. Dann das array mit geeignetem Algorhytmus nach dem höchsten Wert durchsuchen.

Gruß
Franz

Verfasst: 08.08.2005 14:23
von Martin Truckenbrodt
Hallo,
hier die Details zur pic_id:
pic_id int(11) UNSIGNED Nein auto_increment

Ist also eine Zahl(,oder?).

Gruß Martin

Verfasst: 08.08.2005 14:40
von kellanved
Was spricht gegen

Code: Alles auswählen

"SELECT MAX(pic_id) AS max FROM $album_table" 
?

Verfasst: 08.08.2005 14:54
von Martin Truckenbrodt
Hallo,
habe jetzt folgendes drinnen:

Code: Alles auswählen

$sql = "SELECT MAX(pic_id) AS max FROM $album_table";

$result = mysql_query($sql) or die; 

echo $result;

$maxpic_id = mysql_fetch_array($result);
//$num_rows = $result[1]; 


$rgpic_id=mt_rand ( 1 , $maxpic_id );

echo $rgpid_id;
Funzt leider nicht. Die Echos sind zu Testzwecken drinnen.

Ergebnis zu sehen unter http://www.killi.org/index2.php
Es sollten eigentlich vier Bilder angezeigt werden.

Ich hier als PHP Programmier Newbie wohl noch ein allgemeines Verständnisproblem.

Gruß Martin

Verfasst: 08.08.2005 15:07
von kellanved
Ok.

Erstens fängt das Zählen des Arrays bei null an. Oder, da schöner zu lesen, "$result['max']".

Zweitens würde ich für den Zweck MySQL die Arbeit machen lassen:

Code: Alles auswählen

$sql = "SELECT * FROM $album_table
          ORDER BY RAND() LIMIT 4";

Verfasst: 08.08.2005 16:20
von Martin Truckenbrodt
Hallo,
ich lasse mal Deinen Alternativvorschlag aussen vor, weil ich jetzt wissen will wo es hakt. Ich will ja auch was lernen. :D
Ich habe jetzt:

Code: Alles auswählen

$sql = "SELECT MAX(pic_id) AS max FROM $album_table";

$result = mysql_query($sql) or die; 

echo $result['max'];
Müßte das echo jetzt was anzeigen oder fehlt noch was?

Was dabei rauskommen soll: http://smartor.is-root.com/viewtopic.php?t=14939

Gruß Martin

Verfasst: 08.08.2005 16:32
von kellanved
nein; result ist nur eine Ressource. Da musst Du erst das Ergebnis mittels "mysql_fetch_array($result);" auslesen.

Verfasst: 08.08.2005 16:43
von Martin Truckenbrodt
Hallo,
hilft mir schon weiter.
Jetzt habe ich folgendes:

Code: Alles auswählen

$sql = "SELECT MAX(pic_id) AS max FROM $album_table";
$result = mysql_query($sql) or die; 
$maxpic_id = mysql_fetch_array($result['max']);
echo $maxpic_id;
$rgpic_id=mt_rand ( 1 , $maxpic_id );
//select and print
$sql="SELECT pic_id, pic_title, pic_desc FROM $album_table WHERE pic_id = $rgpic_id"; 
$result = mysql_query($sql) or die;
  while ($row = mysql_fetch_array($result)) 
    print "<TR><TD align='center'>" . $row['pic_title'] . "<BR></TD></TR><TR><TD align='center'><a href='". $phpbb_root_path ."album_page.php?pic_id=" . $row['pic_id'] . "'><img alt='" . $row['pic_desc'] . "' src='". $phpbb_root_path ."album_thumbnail.php?pic_id=" . $row['pic_id'] . "'></a></TD></TR>";


Das echo spuckt immer noch nix aus: http://www.killi.org/index2.php

Ich hoffe, dass ich nicht zu sehr nerve!

Gruß Martin

Verfasst: 08.08.2005 17:20
von Martin Truckenbrodt
Hallo,
jetzt flutscht es:

Code: Alles auswählen

<table>
<?php 
//create the random

$sql = "SELECT MAX(pic_id) AS max FROM $album_table";

$result = mysql_query($sql) or die; 

$row = mysql_fetch_array($result);

$rgpic_id=mt_rand ( 1 , $row['max'] );

//select and print

$sql="SELECT pic_id, pic_title, pic_desc 
    FROM $album_table 
    WHERE pic_id = $rgpic_id"; 
  $result = mysql_query($sql) or die; 
  while ($row = mysql_fetch_array($result)) 
  
  
    print "<TR><TD align='center'>" . $row['pic_title'] . "<BR></TD></TR><TR><TD align='center'><a href='". $phpbb_root_path ."album_page.php?pic_id=" . $row['pic_id'] . "'><img alt='" . $row['pic_desc'] . "' src='". $phpbb_root_path ."album_thumbnail.php?pic_id=" . $row['pic_id'] . "'></a></TD></TR>"; 


?> 
</table>
Ich weiß nur leider imme rnoch nicht, was die einzeln Zeilen machen bzw. bewirken.

Gruß Martin