Logo - MyWebsolution.de
User gesamt  :  2389663
User online  :  3
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
   
   
 
Registrieren Login User F.A.Q Suche Home

eingeloggt bleiben

MyWebsolution.de Foren » PHP und MYSQL » Blätterfunktion SQL-Datenbank

Seite: 1 Posts pro Seite: 5 10 20
Autor Thread
26.05.2011 13:12 Uhr Blätterfunktion SQL-Datenbank
searchsolution
User
 
registriert 26.05.2011
wohnt in
Beiträge 2
Hallo!

ich bin ein Wiedereinsteiger in Sachen PHP! Hab alles zwar in der Schule gelernt, aber ewig nicht mehr angewendet. Nun wurde ich gebeten, die Wartung einer kleinen Vereinshomepage zu übernehmen, da der Ersteller aus diesem ausgetreten ist (und auch nicht mehr erreichbar ist).

nun hat mich schon ewig geärgert, dass die SQL-Gallerie ohne Thumbnails und Blätterfunktion ist/war und wollte das ändern!

Ich habe nun eine Thumbnail-Ansicht geschrieben und kann daraus auch die Bilder mit Klick darauf vergrößern, aber ich schaffe es einfach nicht, die Blätterfunktion so zu schreiben, dass es funktioniert!

Hier der Code für die Thumbnail_Übersicht, über die ich auch die ID für die Show_image.php beziehe.
Code:
<?


$dbname = "db_new";

MYSQL_CONNECT("localhost", "admin_...", "...") OR DIE("Unable to connect to database server");
@mysql_select_db("$dbname") or die("Unable to select database"); 

$id = $_GET["id"];
if(!is_numeric($id))
  die("wrong parameter");

$query = "SELECT ID, DATE_FORMAT(Date, '%d.%m.%Y') as Date, Heading, Folder, is_listed FROM Gallery where ID=$id";
$result = MYSQL_QUERY($query);
$number = MYSQL_NUMROWS($result);
$is_listed = mysql_result($result, $i, "is_listed");

?>

<html>
<head>
    <title>Gallery</title>
    <link rel="stylesheet" type="text/css" href="NewsStyle2.css" />
    <link rel="stylesheet" type="text/css" href="MainStyle2.css" />
</head>
<body>

        <table border="0" cellspacing="0" cellpadding="0" align="center">
          <tr>
            <td>
              <table border="0" align="center">
                <tr> 
                  <td style="height: 240px"> <br>
                    <br>
                  <table width="100%" align="center" border="0" cellspacing="0" cellpadding="0" bgcolor="#555555" height="30">
                    <tr> 
                      <td height="19"> 
                        <div align="center"><font color="#555555"><b><font size="4" color="#FFFFFF" face="Arial,sans-serif"><br>
                          GALLERY</font></b></font></div>
                      </td>
                    </tr>
                    <tr> 
                      <td height="4"></td>
                    </tr>
                  </table>
                    <br>
                    <br>
                      <table width="787" border="0" align="center" cellpadding="4" cellspacing="0">
                      <tr height="1px"> 
                        <td valign="top" width="14%" class="datecell" height="1px">
                            <font class="datefont"><? if($is_listed) echo mysql_result($result, $i, "Date"); else echo "&nbsp;"; ?></font></td>
                        <td valign="top" colspan="2" class="headingcell" style="height: 5px"><font class="headingfont"><? echo mysql_result($result, $i, "Heading"); ?></font></td>
                      </tr>
                      <tr> 
                        <td valign="top" style="height: 132px">
                            &nbsp;</td>
                        <td valign="top" style="height: 132px" align="center">
			<table border="5" style="border-color:#c0c0c0; border-style:solid;" cellspacing="0" cellpadding="0" bordercolor="#c0c0c0">
			<tr>
<?
$folder = mysql_result($result, 0, "Folder");
$relative_folder = "imggal/galleries/$folder";

$dh = opendir($relative_folder);
$i = 0;
while(($file = readdir($dh)) !== false)
{
  if(!is_dir("$relative_folder/$file"))
  {
    if($i > 0 && $i % 3 == 0)
      echo "</tr><tr>"
                    ?>
			<td align="center" style="border-color:#c0c0c0; border-style:solid; border-width:5px;" width="113" height="85" style="border-width:5px;"><a href="show_image.php?id=<? echo $id; ?>&image=<? echo "$relative_folder/$file"; ?>"><img border="0" src="/imggal/thumb.aspx?maxwidth=130&maxheight=85&image=<? echo "$folder/$file"; ?>"></a></td>
<?
    $i++;
  }
}
while($i > 0 && $i % 3 != 0)
{
  echo "<td align=\"center\" width=\"113\" height=\"85\" style=\"border-width:5px; border-color:#c0c0c0; border-style:solid;\">&nbsp;</td>";
  $i++;
}
closedir($dh);

?>
			</tr></table>
			</td>
                        <td align="center" width="25%" valign="middle">&nbsp;
                        </td>
                      </tr>
                      </table>
                  </td>
                </tr>
            </table>
            </td>
            </tr>
            </table>
<center><a href="gallery.php">&lt&lt back</a></center>

</body>
</html>
<?
MYSQL_CLOSE();
?>


und mein jetztiger show_image.php
Code:
<html>
 
<head>
<title>Gallery</title>
    <link rel="stylesheet" type="text/css" href="NewsStyle2.css" />
    <link rel="stylesheet" type="text/css" href="MainStyle2.css" />
</head>
<body>
<center>
<img src="<?echo $_GET["image"]; ?>" border="0"/>
<a href=...><</a>
<a href="show_gallery.php?id=<? echo $_GET["id"]; ?>">&lt&lt back</a>
<a href=...>></a>
</table>
</center>
</body>

</html>


man sieht die eingebauten Links, die aber eben noch ohne Funktion sind! Nun steh ich eben voll auf der Leitung. Ich dachte mir ja schon, die Links mit show_prv_image.php zu belegen und im show_gallery.php die nötige Abfrage zu erstellen, aber das funktioniert so auch nicht wirklich.

Auch habe ich versucht eine SQL-Abfrage mit der Abfrage der vorherigen ID in Show_image.php zu erstellen. Und zwar in dieser Weise:
PHP:

    $sql = "SELECT * FROM table WHERE id < $id ORDER BY id DESC LIMIT 1"; 
$res = mysql_query($sql); 
      $pre_id = $pre_id["id"]; 
      $sql = "SELECT * FROM table WHERE id > $id ORDER BY id LIMIT 1"; 
   $res = mysql_query($sql); 
      $next_id = $next_id["id"];  

und dann eben die Links mit "id" zu belegen, aber das funktioniert eben auch nicht, da ich da anscheinend nen Fehler drin habe.
Ich bin doch schon zu eingerostet!

Vielleicht kann mir ja jemand von euch helfen. Die SQL-DB sollte bestehen bleiben (nicht auf meinen Wunsch hin :angry:)

DAAANKE!!!
Profil ansehen
26.05.2011 17:32 Uhr
splasch
Forenposter
 
registriert 21.04.2008
wohnt in
Beiträge 67
Hier bitte:
PHP:

<?php
/**
* Klasse Seiten ausgabe
* @version 1 
* @author Splasch
* Filename: page.php

**/

class Page
{
  protected 
$menge;       #Maximale Anzahl von Zeilen pro Seite
  
protected $max_page;    #Gesamt Anzahl von Seiten

 /**
 * Klassen aufruf - 
 * @param Int $menge enthält einträge pro Seite
 * @param Int $summe enthält gesamten Zeilenmenge
 */
 
public function __construct($menge=15,$summe)
 {
   
$this->menge=$menge;
   
$ergebnis=ceil($summe/$menge); #Liefert die nächste ganze Zahl, die größer oder gleich ist
 
   
if ($ergebnis 1){$ergebnis=1;}
   
#Prüfen 
   
$this->max_page=$ergebnis;
 }

 
/**
 * start - 
 * Gibt die Start Zeile für Limit zurück
 * @param $page Int Gesuchte Seite
 */
 
public function start($page)
 {
   
$start $page $this->menge$this->menge;
   return 
$start;    
 }
 
 
/**
 * getZeilen - 
 * Gibt die Zeilemenge zurück* 
 */
 
public function getZeilen()
 {
   return 
$this->menge;
 }

 
/**
 * getPage - 
 * Gibt die Zeilemenge zurück* 
 */
 
public function getPage()
 {
   return 
$this->max_page;
 }
 
 
/**
 * getLink - 
 * Gibt die Zeilemenge zurück* 
 */
 
public function getLink($page,$pfad)
 {
   
$link="";
   for(
$i=1$i <= $this->max_page$i++) 
   { 
     if(
$page == $i){$link.="<a >$i</a> ";}  
     else 
      {
$link.="<a href=\"".$pfad."page=$i\">$i</a> ";} 
   }
   return 
$link;
 }

}


PHP:
<?

if (isset($get_post["page"]))$seite $get_post["page"];  //Abfrage auf welcher Seite man ist 
if(!isset($seite)){$seite 1;} //Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1 

$sql="SELECT 
       username, lvl, insgexp,status 
      FROM accounts,game_char 
      WHERE user_id=f_userid"
;

$result mysql_query($sql); 
$menge mysql_num_rows($result);

$page= new Page(18,$menge);

$runde $page->start($seite);
$gilden "";

$abfrage "SELECT  
             username,gild_name,lvl,insgexp,status,rasse
            FROM 
             accounts
             LEFT JOIN gilden_user ON accounts.user_id = gilden_user.f_userid 
             LEFT JOIN gilden ON gilden_user.f_gildenid=gilden.gilden_id,
             game_char
            WHERE
             user_id=game_char.f_userid 
             ORDER BY insgexp DESC LIMIT "
.$page->start($seite).",".$page->getZeilen();
#echo $abfrage;
$ergebnis mysql_query($abfrage);

// unsw.


Dieser Beitrag wurde am 26.05.2011 um 17:37:48 Uhr von splasch zum 2. Mal editiert.
Profil ansehen
31.05.2011 18:33 Uhr
searchsolution
User
 
registriert 26.05.2011
wohnt in
Beiträge 2
irgendwie schaff ich es nicht, das in meine Gallery so einzubauen, dass es funktioniert. Bin anscheinend zu eingerostet und zu blöd! *grr*
Profil ansehen
31.05.2011 19:55 Uhr RE:
splasch
Forenposter
 
registriert 21.04.2008
wohnt in
Beiträge 67
Zitat:
searchsolution
irgendwie schaff ich es nicht, das in meine Gallery so einzubauen, dass es funktioniert. Bin anscheinend zu eingerostet und zu blöd! *grr*


Es ist nix anderes als eine kleine Mathematische Rechnung. Die Anzahl der Datensätze die Pro Seite ausgeben werden sollen. Ergeben die Maximale Seiten Anzahl.

Beispiel 10 Sätze Pro Seiten bei 100 Datenbank einträgen.

Um nun die 5 Seite auszugeben muß man nur noch multiplizieren um zu wissen bei welchen Datensatz die Ausgabe beginnen soll. Also 10*5 = 50 da wir nun aber auch die 10 Seiten ausgeben wollen müssen wird noch davon die 10 Sätze davon abziehen 50-10 = 40
Also beginnt unsere Datensatz ausgabe beim 40 Datensatz für die 5 Seite.
Nun brauchen wir nur noch den Sql befehl an die Datenbank übergeben und mittel Limits das Ergebnis auf 10 Datensätze begrenzen.
Limit Startdatensatz , Anzahl der Datensätze
Daher in unseren fall für die 5 Seite bei 100 Datensätzen limit 40,10

Damit diese Berechnung für jede Seite abgefragt werden kann steht dir die gepostete Klasse zu verfügung.

Sie kann dir auch noch die Link zu allen Seiten ausgeben die Methode dazu lautet: getLink und erwartet 2 Parameter.

Mfg Splasch
Profil ansehen
Seite: 1 no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik