Blätterfunktion

master1971

Mitglied
Hallo Habe eine Suchfeld Formular mit Blätterfunktion.

Also ich kann über das Suchfeld die DB Daten aufrufen und mir die Ergebnisse anzeigen lassen.

Meine Blätterfunktion ist so eingestellt, dass 3 links z.?B. (1 2 3 ) angezeigt werden und 10 Text Inhalte.

In meiner DB sind aber z.B. 26 Texte gespeichert somit werden diese dann auf die Drei links verteilt.

Wenn ich nun im Suchfeld einen Wort eingebe und sind davon mehrere Wörter in der DB vorhanden, werde diese verteilt über die jeweiligen drei links angezeigt.

Mein Problem ist, wenn ich z.B. den 2 link anklicke, blätter diese nicht bzw. man kann schon blätter, aber die Daten werden nicht angezeigt.

Man kann nur die erste Seite mit den Daten aufrufen, klickt man z.?B. Seite 2 werden keine Daten angezeigt.

Ich weis das Es mit dem Suchformular zu tun hat, weil die Links nicht funktionieren, denn wenn ich z.B. de 2 links anklicke, verschwindet auch der Text im Formularfeld.

Wenn ich z.B. auf Seite 2 bin und das Wort wieder im Suchformular eingebe, werden mir die Ergebnisse von der 2 Hälfte der Daten angezeigt.

Sprich, wenn ich auf den jeweiligen Blätterfunktion Seite bin und im Formular ein Wort eingebe und diese sind in der DB vorhanden, werden mir der Teil angezeigt, der diese
beinhaltet.

Ich will aber das es so funktioniert, dass ich das Wort im Suchfeld eingebe und über die Blätterfunktion ( die Links) die Daten angezeigt bekomme.

Ich weis bloß nicht wie ich das mit dem Suchformular und Blätterfunktion verbinden soll, suche schon seit Wochen im Internet nach einer Lösung.

Hoffentlich kann mir jemand hier helfen.

Hier mein Script:
PHP:
<body>
<? 
$test1 = trim($_POST["test1"]);
$keyprf = $_POST["keyprf"];


$ueberpruefunge = $_POST['ueberpruefunge'];



if(isset($_POST['ueberpruefunge'])) {
    $allesok = 1; 
 
  if(empty($_POST['test1'])){ 
  $allesok = 0;  
  $error[prf] = "<br />Geben Sie ein Keyword ein!<br />";
  echo "<font color=\"#EA260B\">".$error[prf]."</font>";
  }

}

?>

<form name="prfkey" method="post" action="********.php">
  <input class="suchfeld" type="text" name="test1" maxlength="100" value="<? echo htmlspecialchars ($test1); ?>">
  <input name="keyprf" type="submit" value="Pr&uuml;fen">
      <input name="ueberpruefunge" type="hidden" value="1">
</form>

<?

function blaetterfunktion($seite,$maxseite,$url="",$anzahl=4,$get_name="seite") 
   { 
   if(ereg("\?",$url)) $anhang = "&"; 
   else $anhang = "?"; 

   if(substr($url,-1,1) == "&") { 
      $url = substr_replace($url,"",-1,1); 
      } 
   else if(substr($url,-1,1) == "?") { 
      $anhang = "?"; 
      $url = substr_replace($url,"",-1,1); 
      } 

   if($anzahl%2 != 0) $anzahl++; //Wenn $anzahl ungeraden, dann $anzahl++ 

   $a = $seite-($anzahl/2); 
   $b = 0; 
   $blaetter = array(); 
   while($b <= $anzahl) 
      { 
      if($a > 0 AND $a <= $maxseite) 
         { 
         $blaetter[] = $a; 
         $b++; 
         } 
      else if($a > $maxseite AND ($a-$anzahl-2)>=0) 
         { 
         $blaetter = array(); 
         $a -= ($anzahl+2); 
         $b = 0; 
         } 
      else if($a > $maxseite AND ($a-$anzahl-2)<0) 
         { 
         break; 
         } 

      $a++; 
      } 
   $return = ""; 
   if(!in_array(1,$blaetter) AND count($blaetter) > 1) 
      { 
      if(!in_array(2,$blaetter)) $return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=1\">1</a>&nbsp;..."; 
      else $return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=1\">1</a>&nbsp;"; 
      } 

   foreach($blaetter AS $blatt) 
      { 
      if($blatt == $seite) $return .= "&nbsp;<b>$blatt</b>&nbsp;"; 
      else $return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=$blatt\">$blatt</a>&nbsp;"; 
      } 

   if(!in_array($maxseite,$blaetter) AND count($blaetter) > 1) 
      { 
      if(!in_array(($maxseite-1),$blaetter)) $return .= "...&nbsp;<a href=\"{$url}{$anhang}{$get_name}=$maxseite\">letzte</a>&nbsp;"; 
      else $return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=$maxseite\">$maxseite</a>&nbsp;"; 
      } 

   if(empty($return)) 
      return  "&nbsp;<b>1</b>&nbsp;"; 
   else 
      return $return; 
   }    
//Hier muss die Funktion 'blaetterfunktion' stehen 
//Entweder per include laden, oder 
//direkt einbinden, also 
//function blaetterfunktion($seite,$maxseite,$url="",$anzahl=4,$get_name="seite") //{ 
//... 
//} 

// Alter Code wie gewohnt 

$seite = $_GET["seite"];  //Abfrage auf welcher Seite man ist 

//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1 
if(!isset($seite)) 
   $seite = 1; 


//Verbindung zu Datenbank aufbauen 

$link = mysql_connect("localhost","****************?","****************?") or die ("Keine Verbindung moeglich"); 
mysql_select_db("********************") or die ("Die Datenbank existiert nicht"); 


//Einträge pro Seite: Hier 10 pro Seite 
$eintraege_pro_seite = 10; 

//Ausrechen welche Spalte man zuerst ausgeben muss: 

$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite; 


//Tabelle Abfragen 
//Tabelle hei&szlig;t hier einfach: Tabelle 
$abfrage = "SELECT * FROM ************? WHERE ******************** = '".$_POST['test1']."' ORDER BY ******************** DESC LIMIT $start, $eintraege_pro_seite"; 
$ergebnis = mysql_query($abfrage); 
while($row = mysql_fetch_object($ergebnis)) 
    { 
   echo $row->qr_zahlung."<br>"; // Hier die Ausgabe der Einträge 
   } 


//Jetzt kommt das "Inhaltsverzeichnis", 
//sprich dort steht jetzt: Seite: 1 2 3 4 5 


//Wie viele Einträge gibt es überhaupt 

//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten 
//also der gleiche Text wie in der Variable $abfrage, blo&szlig; das hier das LIMIT fehlt 
//Sonst funktioniert die Blätterfunktion nicht richtig, 
//und hier kann nur 1 Feld abgefragt werden, also id 

$result = mysql_query("SELECT COUNT(*) FROM ********************************?"); 
$menge = mysql_fetch_row($result); 
$menge = $menge[0]; 

//Errechnen wie viele Seiten es geben wird 
$wieviele_seiten = ceil($menge / $eintraege_pro_seite); 


//Ausgabe der Seitenlinks: 
echo "<div align=\"center\">"; 
echo "<b>Seite:</b> "; 


//***************************************** 
//* Dieser Abschnitt ist neu 
//***************************************** 
//Aufruf unserer Funktion 
echo blaetterfunktion($seite,  $wieviele_seiten); 


echo "</div>"; 

?>
</body>
 
Zuletzt bearbeitet von einem Moderator:
AW:Gelöst zum teil die Such Blätterfunktion!

Hallo,:)

ich habe eine Such Blätterfunktion gefunden, die wenn man ein Suchbegriff im Formular eingibt und dieser z.B. 30 mal in der DB vorhanden ist, 10 Texte auf z.B. 5 Links verteilt und so angezeigt werden.

Das Problem: Die Links zum Blättern haben kein Limit, sprich es geht immer so weiter z.B. (1.2.3.4.5.6.7.8.9.10.11. usw.).

Was also noch an dieser Blätterfunktion fehlt, ist das man z.B. 10 Datensätze mit max. 5 Seiten angezeigt werden sollten und alles was mehr ist, mit z.B. den Pfeilen, sowohl rechts wie links weiter geblättert werden soll z.B. ( < << 1. 2. 3. 4. 5. ... >> > ).

Wenn einer dafür eine Lösung hätte, währe diese Script perfekt als Blätter Suchfunktion.:(

HTML:
<form name="********" method="get" action="********.php">
 <input class="suchfeld" type="text" name="suchanfrage" maxlength="100">
  <input class="************" name="************?" type="submit" value="Pr&uuml;fen">
</form>

PHP:
<?php 
$suchanfrage = $_GET["suchanfrage"]; 

$weitersuchen = $suchanfrage; 
?> 

<?php 
$seite = $_GET["seite"]; 

if(!isset($seite)) 
   { 
   $seite = 1; 
   } 


$link = mysql_connect("localhost","****************?","********************") or die ("Keine Verbindung moeglich"); 
mysql_select_db("************************?") or die ("Die Datenbank existiert nicht"); 


$eintraege_pro_seite = 10; 



$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite; 

$suchanfrage = explode(' ', $suchanfrage);  
$anzahl = count($suchanfrage);  
$wheres = ""; 
for($a = 0; $a < $anzahl; $a++){ 
  if (strlen(trim($suchanfrage[$a])) != 0){ 
    $wheres .= "`********************` LIKE '%".$suchanfrage[$a]."%' OR "; 
  } 
} 
$wheres = substr($wheres, 0 ,-3); 

$abfrage = mysql_query("SELECT * FROM ******************** WHERE ".$wheres." ORDER BY ********************? DESC LIMIT $start, $eintraege_pro_seite"); 
while($daten = mysql_fetch_object($abfrage))  
  {  
  echo $daten->************************."<br />";   
  } 

$result = mysql_query("SELECT * FROM ******************** WHERE ".$wheres." ORDER BY ****************? DESC"); 
$menge = mysql_num_rows($result); 
$wieviel_seiten = ceil($menge / $eintraege_pro_seite); 
echo "<div align=\"center\" style=\"margin:5px 0 0 0; border-top:1px dashed #e7e7e7; border-bottom:1px dashed #e7e7e7\">"; 
echo "<b>Seite:</b> "; 

$a = 0; 
while($a < $wieviel_seiten) 
{ 
    $a++; 
   if($seite == $a) 
      { 
      echo ' <b> '. $a .' </b> '; 
      } 
   else 
      { 
        echo '<a href="?seite='.$a.'&suchanfrage='.$weitersuchen.'"> '.$a.' </a>'; 
      }  
} 
echo "</div>"; 
?>
;)
 
Zurück