Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Daten mit oder ohne Datenbank abfragen?





Frage

Moin, ich würde gerne, daß der User aus einer Auswahlliste einen Begriff auswählen kann und ihm daraufhin eine Seite mit den Details zm Begriff ausgegeben werden kann. Dazu hatte ich folgende Ideen: A Mit einer Datenbank zu arbeiten, in der auf dem Server alle Begriffe und Begriffsdaten gespeichert sind und diese per "select" auf Anfrage ausgeben zu lassen. B Für jedes Begriff eine einzelne Webseite mit allen Details zu erstellen und einfach nur mit dem entsprechenden Begriff verlinken und somit ohne Datenbank auszukommen. Da es sich um sehr viele Begriffe mit sehr vielen Kategorien usw. handelt, überlege ich, was nun angebrachter ist. --> Was meint ihr, welche Vor - und Nachteile die beiden Methoden haben oder vielleicht habt ihr auch noch andere Ideen, wie man das verwirklichen kann. Ich freue mich auf eure Ideen Gruss Mel

Antwort 1 von disco

moin

der vorteil von einzelnen seiten ist, dass es (für wenige seiten) schnell geht und ohne großen auffwand und kenntnisse eingesetzt werden kann. für kleine seiten mit wenig änderungen ist sowas vorzuziehen. allerdings sind diese vorteile schnell hinfällig wenn die seiten oft geändert werden müssen und es mehr werden. "mehr" muss nicht gerdade viel sein. jeden tag 10 seiten per hand zu ändern kann auch sehr viel zeit in anspruch nehmen.

da hat dann eine DB ihre vorteile. bei dynamischen veränderungen kommt man kaum ohne aus. zwar ist der aufwand beim ertsellen höher, aber dafür wird dann später viel zeit gespart. inhalte (neudeutsch: der content-teil) kann sehr einfach ausgetauscht werden. selbst die umstellung auf eine andere sprache ist ohne änderungen auf der eigentlichen php-seite möglich...

g,
disco

Antwort 2 von Supermax

Ich würde auf jeden Fall eine Datenbank verwenden, aus der "quasi-statische" Seiten erstellt werden, d.h. nur bei einer Änderung am Inhalt werden jene Seiten, die sich geändert haben, anhand der Datenbank neu erstellt. Das verringert nicht nur die Serverlast durch die Datenbank (ich weiss ja nicht wieviele Zugriffe pro Tag deine Seite haben wird), sondern ist auch Suchmaschinen-freundlicher.

Antwort 3 von Mel

Danke Euch für eure Gedanken und Empfehlungen.
Ihr habt mich von der erstellung einer Datenbank überzeugt.
Dann mach ich mich mal an ne Datenbank heran ;-)

Danke Euch und einen schönen Abend noch
Gruss Mel

Antwort 4 von Nessus

Hi,

hatte ich mal gemacht:
<html>
<head>

</head>
<body  bgcolor="#033780" text="white"  leftmargin="0" marginwidth="0" ><p STYLE="margin-bottom: 0cm">
<!-- beginn hauptinhaltstabelle-->

<div align="center">
	<table border="0" width="50%" id="table1">
<tr>
<?php

$host     = "localhost";  // MySQL - Zielrechner.
                          // Normallerweise ist es "localhost", bzw.
                       // synonym "127.0.0.1", also der Rechner,
                          // auf dem auch _dieses_ Script läuft.
$user     = "xxx";         // Dein Userlogin.
$password = "xxx";      // Dein Datenbankpasswort.

$database = "xxx";  // Gewünschte Datenbank
                                 // innerhalb von MySQL
$table    = "wissen";    // Der Name der Datenbanktabelle


$kurzzeichen=$abc;
if(empty ($abc))
{
$kurzzeichen ="A";
}

foreach(range(´A´, ´Z´) as $letter) {
echo " <a href=".$_SERVER[´PHP_SELF´]."?start=".$newStart
  ."&abc=".$letter
      .">$letter</a>";
}



echo"<tr><td><br><b>";
echo"</b></td></tr>";
echo"<tr><td><br><br><b>Begriffe die mit $kurzzeichen beginnen:<br></b></td></tr>";




// Datendefinition für die Clientausgabe
$start = (isset($start)) ? abs((int)$start) : 0;
$limit = 2;                     // Datensätze pro Ausgabeseite

// Verbindung zu MySQL-Datenbank herstellen oder sterben.
@mysql_connect($host,$user,$password)
   or die("Abbruch: Verbindung zu ´$host´"
         ." konnte nicht hergestellt werden.");

// Benötigte Datenbank auswählen oder sterben.
@mysql_select_db($database)
   or die("Abbruch: Datenbank ´$database´ konnte nicht"
         ." selektiert werden.<br><br>MySQL sagt: ".mysql_error());

// Feststellen der Anzahl der verfügbaren Datensätze.
$resultID = @mysql_query("SELECT COUNT(´$abc´) FROM ".$table);
$total    = @mysql_result($resultID,0);

// Ggf. $start korrigieren (falls Parameter in
// der URL manipuliert wurde)
$start    = ($start >= $total) ? $total - $limit : $start;
//$query    = "SELECT name, kurz FROM ".$table." WHERE (`namensdb`.`kurz` = ´$kurzzeichen´) LIMIT ".$start.",".$limit;
// Datenbankabfrage ausführen.
$query    = "SELECT * FROM ".$table." WHERE (`wissen`.`abc` =´$kurzzeichen´ and `wissen`.`test` =´0´ ) ORDER BY `begriff` ASC LIMIT ".$start.",".$limit." ";
$resultID = @mysql_query($query);
// Ergebnisse lesen und an den Client ausgeben

  while($row = mysql_fetch_array($resultID))
  {

$abc = $row[´abc´];
$begriff = $row[´begriff´];
$erklaerung = $row[´erklaerung´];
$ww = $i +1;
echo "<tr><td><b><i><br>$begriff:</i></b></td><td></td></tr>";
echo "<td>$erklaerung<br><br></td>";
             ++$i;
             }
 


Antwort 5 von Nessus

//Count Daten

$query    = "SELECT COUNT(*) as anzahl FROM `wissen` WHERE (`wissen`.`abc` =´$kurzzeichen´)";
   $anzahlDs1 = mysql_query( $query ) or die( mysql_error() );
    $anzahlDs2result = mysql_fetch_assoc($anzahlDs1);
    //echo "davon ".$anzahlDs2result["anzahl"]." mit \"$kurzzeichen\"";
	

$query    = "SELECT COUNT(*) as anzahl FROM `wissen`";
   $anzahlDs1 = mysql_query( $query ) or die( mysql_error() );
    $anzahlDs1result = mysql_fetch_assoc($anzahlDs1);
$proz= $anzahlDs2result["anzahl"]/($anzahlDs1result["anzahl"]/100);
	$proz2 =substr($proz, 0, 5);
    echo "<tr><td><br><font size=\"1\">Anzahl der Datensätze: ".$anzahlDs1result["anzahl"]." davon ".$anzahlDs2result["anzahl"]." mit ".$kurzzeichen." = ".$proz2." % </font></td></tr>	</table><br>";

// Zurück- und Vorblättern
if ($start > 0)
{
  $newStart = ($start - $limit < 0) ? 0 : ($start-$limit);
  echo "<a href=".$_SERVER[´PHP_SELF´]."?start=".$newStart
      ."&abc=".$kurzzeichen
      .">&lt;&lt; zurück </a>";
}

if ($start + $limit < $total)
{
  $newStart = $start + $limit;
  echo "<a href=".$_SERVER[´PHP_SELF´]."?start=".$newStart
  ."&abc=".$kurzzeichen
      ."> vor &gt;&gt;</a>";
}

// Die benutzte (nichtpersistente) Verbindung zu der MySQL-Datenbank,
// wird nach dem Script-Ende automatisch geschlossen.
// That´s it.
echo"<br>";
include("./wisseneintrag.inc.php");

?>

</body>

</html>


Antwort 6 von Nessus

Anbei noch der SQL-Code für die Tabelle:

-- 
-- Tabellenstruktur für Tabelle `wissen`
-- 

CREATE TABLE `wissen` (
  `abc` enum(´A´,´B´,´C´,´D´,´E´,´F´,´G´,´H´,´I´,´J´,´K´,´L´,´M´,´N´,´O´,´P´,´Q´,´R´,´S´,´T´,´U´,´V´,´W´,´X´,´Y´,´Z´) NOT NULL default ´A´,
  `begriff` varchar(100) NOT NULL default ´´,
  `erklaerung` text NOT NULL,
  `test` enum(´0´,´1´) NOT NULL default ´0´,
  UNIQUE KEY `begriff` (`begriff`)
) TYPE=MyISAM;


HTH

Nessus

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: