Zur Navigation

Seitennavigation erstellen

1 andehrl

hallo jörg, ich habe in meiner site verschiedene ergebnisseiten die noch eine seitennavigation benötigen. eine der ergebnisseiten bzw die datenbankabfrage der seite schaut wie folgt aus:

<?php require_once('Connections/Eingabe.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case 'text':
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$maxRows_R1 = 10;
$pageNum_R1 = 0;
if (isset($_GET['pageNum_R1'])) {
  $pageNum_R1 = $_GET['pageNum_R1'];
}
$startRow_R1 = $pageNum_R1 * $maxRows_R1;
mysql_select_db($database_Eingabe, $Eingabe);
$query_R1 = "SELECT Eingabe.id, Eingabe.abfahrtsort, Eingabe.zielort, DATE_FORMAT(Eingabe.datum, '%d.%m.%Y') AS datum_formatiert, TIME_FORMAT(Eingabe.zeit, '%H:%i') AS zeit_formatiert, IF(Eingabe.zeit = '00:00:00', 1, 0) AS bar, Eingabe.hinfahrtladeflaeche, Eingabe.hilfeeinausladen, Eingabe.rueckfahrt, Eingabe.rueckfahrtladeflaeche, Eingabe.beschreibung, Eingabe.preis, Eingabe.marke, Eingabe.model, Eingabe.laderaumhoehe, Eingabe.laderaumbreite, Eingabe.laderaumlaenge, Eingabe.laderaumvolumen, Eingabe.treibstoff, Eingabe.getriebe, Eingabe.tempo, Eingabe.nutzername, Eingabe.passwort, Eingabe.mail, Eingabe.handy, Eingabe.tel FROM Eingabe 
WHERE ";
$colname_R1 = "KEIN EINTRAG";
if (isset($_POST['abfahrtsort']) && $_POST['abfahrtsort'] != 'Abfahrtsort') {
    $query_R1 .= " abfahrtsort = " . GetSQLValueString($_POST['abfahrtsort'], 'text') . " AND ";
}
if (isset($_POST['zielort']) && $_POST['zielort'] != 'Zielort') {
   $query_R1 .= " zielort  = " . GetSQLValueString($_POST['zielort'], 'text') . " AND ";
}
if (isset($_POST['tag'], $_POST['jahr'], $_POST['monat']) && $_POST['tag'] != '-' && $_POST['jahr'] != '-' && $_POST['monat'] != '-') {
    $query_R1 .= " datum >= '" . sprintf("%04d-%02d-%02d", $_POST['jahr'], $_POST['monat'], $_POST['tag']) . "' AND ";
} else {
    $query_R1 .= " datum >= '" . date("Y-m-d") . "' AND ";
}
if (isset($_POST['stunde'], $_POST['minute']) && $_POST['stunde'] != '-' && $_POST['minute'] != '-') {
    $query_R1 .= " (zeit >= '" . sprintf("%02d:%02d", $_POST['stunde'], $_POST['minute']) . "' OR zeit = '00:00:00') AND ";
}
if (isset($_POST['hinfahrtladeflaeche']) && $_POST['hinfahrtladeflaeche'] != 'Angaben zur Ladefläche') {
    $query_R1 .= " hinfahrtladeflaeche = " . GetSQLValueString($_POST['hinfahrtladeflaeche'], 'text') . " AND ";
}
if (isset($_POST['hilfeeinausladen']) && $_POST['hilfeeinausladen'] != '-') {
    $query_R1 .= " (hilfeeinausladen = " . GetSQLValueString($_POST['hilfeeinausladen'], 'text') . " OR hilfeeinausladen Like '-') AND ";
}
if (isset($_POST['rueckfahrt']) && $_POST['rueckfahrt'] != '-') {
    $query_R1 .= " (rueckfahrt = " . GetSQLValueString($_POST['rueckfahrt'], 'text') . " OR rueckfahrt Like '-') AND ";
}
if (isset($_POST['rueckfahrtladeflaeche']) && $_POST['rueckfahrtladeflaeche'] != 'K.A. zur Ladefläche') {
    $query_R1 .= " (rueckfahrtladeflaeche = " . GetSQLValueString($_POST['rueckfahrtladeflaeche'], 'text') . " OR rueckfahrtladeflaeche Like 'K.A. zur Ladefläche') AND ";
}
if (isset($_POST['marke']) && $_POST['marke'] != '') {
    $query_R1 .= " (marke LIKE '%" . mysql_real_escape_string($_POST['marke']) . "%' OR marke IS NULL) AND ";
}
if (isset($_POST['model']) && $_POST['model'] != '') {
    $query_R1 .= " (model LIKE '%" . mysql_real_escape_string($_POST['model']) . "%' OR model IS NULL) AND ";
}
if (isset($_POST['laderaumhoehe']) && $_POST['laderaumhoehe'] != '') {
    $query_R1 .= " (laderaumhoehe >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumhoehe']), 'double') . " OR laderaumhoehe IS NULL) AND ";
}
if (isset($_POST['laderaumbreite']) && $_POST['laderaumbreite'] != '') {
    $query_R1 .= " (laderaumbreite >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumbreite']), 'double') . " OR laderaumbreite IS NULL) AND ";
}
if (isset($_POST['laderaumlaenge']) && $_POST['laderaumlaenge'] != '') {
    $query_R1 .= " (laderaumlaenge >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumlaenge']), 'double') . " OR laderaumlaenge IS NULL) AND ";
}
if (isset($_POST['laderaumvolumen']) && $_POST['laderaumvolumen'] != '') {
    $query_R1 .= " (laderaumvolumen >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumvolumen']), 'double') . " OR laderaumvolumen IS NULL) AND ";
}
if (isset($_POST['treibstoff']) && $_POST['treibstoff'] != '-') {
    $query_R1 .= " (treibstoff = " . GetSQLValueString($_POST['treibstoff'], 'text') . " OR treibstoff IS NULL) AND ";
}
if (isset($_POST['getriebe']) && $_POST['getriebe'] != '-') {
    $query_R1 .= " (getriebe = " . GetSQLValueString($_POST['getriebe'], 'text') . " OR getriebe IS NULL) AND ";
}
$query_R1 .= "1 ORDER BY Eingabe.datum, bar, Eingabe.zeit, Eingabe.laderaumlaenge DESC, Eingabe.laderaumbreite DESC, Eingabe.laderaumhoehe DESC, Eingabe.laderaumvolumen DESC, Eingabe.treibstoff DESC, Eingabe.getriebe DESC";
$query_limit_R1 = sprintf("%s LIMIT %d, %d", $query_R1, $startRow_R1, $maxRows_R1);

$R1 = mysql_query($query_limit_R1, $Eingabe) or die(mysql_error());
$row_R1 = mysql_fetch_assoc($R1);

if (isset($_GET['totalRows_R1'])) {
  $totalRows_R1 = $_GET['totalRows_R1'];
} else {
  $all_R1 = mysql_query($query_R1);
  $totalRows_R1 = mysql_num_rows($all_R1);
}
$totalPages_R1 = ceil($totalRows_R1/$maxRows_R1)-1;

$currentPage = $_SERVER["PHP_SELF"];

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$maxRows_R1 = 10;
$pageNum_R1 = 0;
if (isset($_GET['pageNum_R1'])) {
  $pageNum_R1 = $_GET['pageNum_R1'];
}
$startRow_R1 = $pageNum_R1 * $maxRows_R1;

$colname6_R1 = "NULL";
if (isset($_POST['minute'])) {
  $colname6_R1 = $_POST['minute'];
}
$colname7_R1 = "NULL";
if (isset($_POST['hinfahrtladeflaeche'])) {
  $colname7_R1 = $_POST['hinfahrtladeflaeche'];
}
$colname5_R1 = "NULL";
if (isset($_POST['stunde'])) {
  $colname5_R1 = $_POST['stunde'];
}
$colname_R1 = "KEIN EINTRAG";
if (isset($_POST['abfahrtsort'])) {
  $colname_R1 = $_POST['abfahrtsort'];
}
$colname1_R1 = "KEIN EINTRAG";
if (isset($_POST['zielort'])) {
  $colname1_R1 = $_POST['zielort'];
}
$colname2_R1 = "NULL";
if (isset($_POST['tag'])) {
  $colname2_R1 = $_POST['tag'];
}
$colname3_R1 = "NULL";
if (isset($_POST['monat'])) {
  $colname3_R1 = $_POST['monat'];
}
$colname4_R1 = "NULL";
if (isset($_POST['jahr'])) {
  $colname4_R1 = $_POST['jahr'];
}
$colname8_R1 = "NULL";
if (isset($_POST['hilfeeinausladen'])) {
  $colname8_R1 = $_POST['hilfeeinausladen'];
}
$colname9_R1 = "NULL";
if (isset($_POST['rueckfahrt'])) {
  $colname9_R1 = $_POST['rueckfahrt'];
}
$colname10_R1 = "NULL";
if (isset($_POST['rueckfahrtladeflaeche'])) {
  $colname10_R1 = $_POST['rueckfahrtladeflaeche'];
}
$colname11_R1 = "NULL";
if (isset($_POST['marke'])) {
  $colname11_R1 = $_POST['marke'];
}
$colname12_R1 = "NULL";
if (isset($_POST['model'])) {
  $colname12_R1 = $_POST['model'];
}
$colname13_R1 = "NULL";
if (isset($_POST['laderaumhoehe'])) {
  $colname13_R1 = $_POST['laderaumhoehe'];
}
$colname14_R1 = "NULL";
if (isset($_POST['laderaumbreite'])) {
  $colname14_R1 = $_POST['laderaumbreite'];
}
$colname15_R1 = "NULL";
if (isset($_POST['laderaumlaenge'])) {
  $colname15_R1 = $_POST['laderaumlaenge'];
}
$colname16_R1 = "NULL";
if (isset($_POST['laderaumvolumen'])) {
  $colname16_R1 = $_POST['laderaumvolumen'];
}
$colname17_R1 = "NULL";
if (isset($_POST['treibstoff'])) {
  $colname17_R1 = $_POST['treibstoff'];
}
$colname18_R1 = "NULL";
if (isset($_POST['getriebe'])) {
  $colname18_R1 = $_POST['getriebe'];
}
$queryString_R1 = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_R1") == false && 
        stristr($param, "totalRows_R1") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_R1 = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_R1 = sprintf("&totalRows_R1=%d%s", $totalRows_R1, $queryString_R1);
?>

ich habe im internet dann diese seitennavigation gefunden:

<?PHP
define("MAX_EINTRAEGE",10);
define("NAV_LEISTE",11);

define("DB_HOST","hostname");
define("DB_NAME","db-name");
define("DB_USER","User");
define("DB_PASS","Passwort");


$db = @MYSQL_CONNECT(DB_HOST,DB_USER,DB_PASS) or die("Datenbank-Connect fehlgeschlagen");
$db_check = @MYSQL_SELECT_DB(DB_NAME) or die("Datenbank momentan nicht erreichbar");

function navigationsLeiste($SitesComplete,$seiteAktuell,$extVariables){ 
	$NavCeil = floor(NAV_LEISTE / 2);
	if($seiteAktuell > 1){
		$string .= '<a href="?site=1'.$extVariables.'"><<</a>&nbsp;&nbsp;';
		$string .= '<a href="?site='.($seiteAktuell-1).$extVariables.'"><</a>&nbsp;&nbsp;';
	}
	for($x=$seiteAktuell-$NavCeil;$x<=$seiteAktuell+$NavCeil;$x++){

		if(($x>0 && $x<$seiteAktuell) || ($x>$seiteAktuell && $x<=$SitesComplete))
			$string .= '<a href="?site='.$x.$extVariables.'">'.$x.'</a>&nbsp;&nbsp;';
		
		if($x==$seiteAktuell)
			$string .= $x . '&nbsp;&nbsp;';
	}
	if($seiteAktuell < $SitesComplete){
		$string .= '<a href="?site='.($seiteAktuell+1).$extVariables.'">></a>&nbsp;&nbsp;';
		$string .= '<a href="?site='.$SitesComplete.$extVariables.'">>></a>&nbsp;&nbsp;';
	}	
	return $string;	
}
$seiteAktuell = $_GET['site'] + 0;
if(empty($seiteAktuell))
	$seiteAktuell = 1;
$start = $seiteAktuell * MAX_EINTRAEGE - MAX_EINTRAEGE;
$result = @mysql_query("SELECT * FROM statistik_pageviews LIMIT $start, ".MAX_EINTRAEGE);
$resultGesamt = @mysql_query("SELECT COUNT(*) AS menge FROM statistik_pageviews"); 
$Eintraege = @mysql_result($resultGesamt,0,"menge");
while($row = @mysql_fetch_row($result)){
	$contentWeb .= $row[0] . ' -- ' . $row[1] . '<br>';
}

$contentWeb .= '<div align="center">'; 
$SitesComplete = ceil($Eintraege / MAX_EINTRAEGE);
$contentWeb .= 'Ergebnisseite ' . $seiteAktuell . ' von ' . $SitesComplete . '<br>';
$extVariables = '&var1=wert1&var2=wert2';
$contentWeb .= navigationsLeiste($SitesComplete,$seiteAktuell,$extVariables); 

$contentWeb .= '</div>';

echo $contentWeb;

?>

auf meiner seite wird gleich am anfang eine verbindung zur datenbank hergestellt. dann kann ich doch die datenbankanbindung in der navigation (fett) weglassen, oder?
die nächste frage wäre dann wie ich diese navigation mit meiner abfrage der datenbank verbine? mache ich das mit $extVariables (fett) und wenn ja wie müsste dann &var1=wert1&var2=wert2 aussehen?

10.11.2010 14:36

2 Jörg Kruse

ich habe in meiner site verschiedene ergebnisseiten die noch eine seitennavigation benötigen

Mit Seitennavigation meinst du in diesem Fall eine Blätterfunktion für Ergebnisseiten 1 bis n, nehme ich an? (zumindest legt das der untere Code nahe)

auf meiner seite wird gleich am anfang eine verbindung zur datenbank hergestellt. dann kann ich doch die datenbankanbindung in der navigation (fett) weglassen, oder?

Ja

die nächste frage wäre dann wie ich diese navigation mit meiner abfrage der datenbank verbine?

Du musst für deine Abfrage das LIMIT Statement übernehmen, welches die Ergebnisse für eine bestimmte Fortsetzungsseite filtert

mache ich das mit $extVariables (fett) und wenn ja wie müsste dann &var1=wert1&var2=wert2 aussehen?

In $extVariables sollst du wohl die Parameter speichern, unter welchen die Ergebnisseite normalerweise aufgerufen wird; der Seitenparameter wird dann automatisch davorgeknallt

PS: das Script wird hier auch genauer beschrieben:

http://www.selfphp.info/kochbuch/kochbuch.php?code=32

10.11.2010 17:58

3 andehrl

Mit Seitennavigation meinst du in diesem Fall eine Blätterfunktion für Ergebnisseiten 1 bis n, nehme ich an? (zumindest legt das der untere Code nahe)

genau







Du musst für deine Abfrage das LIMIT Statement übernehmen, welches die Ergebnisse für eine bestimmte Fortsetzungsseite filtert


wie "übernehme" ich das denn das Limit statement? ich habe die tabelle der datenbank eingegeben. muss ich die query noch umbenennen?:

$result = @mysql_query("SELECT * FROM Eingabe LIMIT $start, ".MAX_EINTRAEGE);

$result = @mysql_query_R1("SELECT * FROM Eingabe LIMIT $start, ".MAX_EINTRAEGE);






und SELECT mit den bedingungen WERE noch einfügen??:

$result = @mysql_query_R1("SELECT Eingabe.id, Eingabe.abfahrtsort, Eingabe.zielort, DATE_FORMAT(Eingabe.datum, '%d.%m.%Y') AS datum_formatiert, TIME_FORMAT(Eingabe.zeit, '%H:%i') AS zeit_formatiert, IF(Eingabe.zeit = '00:00:00', 1, 0) AS bar, Eingabe.hinfahrtladeflaeche, Eingabe.hilfeeinausladen, Eingabe.rueckfahrt, Eingabe.rueckfahrtladeflaeche, Eingabe.beschreibung, Eingabe.preis, Eingabe.marke, Eingabe.model, Eingabe.laderaumhoehe, Eingabe.laderaumbreite, Eingabe.laderaumlaenge, Eingabe.laderaumvolumen, Eingabe.treibstoff, Eingabe.getriebe, Eingabe.tempo, Eingabe.nutzername, Eingabe.passwort, Eingabe.mail, Eingabe.handy, Eingabe.tel FROM Eingabe 
WHERE ";
$colname_R1 = "KEIN EINTRAG";
if (isset($_POST['abfahrtsort']) && $_POST['abfahrtsort'] != 'Abfahrtsort') {
    $query_R1 .= " abfahrtsort = " . GetSQLValueString($_POST['abfahrtsort'], 'text') . " AND ";
}
if (isset($_POST['zielort']) && $_POST['zielort'] != 'Zielort') {
   $query_R1 .= " zielort  = " . GetSQLValueString($_POST['zielort'], 'text') . " AND ";
}
if (isset($_POST['tag'], $_POST['jahr'], $_POST['monat']) && $_POST['tag'] != '-' && $_POST['jahr'] != '-' && $_POST['monat'] != '-') {
    $query_R1 .= " datum >= '" . sprintf("%04d-%02d-%02d", $_POST['jahr'], $_POST['monat'], $_POST['tag']) . "' AND ";
} else {
    $query_R1 .= " datum >= '" . date("Y-m-d") . "' AND ";
}
if (isset($_POST['stunde'], $_POST['minute']) && $_POST['stunde'] != '-' && $_POST['minute'] != '-') {
    $query_R1 .= " (zeit >= '" . sprintf("%02d:%02d", $_POST['stunde'], $_POST['minute']) . "' OR zeit = '00:00:00') AND ";
}
if (isset($_POST['hinfahrtladeflaeche']) && $_POST['hinfahrtladeflaeche'] != 'Angaben zur Ladefläche') {
    $query_R1 .= " hinfahrtladeflaeche = " . GetSQLValueString($_POST['hinfahrtladeflaeche'], 'text') . " AND ";
}
if (isset($_POST['hilfeeinausladen']) && $_POST['hilfeeinausladen'] != '-') {
    $query_R1 .= " (hilfeeinausladen = " . GetSQLValueString($_POST['hilfeeinausladen'], 'text') . " OR hilfeeinausladen Like '-') AND ";
}
if (isset($_POST['rueckfahrt']) && $_POST['rueckfahrt'] != '-') {
    $query_R1 .= " (rueckfahrt = " . GetSQLValueString($_POST['rueckfahrt'], 'text') . " OR rueckfahrt Like '-') AND ";
}
if (isset($_POST['rueckfahrtladeflaeche']) && $_POST['rueckfahrtladeflaeche'] != 'K.A. zur Ladefläche') {
    $query_R1 .= " (rueckfahrtladeflaeche = " . GetSQLValueString($_POST['rueckfahrtladeflaeche'], 'text') . " OR rueckfahrtladeflaeche Like 'K.A. zur Ladefläche') AND ";
}
if (isset($_POST['marke']) && $_POST['marke'] != '') {
    $query_R1 .= " (marke LIKE '%" . mysql_real_escape_string($_POST['marke']) . "%' OR marke IS NULL) AND ";
}
if (isset($_POST['model']) && $_POST['model'] != '') {
    $query_R1 .= " (model LIKE '%" . mysql_real_escape_string($_POST['model']) . "%' OR model IS NULL) AND ";
}
if (isset($_POST['laderaumhoehe']) && $_POST['laderaumhoehe'] != '') {
    $query_R1 .= " (laderaumhoehe >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumhoehe']), 'double') . " OR laderaumhoehe IS NULL) AND ";
}
if (isset($_POST['laderaumbreite']) && $_POST['laderaumbreite'] != '') {
    $query_R1 .= " (laderaumbreite >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumbreite']), 'double') . " OR laderaumbreite IS NULL) AND ";
}
if (isset($_POST['laderaumlaenge']) && $_POST['laderaumlaenge'] != '') {
    $query_R1 .= " (laderaumlaenge >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumlaenge']), 'double') . " OR laderaumlaenge IS NULL) AND ";
}
if (isset($_POST['laderaumvolumen']) && $_POST['laderaumvolumen'] != '') {
    $query_R1 .= " (laderaumvolumen >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumvolumen']), 'double') . " OR laderaumvolumen IS NULL) AND ";
}
if (isset($_POST['treibstoff']) && $_POST['treibstoff'] != '-') {
    $query_R1 .= " (treibstoff = " . GetSQLValueString($_POST['treibstoff'], 'text') . " OR treibstoff IS NULL) AND ";
}
if (isset($_POST['getriebe']) && $_POST['getriebe'] != '-') {
    $query_R1 .= " (getriebe = " . GetSQLValueString($_POST['getriebe'], 'text') . " OR getriebe IS NULL) AND ";
} LIMIT $start, ".MAX_EINTRAEGE);

10.11.2010 18:33

4 Jörg Kruse

if (isset($_POST['getriebe']) && $_POST['getriebe'] != '-') {
    $query_R1 .= " (getriebe = " . GetSQLValueString($_POST['getriebe'], 'text') . " OR getriebe IS NULL) AND ";
} LIMIT $start, ".MAX_EINTRAEGE);

So nicht - du haust hier die PHP- und SQL-Ebene durcheinander :(. Du hast hier PHP-Code vorliegen, der (mit dem Zeichenketten-Operator .=) den String $query_R1 zusammenbaut, welcher einen SQL-Code enthält, welcher wohl hiernach an die Datenbank geschickt werden soll. Das "AND" deutet darauf hin, dass noch weitere Strings an $query_R1 angebaut werden. Das LIMIT kommt so ziemlich ans Ende (und dann auch mit "$query_R1 .=" in den SQL-String eingebaut).

10.11.2010 18:54 | geändert: 10.11.2010 18:56

5 andehrl

Zitat von Jörg
if (isset($_POST['getriebe']) && $_POST['getriebe'] != '-') {
    $query_R1 .= " (getriebe = " . GetSQLValueString($_POST['getriebe'], 'text') . " OR getriebe IS NULL) AND ";
} LIMIT $start, ".MAX_EINTRAEGE);

So nicht - du haust hier die PHP- und SQL-Ebene durcheinander :(. Du hast hier PHP-Code vorliegen, der (mit dem Zeichenketten-Operator .=) den String $query_R1 zusammenbaut, welcher einen SQL-Code enthält, welcher wohl hiernach an die Datenbank geschickt werden soll. Das "AND" deutet darauf hin, dass noch weitere Strings an $query_R1 angebaut werden. Das LIMIT kommt so ziemlich ans Ende (und dann auch mit "$query_R1 .=" in den SQL-String eingebaut).


also nochmal langsam. wenn ich diesen code der navigation so verwende,

...
$result = @mysql_query_R1("SELECT * FROM Eingabe LIMIT $start, ".MAX_EINTRAEGE);


$resultGesamt = @mysql_query_R1("SELECT COUNT(*) AS menge FROM Eingabe"); 
$Eintraege = @mysql_result($resultGesamt,0,"menge");

werden dann auf den folgeseiten beim blättern die im oberen teil unter WERE angegebenen bedingungen berücksichtigt, oder werden mir einfach alle daten der datenbank ausgegeben?

wenn ich die bedingungen hier nochmals einfügen muss und LIMIT einbinden wie sieht das dann genau aus.
du sagst Limit kommt ans end mit "$query_R1 .=" in den SQL-String eingebaut.
nach den bedingungen in meiner seite folgt dieser code

...
if (isset($_POST['getriebe']) && $_POST['getriebe'] != '-') {
    $query_R1 .= " (getriebe = " . GetSQLValueString($_POST['getriebe'], 'text') . " OR getriebe IS NULL) AND ";
}
$query_R1 .= "1 ORDER BY Eingabe.datum, bar, Eingabe.zeit, Eingabe.laderaumlaenge DESC, Eingabe.laderaumbreite DESC, Eingabe.laderaumhoehe DESC, Eingabe.laderaumvolumen DESC, Eingabe.treibstoff DESC, Eingabe.getriebe DESC";
$query_limit_R1 = sprintf("%s LIMIT %d, %d", $query_R1, $startRow_R1, $maxRows_R1);

$R1 = mysql_query($query_limit_R1, $Eingabe) or die(mysql_error());
$row_R1 = mysql_fetch_assoc($R1);

if (isset($_GET['totalRows_R1'])) {
  $totalRows_R1 = $_GET['totalRows_R1'];
} else {
  $all_R1 = mysql_query($query_R1);
  $totalRows_R1 = mysql_num_rows($all_R1);
}
$totalPages_R1 = ceil($totalRows_R1/$maxRows_R1)-1;

$currentPage = $_SERVER["PHP_SELF"];
...

10.11.2010 19:38

6 Jörg Kruse

Du erweiterst natürlich deine vorhandene Abfrage, insofern war dein letzter Ansatz schon korrekt, nur die technische Umsetzung halt nicht ;)

$query_limit_R1 = sprintf("%s LIMIT %d, %d", $query_R1, $startRow_R1, $maxRows_R1);

Dadurch wird bereits ein LIMIT Statement angehangen - war das schon vorher so oder hast du das jetzt so eingebaut? $startRow_R1 und $maxRows_R1 müssen dann mit den Variablen aus dem Blätter-Script ersetzt werden, welches du hier integrieren möchtest. Allerdings frage ich mich, wo $startRow_R1 und $maxRows_R1 herkommen - hat dein Script vielleicht schon den Ansatz einer Blätterfunktion?

10.11.2010 20:29

7 andehrl

ich habe einen sich wiederholenden bereich auf der seite. ich denke das kommt daher. ehrlich gesagt weiss ich aber jetzt immer noch nicht so genau wie ich das ganze umsetzte?? ... und kann ich nicht auch die variablen aus dem blättersrcipt mit $startRow_R1 und $maxRows_R1 ersetzten?

10.11.2010 22:20

8 Jörg Kruse

Wo und wie sind die beiden Variablen $startRow_R1 und $maxRows_R1 denn definiert? irgendeinen Zweck werden sie ja erfüllen.

und kann ich nicht auch die variablen aus dem blättersrcipt mit $startRow_R1 und $maxRows_R1 ersetzten?

Kannst du - das ergibt nur keinen Sinn. Du willst ja die Navigation in deine Seite einbauen und nicht umgekehrt. Mal abgesehen davon, dass du noch gar nicht weißt, was diese Variablen beinhalten (s.o.)

10.11.2010 23:17

9 andehrl

das sind die 4 codeabschnitte in denen ich $startRow_R1 und $maxRows_R1 finde (fett).

<?php require_once('Connections/Eingabe.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case 'text':
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$maxRows_R1 = 20;
$pageNum_R1 = 0;
if (isset($_GET['pageNum_R1'])) {
  $pageNum_R1 = $_GET['pageNum_R1'];
}
$startRow_R1 = $pageNum_R1 * $maxRows_R1;
mysql_select_db($database_Eingabe, $Eingabe);
$query_R1 = "SELECT Eingabe.id, Eingabe.abfahrtsort, Eingabe.zielort, DATE_FORMAT(Eingabe.datum, '%d.%m.%Y') AS datum_formatiert, TIME_FORMAT(Eingabe.zeit, '%H:%i') AS zeit_formatiert, IF(Eingabe.zeit = '00:00:00', 1, 0) AS bar, Eingabe.hinfahrtladeflaeche, Eingabe.hilfeeinausladen, Eingabe.rueckfahrt, Eingabe.rueckfahrtladeflaeche, Eingabe.beschreibung, Eingabe.preis, Eingabe.marke, Eingabe.model, Eingabe.laderaumhoehe, Eingabe.laderaumbreite, Eingabe.laderaumlaenge, Eingabe.laderaumvolumen, Eingabe.treibstoff, Eingabe.getriebe, Eingabe.tempo, Eingabe.nutzername, Eingabe.passwort, Eingabe.mail, Eingabe.handy, Eingabe.tel FROM Eingabe 
WHERE ";
$colname_R1 = "KEIN EINTRAG";
if (isset($_POST['abfahrtsort']) && $_POST['abfahrtsort'] != 'Abfahrtsort') {
    $query_R1 .= " abfahrtsort = " . GetSQLValueString($_POST['abfahrtsort'], 'text') . " AND ";
}
if (isset($_POST['zielort']) && $_POST['zielort'] != 'Zielort') {
   $query_R1 .= " zielort  = " . GetSQLValueString($_POST['zielort'], 'text') . " AND ";
}
if (isset($_POST['tag'], $_POST['jahr'], $_POST['monat']) && $_POST['tag'] != '-' && $_POST['jahr'] != '-' && $_POST['monat'] != '-') {
    $query_R1 .= " datum >= '" . sprintf("%04d-%02d-%02d", $_POST['jahr'], $_POST['monat'], $_POST['tag']) . "' AND ";
} else {
    $query_R1 .= " datum >= '" . date("Y-m-d") . "' AND ";
}
if (isset($_POST['stunde'], $_POST['minute']) && $_POST['stunde'] != '-' && $_POST['minute'] != '-') {
    $query_R1 .= " (zeit >= '" . sprintf("%02d:%02d", $_POST['stunde'], $_POST['minute']) . "' OR zeit = '00:00:00') AND ";
}
if (isset($_POST['hinfahrtladeflaeche']) && $_POST['hinfahrtladeflaeche'] != 'Angaben zur Ladefläche') {
    $query_R1 .= " hinfahrtladeflaeche = " . GetSQLValueString($_POST['hinfahrtladeflaeche'], 'text') . " AND ";
}
if (isset($_POST['hilfeeinausladen']) && $_POST['hilfeeinausladen'] != '-') {
    $query_R1 .= " (hilfeeinausladen = " . GetSQLValueString($_POST['hilfeeinausladen'], 'text') . " OR hilfeeinausladen Like '-') AND ";
}
if (isset($_POST['rueckfahrt']) && $_POST['rueckfahrt'] != '-') {
    $query_R1 .= " (rueckfahrt = " . GetSQLValueString($_POST['rueckfahrt'], 'text') . " OR rueckfahrt Like '-') AND ";
}
if (isset($_POST['rueckfahrtladeflaeche']) && $_POST['rueckfahrtladeflaeche'] != 'K.A. zur Ladefläche') {
    $query_R1 .= " (rueckfahrtladeflaeche = " . GetSQLValueString($_POST['rueckfahrtladeflaeche'], 'text') . " OR rueckfahrtladeflaeche Like 'K.A. zur Ladefläche') AND ";
}
if (isset($_POST['marke']) && $_POST['marke'] != '') {
    $query_R1 .= " (marke LIKE '%" . mysql_real_escape_string($_POST['marke']) . "%' OR marke IS NULL) AND ";
}
if (isset($_POST['model']) && $_POST['model'] != '') {
    $query_R1 .= " (model LIKE '%" . mysql_real_escape_string($_POST['model']) . "%' OR model IS NULL) AND ";
}
if (isset($_POST['laderaumhoehe']) && $_POST['laderaumhoehe'] != '') {
    $query_R1 .= " (laderaumhoehe >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumhoehe']), 'double') . " OR laderaumhoehe IS NULL) AND ";
}
if (isset($_POST['laderaumbreite']) && $_POST['laderaumbreite'] != '') {
    $query_R1 .= " (laderaumbreite >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumbreite']), 'double') . " OR laderaumbreite IS NULL) AND ";
}
if (isset($_POST['laderaumlaenge']) && $_POST['laderaumlaenge'] != '') {
    $query_R1 .= " (laderaumlaenge >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumlaenge']), 'double') . " OR laderaumlaenge IS NULL) AND ";
}
if (isset($_POST['laderaumvolumen']) && $_POST['laderaumvolumen'] != '') {
    $query_R1 .= " (laderaumvolumen >= " . GetSQLValueString(str_replace(',', '.', $_POST['laderaumvolumen']), 'double') . " OR laderaumvolumen IS NULL) AND ";
}
if (isset($_POST['treibstoff']) && $_POST['treibstoff'] != '-') {
    $query_R1 .= " (treibstoff = " . GetSQLValueString($_POST['treibstoff'], 'text') . " OR treibstoff IS NULL) AND ";
}
if (isset($_POST['getriebe']) && $_POST['getriebe'] != '-') {
    $query_R1 .= " (getriebe = " . GetSQLValueString($_POST['getriebe'], 'text') . " OR getriebe IS NULL) AND ";
}
$query_R1 .= "1 ORDER BY Eingabe.datum, bar, Eingabe.zeit, Eingabe.laderaumlaenge DESC, Eingabe.laderaumbreite DESC, Eingabe.laderaumhoehe DESC, Eingabe.laderaumvolumen DESC, Eingabe.treibstoff DESC, Eingabe.getriebe DESC";
$query_limit_R1 = sprintf("%s LIMIT %d, %d", $query_R1, $startRow_R1, $maxRows_R1);

$R1 = mysql_query($query_limit_R1, $Eingabe) or die(mysql_error());
$row_R1 = mysql_fetch_assoc($R1);

if (isset($_GET['totalRows_R1'])) {
  $totalRows_R1 = $_GET['totalRows_R1'];
} else {
  $all_R1 = mysql_query($query_R1);
  $totalRows_R1 = mysql_num_rows($all_R1);
}
$totalPages_R1 = ceil($totalRows_R1/$maxRows_R1)-1;

$currentPage = $_SERVER["PHP_SELF"];

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$maxRows_R1 = 20;
$pageNum_R1 = 0;
if (isset($_GET['pageNum_R1'])) {
  $pageNum_R1 = $_GET['pageNum_R1'];
}
$startRow_R1 = $pageNum_R1 * $maxRows_R1;

$colname6_R1 = "NULL";
if (isset($_POST['minute'])) {
  $colname6_R1 = $_POST['minute'];
}
$colname7_R1 = "NULL";
if (isset($_POST['hinfahrtladeflaeche'])) {
  $colname7_R1 = $_POST['hinfahrtladeflaeche'];
}
$colname5_R1 = "NULL";
if (isset($_POST['stunde'])) {
  $colname5_R1 = $_POST['stunde'];
}
$colname_R1 = "KEIN EINTRAG";
if (isset($_POST['abfahrtsort'])) {
  $colname_R1 = $_POST['abfahrtsort'];
}
$colname1_R1 = "KEIN EINTRAG";
if (isset($_POST['zielort'])) {
  $colname1_R1 = $_POST['zielort'];
}
$colname2_R1 = "NULL";
if (isset($_POST['tag'])) {
  $colname2_R1 = $_POST['tag'];
}
$colname3_R1 = "NULL";
if (isset($_POST['monat'])) {
  $colname3_R1 = $_POST['monat'];
}
$colname4_R1 = "NULL";
if (isset($_POST['jahr'])) {
  $colname4_R1 = $_POST['jahr'];
}
$colname8_R1 = "NULL";
if (isset($_POST['hilfeeinausladen'])) {
  $colname8_R1 = $_POST['hilfeeinausladen'];
}
$colname9_R1 = "NULL";
if (isset($_POST['rueckfahrt'])) {
  $colname9_R1 = $_POST['rueckfahrt'];
}
$colname10_R1 = "NULL";
if (isset($_POST['rueckfahrtladeflaeche'])) {
  $colname10_R1 = $_POST['rueckfahrtladeflaeche'];
}
$colname11_R1 = "NULL";
if (isset($_POST['marke'])) {
  $colname11_R1 = $_POST['marke'];
}
$colname12_R1 = "NULL";
if (isset($_POST['model'])) {
  $colname12_R1 = $_POST['model'];
}
$colname13_R1 = "NULL";
if (isset($_POST['laderaumhoehe'])) {
  $colname13_R1 = $_POST['laderaumhoehe'];
}
$colname14_R1 = "NULL";
if (isset($_POST['laderaumbreite'])) {
  $colname14_R1 = $_POST['laderaumbreite'];
}
$colname15_R1 = "NULL";
if (isset($_POST['laderaumlaenge'])) {
  $colname15_R1 = $_POST['laderaumlaenge'];
}
$colname16_R1 = "NULL";
if (isset($_POST['laderaumvolumen'])) {
  $colname16_R1 = $_POST['laderaumvolumen'];
}
$colname17_R1 = "NULL";
if (isset($_POST['treibstoff'])) {
  $colname17_R1 = $_POST['treibstoff'];
}
$colname18_R1 = "NULL";
if (isset($_POST['getriebe'])) {
  $colname18_R1 = $_POST['getriebe'];
}
$queryString_R1 = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_R1") == false && 
        stristr($param, "totalRows_R1") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_R1 = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_R1 = sprintf("&totalRows_R1=%d%s", $totalRows_R1, $queryString_R1);
?>

11.11.2010 00:57

10 Jörg Kruse

Hier wird die Seitenzahl als GET Parameter übernommen:

if (isset($_GET['pageNum_R1'])) {
  $pageNum_R1 = $_GET['pageNum_R1'];
}

Mit dem Parameter pageNum_R1=2 in der URL könntest du z.B. Seite 2 aufrufen. Anscheinend fehlt da nur die Navigation mit den entsprechenden Links dazu?

Der Codeabschnitt entspricht dem hier aus dem Navigationsscript:

$seiteAktuell = $_GET['site'] + 0;

Du kannst dir jetzt aussuchen, ob du die Parameter von deinem Script durch die des anderen Scriptes ersetzt und dessen LIMIT Statement verwendest, oder andersrum die Variablennamen im Navigationsscript anpasst. Das erste ist für dich vielleicht einfacher (weil an dem Punkt warst du ja schon)

11.11.2010 15:20 | geändert: 11.11.2010 15:21