Datenbankausgabe mit Blätterfunktion

das werd ich Morgen mal versuchen, ist für mich eine größere Herausforderung.
Aber ich versuch es erst mal alleine und wenns nicht klappen sollte werde ich mich wieder melden,(wäre stolz auf mich wenn es klappt :-)
Herzlichen Dank an alle,
Gruß
Rainer
 
Hallo,
ich probier nun schon seit 9 Std. rum und das Ergebnis ist mager.
Das Formular funktioniert auch mit get wieder aber das Einbinden der URL klappt nicht.
mit dem google habe ich auch herausgefunden, dass die z.B. $_GET['plz'] Variable mit einem ? angehängt werden muss, aber das wars auch schon.
ich glaube (normalerweise macht man das nur in der Kirche) das die GET- Variablen hier eingebunden werden sollten

PHP:
  echo "  <a href=\"?start=$b \"  >$b</a> ";
war aber komplett erfolglos. Das ? benötigt man ja nur das erste mal, alle weiteren Variablen können ja mit & angehängt werden.
Ich hab es mal mit nur einer Variablen versucht (plz)
PHP:
  echo "  <a href=\"?start=$b . $_GET['plz']\"  >$b</a> ";  // ging nicht Syntaxfehler
  echo "  <a href=\"?start=$b & $_GET['plz']\"  >$b</a> ";  // ging nicht Syntaxfehler
  echo "  <a href=\"?start=$b \" & $_GET['plz'] >$b</a> ";  // ging nicht Syntaxfehler
  echo "  <a href=\"?start=$b \" . $_GET['plz'] >$b</a> ";  // ging nicht Syntaxfehler

Ich kann schon in meinem inneren Auge Euer schmunzeln sehen über meine Versuche :D

aber wer nicht probiert, wird es nie herausfinden. Bin mir ja nicht mal sicher, ob es hier die richtige Stelle ist wo es hin gehört.

Eine Hilfe von Euch würde mein Gemüt wieder etwas beruhigen :)

Was mir auch nicht klar ist: wenn das Formular mit get abgeschickt wird, sind die Daten in der URL gespeichert. Wieso kann ich dann, wenn Seite 2 aufgerufen wird, die $_GET['plz'] nicht mehr mit echo sehen, auf Seite 1 ja.

Und was bedeuten die Nummern in () hinter string z.B. string(21) , string (67)

Danke
Gruß
Rainer
 
Zuletzt bearbeitet:
Ich kann schon in meinem inneren Auge Euer schmunzeln sehen über meine Versuche :D

Vielleicht, gar so abwegig ist deine Vorstellung nämlich nicht ;)

Und was bedeuten die Nummern in () hinter string z.B. string(21) , string (67)
Die bekommst du von Aufrufen von [phpf]var_dump[/phpf], oder? Dann würde ich dir mal raten empfehlen :D (Tipp: dies ist die Anzahl der Zeichen im String).


Du musst die Variablen wieder an die URL hängen. Ich weiß gerade nicht, ob es vielleicht besser wäre, wenn ich dir schnell das Skript umändere und so lernst, anstatt es ellenlang hier zu erklären. Manchmal versteht man Dinge besser, wenn man es einfach hingeklatscht bekommt.
 
hallo, das wäre echt super von Dir,
und ja das kommt von var_dump()

das erste Skript ist eine "Untertabelle" von ResBar die auch über die plz aufgerufen wird und die 4 Bilder a,b,c,d sollen immer angezeigt werden
PHP:
require_once ('konfiguration-ResBar.php');
$id          = $_GET['id'];
$plz         = $_GET['plz'];
$bild_a      = $_GET['bild_a'];
$bild_b      = $_GET['bild_b'];
$bild_c      = $_GET['bild_c'];
$bild_d      = $_GET['bild_d'];
$plzw = $plz;

 
$query2  =   sprintf(
	"SELECT distinct(rb.plz), bild_a, bild_b, bild_c, bild_d FROM Werbung w
	join ResBar rb on w.plzw = rb.plz
	where rb.plz = '".$plzw."'",
	mysqli_real_escape_string($db_link, $plzw)
); 
 

$db_ergw = mysqli_query( $db_link, $query2 );
if ( ! $db_ergw )
{
die('Ungültige Abfrage: ' . mysqli_error());
}


 
echo "<table width='100%'  >
      <tbody>
      <td  width='25%' >   </td>
      <td  width='25%' >   </td>
      <td  width='25%' >   </td>
      <td  width='25%' >   </td>
";

 

while ($zeilew = mysqli_fetch_array( $db_ergw, MYSQL_ASSOC))
{
		echo "<tr align='center' >";
		echo "<td>". $zeilew['bild_a'] .           "</td>";
		echo "<td>". $zeilew['bild_b'] .           "</td>";
		echo "<td>". $zeilew['bild_c'] .           "</td>";
		echo "<td>". $zeilew['bild_d'] .           "</td>";
	

								// Escaping für Kontextwechsel nach HTML
								// $e = function ($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); }; 
								//  homepage Anzeige als Link
								//  echo '<td><a href="' . $zeile['homepage'] . '">' . $zeile['homepage'] . '</a></td>';  		 
								//  echo "	$db_erg ";
		echo "</tr>";
}


 
mysqli_free_result( $db_ergw ); 


echo "</tbody></table>";

und das ist die Ausgabe der Datenbank

PHP:
require_once ('konfiguration-ResBar.php');

$garten      = $_GET['garten'];
$kueche      = $_GET['kueche'];
$plz         = $_GET['plz'];
$ort         = $_GET['ort'];
$behindert   = $_GET['behindert'];
$nacht       = $_GET['nacht']; 
$freigabe    = $_GET['freigabe'];
 
 
 
 
 if( empty($_GET['ort'])  && empty($_GET['plz']) )
	{ echo 'Ort oder Plz. muss ausgefüllt werden';   exit;  }

 
	$sql  = (empty($_GET['garten']))    ? '' : " AND garten    = '".$_GET['garten']      ."'";
	$sql .= (empty($_GET['ort']))       ? '' : " AND ort       = '".$_GET['ort']         ."'";
	$sql .= (empty($_GET['kueche']))    ? '' : " AND kueche    = '".$_GET['kueche']      ."'";
	$sql .= (empty($_GET['plz']))       ? '' : " AND plz       = '".$_GET['plz']         ."'";
	$sql .= (empty($_GET['behindert'])) ? '' : " AND behindert = '".$_GET['behindert']   ."'";
	$sql .= (empty($_GET['nacht']))     ? '' : " AND nacht     = '".$_GET['nacht']       ."'"; 
	$sql .= (empty($_GET['freigabe']))  ? '' : " AND freigabe  = '".$_GET['freigabe']    ."'"; 
	
	$sql = substr($sql, 5);
	$sql = ($sql == '') ? ""  : " WHERE ".$sql ;
  


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

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


$eintraege_pro_seite = 3;

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

$query  =   sprintf("SELECT * FROM ResBar " .$sql  ,
	
	mysqli_real_escape_string($db_link, $garten),
	mysqli_real_escape_string($db_link, $kueche),
	mysqli_real_escape_string($db_link, $plz),
	mysqli_real_escape_string($db_link, $ort),
	mysqli_real_escape_string($db_link, $behindert),
	mysqli_real_escape_string($db_link, $nacht),
	mysqli_real_escape_string($db_link, $freigabe)
);  
 
 var_dump($query); 
 
$db_erg = mysqli_query( $db_link, $query );
if ( ! $db_erg )
{ die('Ungültige Abfrage: ' . mysqli_error());  }



$num_rows = mysqli_num_rows($db_erg);   // Abfragen wieviele Treffer Zeilen es gibt

//echo "$num_rows Zeilen\n ohne Limit ";  // Ausgabe der Zeilen

$menge = $num_rows; 

$query  =   sprintf("SELECT * FROM ResBar " .$sql . "LIMIT $start, $eintraege_pro_seite" ,
	
	mysqli_real_escape_string($db_link, $garten),
	mysqli_real_escape_string($db_link, $kueche),
	mysqli_real_escape_string($db_link, $plz),
	mysqli_real_escape_string($db_link, $ort),
	mysqli_real_escape_string($db_link, $behindert),
	mysqli_real_escape_string($db_link, $nacht),
	mysqli_real_escape_string($db_link, $freigabe)
);  
 
 
 
$db_erg = mysqli_query( $db_link, $query );
if ( ! $db_erg )
{ die('Ungültige Abfrage: ' . mysqli_error());  }

$num_rows_2 = mysqli_num_rows($db_erg); 
$eintraege_pro_seite = $num_rows_2; 
   
 
 echo "<table width='100%' class='altrowstable' id='alternatecolor' >
  <tbody>
  
      <td background='images/leiste-schatten-ausgabetabelle.gif' width='5%' >  Bild                 </td>
      <td background='images/leiste-schatten-ausgabetabelle.gif'>  Lokalname                        </td>
      <td background='images/leiste-schatten-ausgabetabelle.gif'>  Küche                            </td>
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Garten                           </td>
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Ruhetage                         </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Über- <br>nachtung               </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Behinderten- <br>freundlich      </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Telefon                          </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Postleitzahl                     </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Ort                              </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Straße                           </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Homepage                         </td> 	  
   
";




while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
		echo "<tr>";
		echo "<td>". $zeile['bild'] .           "</td>";
		echo "<td>". $zeile['restaurantname'] . "</td>";
		echo "<td>". $zeile['kueche'] .         "</td>";
		echo "<td>". $zeile['garten'] .         "</td>";
		echo "<td>". $zeile['montag']  .' '.  $zeile['dienstag'] .' '.  $zeile['mittwoch'] . ' '.  $zeile['donnerstag'] . ' '.  $zeile['freitag']     .' '               . $zeile['samstag'] . ' '.  $zeile['sonntag'] . "</td>";
		echo "<td>". $zeile['nacht'] .          "</td>";
		echo "<td>". $zeile['behindert'] .      "</td>";
		echo "<td>". $zeile['telefon'] .        "</td>";
		echo "<td>". $zeile['plz'] .            "</td>"; 
		echo "<td>". $zeile['ort'] .            "</td>";    
		echo "<td>". $zeile['strasse'] .        "</td>";  

        // Escaping für Kontextwechsel nach HTML
        $e = function ($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); }; 
        //homepage Anzeige als Link
        echo '<td><a href="' . $zeile['homepage'] . '">' . $zeile['homepage'] . '</a></td>';  		 
		echo "</tr>";
}

 
mysqli_free_result( $db_erg ); 

	 
echo "</tbody></table>";

if ( empty ($num_rows)){
echo " Keinen Treffer in Datenbank, bitte neue Suche";
 }


$wieviel_seiten = $menge / $eintraege_pro_seite;

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

for($a=0; $a < $wieviel_seiten; $a++)
   {
   $b = $a + 1;
   if($start == $b)
      {
      echo "  <b>$b</b> ";
      }
   else
      {
      echo "  <a href=\"?start=$b \"  >$b</a> ";
      }

   }
echo "</div>";

vielen Dank
Gruß
Rainer
 
Habe noch eine Frage:
das
PHP:
require_once ('konfiguration-ResBar.php');
genügt es, wenn man es einmal bzw. an oberster Stelle von der Seite aufruft ?
ich habe mal irgendwo gelesen, dass wenn man weiter unten auf der selben Seite wieder einen Aufruf benötigen würde, kann man den sich sparen, weil der letzte Aufruf wieder hergenommen wird, bis er überschrieben wird.
hoffentlich versteht man das :)
 
Zurück