php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.09.2005, 13:23  
Benutzer
 
Registriert seit: 15.09.2005
Beiträge: 39
rockinchina
Standard hilfe für richtige Codierung erwünscht

Hallo Leute,

ich bin ein absoluter Anfänger in Sache PHP und MySQL. Hab jetzt mein eigenes Script erstellt mit wohl sehr unprofessionellen Code-Formulierungen. Ich weiß aber, daß bestimmte Aufgaben mit unterschiedliche Methoden viel schneller und sauberer ausgeführt werden können, aber ich hab keine Ahnung wie. Auch mit MySQL Anweisungen kann es manchmal sinnvoller sein, bestimmtes richtiger zu formulieren.

Daher lege ich erst mal meine Codes hier rein, wer Zeit und Interesse hat, mir meine Codes Korektur zu lesen, dafür wäre ich sehr dankbar.

Zur Erläuterung der Codes:
Ich mache ein Webseit mit der Absicht, chinesische Rock Scene auf Englisch vorzustellen. Daher überlege ich einen Datenbank für Bänds zu erstellen und dieser Script unten dient einfach zunächst erst mal zum Anzeigen aller oder bestimmter archivierte Banddaten, auch mit Anzeigesortierung und Seitenverteilung. Suchfunktion hab ich noch nicht eingebaut.

Das ganze läuft auch schon online als test:
http://www.rockinchina.com/test/

Nun hier die Codes:
PHP-Code:
<?php

//set amount of rows to be displayed each page:
$pagerows 20;        
    
include(
"inc_db_inf.php");        //DB infos
mysql_connect($host,$user,$pass);
mysql_select_db($db) or die( "Unable to select database");

//_GET uebernimmt Werte aus den URL Angaben xxx.php?sort=Wert 
$sort $_GET["sort"];            
$Sortmethod $_GET['sortmethod'];

//Ermittelt Werte fuer den Sortiervorgang
if ($sort == "") {
    
$query="SELECT * FROM BandIndex";
} else {
  if (
$Sortmethod == "") { 
      
$sortmethod "ASC"
  } elseif (
$Sortmethod == "DESC") { 
      
$sortmethod "ASC";
  } elseif (
$Sortmethod == "ASC") {
      
$sortmethod "DESC";
  }
  
$query="SELECT * FROM BandIndex ORDER BY $sort $sortmethod";
  
$sorttmp "Sorted by $sort";
}

$result mysql_query($query);
$num mysql_num_rows($result); 

mysql_close();

//Page Header Infos geladen:    
include("inc_header.php");

//Page Codes:
echo '<div class="BandMain">
    <div class="MainHeading">
    [url="admin_index.php"]Band Index All[/url]
    </div>

    

Click on each Columneheader to sort the data, click again to sort reverse.</p>
'
;

//Wenn Sortiervorgang aktive: Sortierweise anzeigen
if ($sort != "") echo "

$sorttmp ($sortmethod)</p>"
;

//Tabellenkopf mit Sortierungsangaben als Links
?>
<table border="2" width="100%">
<tr> 
<td width="40%"><p class="ContentSubHeading"><a href="admin_index.php?sort=BandEN&amp;sortmethod=<? 
echo "$sortmethod"?>">Bandname</a> [url="admin_index.php?sort=BandCN"][chn. Pin Yin][/url]</p></td>
<td><p class="ContentSubHeading"><a href="admin_index.php?sort=Genre&amp;sortmethod=<? 
echo "$sortmethod"?>">Genre</a></p></td>
<td><p class="ContentSubHeading"><a href="admin_index.php?sort=City&amp;sortmethod=<? 
echo "$sortmethod"?>">Origin</a></p></td>
<td><p class="ContentSubHeading"><a href="admin_index.php?sort=Since&amp;sortmethod=<? 
echo "$sortmethod"?>">Since</a></p></td>
<td><p class="ContentSubHeading"><a href="admin_index.php?sort=Status&amp;sortmethod=<? 
echo "$sortmethod"?>">Status</a></p></td> 
</tr>

<?

//Falls in URL angegeben, Wert fuer den aktuellen Page uebernehmen:
$page $_GET['page'];

//Falls nicht angegeben, Page-Wert = 1. Seite:
if ($page == "") {$page 1;}

//Berechnung der Datensatznr., die am Anfang und am Ende einer Seite angezeigt werden sollen.
$pagelastrow $page $pagerows;
$pagefirstrow $pagelastrow $pagerows 1;

//Wenn mehr Datensaetze gefunden als 20 (passt nicht alles auf einer Seite):
if ($num $pagerows) {
//Vorletzte Seitenzahl und letzte DatensatzNr. der vorletzte Seite ermitteln:
   
$pagess = (int)($num $pagerows);
   
$lastpr $pagess $pagerows;
//Gesamtseitenzahl und letzte Datensatznr. der letzten Seite ermitteln:
   
if ($num $lastpr) {
         if (
$page $pagess) {
               
$temp $num $lastpr
               
$pagelastrow $lastpr $temp;
         }
      
$pages $pagess 1;
   } else {
         
$pages $pagess;
   }
} else {
   
$pages 1;
   
$pagelastrow $num;
}

//Werte der auf einer jeden Seite anzuzeigenden Datensaetze ermitteln:
while ($pagefirstrow $pagelastrow) {
    
$id=mysql_result($result,$pagefirstrow,"id");
    
$BandEN=mysql_result($result,$pagefirstrow,"BandEN");
    
$BandCN=mysql_result($result,$pagefirstrow,"BandCN");
    
$Link=mysql_result($result,$pagefirstrow,"Link");
    
$Genre=mysql_result($result,$pagefirstrow,"Genre");
    
$City=mysql_result($result,$pagefirstrow,"City");
    
$Since=mysql_result($result,$pagefirstrow,"Since");
    
$Status=mysql_result($result,$pagefirstrow,"Status"); 

    
?>

//Datenwerte in HTML-Tabelle anzeigen und mit Links versehen, die div. Zwecken erfuellen:    
    <tr> 
    <td width="30%">
       


          <? if ($Link != "") {
               
//Link zu der entsprechenden Bandseite anzeigen falls es exitiert:
             
echo '<a href="http://www.rockinchina.com/'
             echo 
"$Link"; echo '">'
             echo 
"[b]$BandEN[/b]
[$BandCN]</a>"
;
          } else {
             echo 
"[b]$BandEN[/b]
[$BandCN]"
;
          } 
?>
       </p>
    </td>
    <td width="30%">
       


          <? echo "$Genre"?>
       </p>
    </td>
    <td>
       


          <? $LinK "../Szene_$City.html";                        
          
//Link auf die Cityseite verlegen, falls es existiert:
          
if (file_exists($LinK)) {
              echo 
"<a href=\"$LinK\">$City</a>";
          } else {
               echo 
"$CityK";
          }
          
?>
       </p>
    </td>
    <td>
       


          <? echo "$Since"?>
       </p>
    </td>
    <td>
       


          <? echo "$Status"?>
       </p>
    </td>
    </tr>
    <? 

    
++$pagefirstrow;
}

    echo 
"</table>\n

Page(s): "
;
    
//Links zu den uebrigen Seiten anzeigen mit Angaben fuer Sortieranforderungen und Seitenzahlen
    
$p 0;
    while (
$p $pages) {
        ++
$p;
        echo 
"[<a href=\"admin_index.php?page=$p&amp;pages=$pages&amp;sort=$sort&amp;sortmethod=$Sortmethod\">$p</a>] ";
    }
    echo 
"</p>";

//Editors Notes:
echo "

[b]New Functions that work sofar[/b]:

            1) Sort displayed data ASC or DESC by click on the Columne Header.

            2) City Value automatically linked the City Scene Page if exist.

            3) Edit and Delete Data (for Administrators only!).

            4) Add a new Datarecord (for Adnimistrators only!).

            5) Seperate all found data on Subpages (Works also for sorted Data).</p>
            

[b]To Do List[/b]:

            1) Search Function for various properties like Origin, Stlye, Genre, Since etc.

            2) Set display Genre as a Link for Genre-Search-Funktions.</p>
            

[b]Yang's Comment[/b]: it's so fuxxing [b]COOL[/b] 
to have all this running so far!!! I didnt have any knowledge about PHP or 
MySQL before starting this Project, now the baby is growing just fine and I 
hope we can offer you a much comfortable way to access to our data and 
info archive incl. Band Index, Rereases, Gig Dates etc. Since I am not 
finished with all functions on my wish list, this project will remain a test. 
Try to navigate throu all links on the page and report buggs on our forum 
or per Email to [email]yang@rockinchina.com[/email], have fun!</p>"
;

echo 
"</div>\n
</div>\n
</html>\n
</body>"
;

?>
rockinchina ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.09.2005, 13:52  
Benutzer
 
Registriert seit: 15.09.2005
Beiträge: 39
rockinchina
Standard

Noch paar Fragen:

a) Muß ich denn jedes mal den DB connectieren um die selben Daten auf unterschiedlichen Seiten anzuzeigen? Ich hab ja ein Blättern-Funktion eingebaut, aber muß jedes mal die Daten noch mal abfragen, geht es denn einfacher und schneller? Z. B. Daten einmalig abfragen und irgendwo zwischen speichern bis die Daten noch mal abgefragt werden?

b) Verliert ein Variable den Wert, wenn die die PHP Seite noch mal lade (ohne eine Wertveränderungsbefehl zu aktivieren)?
__________________
www.rockinchina.com
rockinchina ist offline  
Alt 17.09.2005, 09:20  
Benutzer
 
Registriert seit: 15.09.2005
Beiträge: 39
rockinchina
Standard

Bemerkung:

ich will ja nicht, daß jemanden mir die ganze Arbeit abnimmt. Nur verstehen ich in manchen Dingen nicht, wie man es machen soll. Daher wäre es sinnvoll wenn irgendeiner mir irgend einen Abschnitt aus obiger Codes entnehmen kann, um mir zu verdeutlichen, was man da besser machen kann.

Danke ...
__________________
www.rockinchina.com
rockinchina ist offline  
Alt 17.09.2005, 12:01  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von rockinchina
Noch paar Fragen:

a) Muß ich denn jedes mal den DB connectieren um die selben Daten auf unterschiedlichen Seiten anzuzeigen? Ich hab ja ein Blättern-Funktion eingebaut, aber muß jedes mal die Daten noch mal abfragen, geht es denn einfacher und schneller? Z. B. Daten einmalig abfragen und irgendwo zwischen speichern bis die Daten noch mal abgefragt werden?

b) Verliert ein Variable den Wert, wenn die die PHP Seite noch mal lade (ohne eine Wertveränderungsbefehl zu aktivieren)?
Das Script hab ich mir jetzt nicht angeguckt sondern will nur mal diese zwei Fragen da beantworten.

Du musst zunächst mal begreifen, wie der HTTP-Server funktioniert.
Jeder Seitenaufruf wird von einer eigenen Instanz des Webservers abgearbeitet. Die einzigen Informationen, die der Webserver zur Verfügung hat, sind die Informationen, die der Client mitschickt.
Das sind:
- die gewünschte URL (Host, Verzeichnis, Datei, evtl. Parameter)
- Informationen über den User-Agent (Browser)
- gesetzte Cookies dieser Website
- Eingabefelder aus einem Formular.

Da wirst Du nirgends was finden, was darauf hindeutet, zu welchem vorhergehenden Aufruf der selben Seite ein neuer Aufruf gehört.
Das kann der gleiche Besucher sein oder ein anderer.

Ein wiederholtes Laden einer Seite sind für den Webserver komplett getrennte Anfragen ohne Bezug zueinander.

Somit ist es erstmal unmöglich, Variablen von einem Seitenaufruf bei einem anderen weiter zu verwenden.

Ebenso ergibt sich daraus, dass Du bei jedem Seitenaufruf eine neue Verbindung zur DB aufbauen musst.
Sobald die Abarbeitung eines Scripts beendet ist, wird diese Verbindung wieder geschlossen.


Wenn Du Daten über mehrere Aufrufe hinweg benutzen willst, solltest Du hier mal nach Cookies und Sessions suchen.
Darin können Variablen länger gespeichert werden.
Evtl. kannst Du damit auch das Ergebnis Deiner DB-Abfrage zwischenspeichern und bei Folgeseiten ausgeben.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 17.09.2005, 20:08  
Benutzer
 
Registriert seit: 15.09.2005
Beiträge: 39
rockinchina
Standard

Zitat:
Zitat von Der_Gerhard
Das Script hab ich mir jetzt nicht angeguckt sondern will nur mal diese zwei Fragen da beantworten. ...
Hallo und vielen Dank für Deine Antwort, das hilf mir schon sehr, diese Dinge besser zu verstehen, denn ich hab bis her kaum was darüber erfahren und weiß auch nicht so genau, wo ich über solche grundlegende Dinge nachlesen kann.

Cookies kenne ich von Foren her, von Sessions hab ich nur etwas erfahren, als ich mir einige User-Management-Codes und Tools durchgesehen habe, verstehen tu ich noch nicht. Aber wird wohl schon werden.

Ich schätze, es macht wohl auch kaum Sinn gelesene Daten aus einer DB per Session zu speichern, das würde wohl den Aufwand, DB neuzuverbinden, gleich kommen.

Inzwischen hab ich auch schon den Suchfunktion in meinem Script eingebaut, allerdings erst mal nur einfache Suche nach einem Kriterium, zu Wildcards usw. bin ich noch nicht vorgestossen.

Vielen Dank für Deine Antwort.

Ich hätte noch eine Frage:

Ich habe kaum mit Arrays gearbeitet, daher die Frage, würde z. B. die Manipulation einer Zeichenkette mit einer Array-Lösung schneller verarbeitet als z. B. mit einer verschachtelten Schleife? Ich neige nämlich dazu, alles mit If, For oder While zu lösen ...
__________________
www.rockinchina.com
rockinchina ist offline  
Alt 17.09.2005, 21:58  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ob es sich lohnt, die Ergebnisse der durchgeführten Suche zu speichern hängt von der Komplexität der Abfrage ab.
Normalerweise ist es ausreichend, bei jedem Seitenaufruf neu zu suchen. Durch Angabe von LIMIT wird dann nur der entsprechende Bereich ausgewählt.

Sessions werden Je nach Konfiguration entweder in einer DB verwaltet oder in einer Datei.
Vom Browser wird dann die Session-ID als Cookie oder als Parameter übergeben. Details dazu findest Du, wenn Du hier mal nach einem Tutorial für Sessions suchst.

Zu Deiner neuen Frage:
Ich hab leider keine Ahnung, was Du machen willst, was Du unter der Array-Lösung versteht und wie die verschachtelten Schleifen aussehen soll.

If, for und while wirst Du als grundlegende Kontrollstrukturen fast in jedem Script brauchen.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 19.09.2005, 04:53  
Benutzer
 
Registriert seit: 15.09.2005
Beiträge: 39
rockinchina
Standard

Wie Du vielleicht an meinem Script siehst, LIMIT behersche ich noch nicht und mein Paging-Funktion stellt einfach eine bestimmte Menge an Datenzeilen von den gesamt gelesenen Daten auf einer Seite dar, anstatt die Datenmenge schon bei dem Einlesen zu limitieren. Daher läuft mein Script vielleicht langsamer als erwartet.

Wegen Array, ich bin mir nicht sicher, ob in PHP so was wie Select Case (wie im VB) gibt, aber Array in Kombination mit einer For Schleife würde wohl die Variablen auf ähnlicher Weise bearbeiten. Mir fallen jetzt konkret kein Beispiel ein zur Erläuterung meiner Frage.

Was genau kann so ein Skript beschleunigen oder verlangsamen, jetzt auf die Art des Coding betrachtet? Gilt der Grundsatz, je weniger Berechnungs/Befehlsschritte desto schneller der Script oder verhalten sich unterschiedliche Befehlsmethoden auch unterschiedlich in der Geschwindigkeit?

z. B.

$x = 1
$x = $x + 1
echo $x

oder

$x = 1
echo ++$x

würden sich beide Schreibweise theoretisch gleichermaßen verhalten oder läuft das zweite etwas schneller?
__________________
www.rockinchina.com
rockinchina ist offline  
Alt 19.09.2005, 08:51  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Hmmmm stimmt. LIMIT magst DU wohl noch nicht.
Du solltest dringend mal nachgucken, wie das funktioniert. Ist auch keine schlimme Sache.
Mach einfach "LIMIT $pagefirstrow, $pagerows" hinter die Abfrage.

Auf jeden Fall solltest Du die unzähligen Aufrufe von mysql_result() eliminieren.
Hol Dir lieber mit mysql_fetch_assoc() eine Zeile nach der anderen und nicht jedes Feld einzeln.
Damit dürftest Du ne Menge Zeit sparen.

Zur Optimierung:
Die genannten Operationen dürften sich nicht nennenswert unterscheiden.
Bei der zweiten muss PHP wohl einmal weniger in nach der Variable $x suchen, aber sonst ist da kein Unterschied.
Wichtig ist, dass man nicht in einer Schleife unnötig Werte ermittelt, die sich nicht verändern und somit auch schon vorher einmalig berechnet werden können.
Außerdem solltest Du nicht die ganze DB auslesen, wenn Du nicht alle Spalten brauchst. SELECT * ist also nicht so doll.

Ach ja:
Meinst Du das mit $Sortmethod und $sortmethod wirklich ernst? Zwei derart ähnliche Variablennamen sind ganz sicher keine gute Idee.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 19.09.2005, 15:23  
Benutzer
 
Registriert seit: 15.09.2005
Beiträge: 39
rockinchina
Standard

Hai,

Danke fuer Deine Worte, mit LIMIT hab ich mich noch nicht befasst, aber ich komme wohl nicht drum herum. Ueber mysql_fetch_assoc() bin ich heute zufaellig gestossen, hab auch noch nicht alles verstanden, aber hab auch nicht wirklich Zeit dafuer genommen. Mir steht noch einiges bevor.

Hab heute die Sortierung und Seitenteilung jeweils in Funktionen auf einer externe Seite abgeleg und durch include() eingelesen. Mir faellt auf, dass auf dieser Weise alles etwas langsamer laeuft.

Das mit SELECT * weiss ich jetzt schon, aber bin noch nicht dazu gekommen, um das zu aendern, weil ich erst mal all die anderen Fragen verstehen wollte. Ausserdem hatte ich wirklich in dem Fall alle Spalten einzulesen gebraucht, tut also jetzt noch nicht so weh.

Haha, oh je, ja, dass mit den $Sortmethod und $sortmethod hab ich tatsaechlich ernst gemeint und bin deswegen heute bei der Codeumaenderung auf oben erwahnten Function-Basis (nur mal ausprobieren) etwas auf die Nase gefallen. Jetzt hab ich $Sortmethd zu $SortMethD umgeaendert, hehe, aber ne gute Idee wird es trotzdem nicht, aber jetzt bin ich ja schon eines besseren gelernt.

Schade, dass ich jetzt nicht so viel Zeit habe, um mich ausgiebiger in die Materie reinzulesen. Aber bin schon stolz :P drauf, was ich in zwei Wochen von Null zu dem vorgestossen bin, was jetzt bei mir auf dem Server laeuft.

Also, Hausaufgabe fuer die naechsten paar Tage, LIMIT schlau machen und mysql_fetch_assoc() ausprobieren.

Wenn ich damit erfolgreich war, werde ich die geaenderten Codes hier rein tun.

ciao. Yang
__________________
www.rockinchina.com
rockinchina ist offline  
Alt 19.09.2005, 17:30  
Benutzer
 
Registriert seit: 15.09.2005
Beiträge: 39
rockinchina
Standard

Gibt es eine direktere Moeglichkeit, die Gesamtzeilenanzahl einer Tabelle zu ermitteln ausser mit "SHOW TABLE STATUS FROM"?

Hab naemlich gemerkt, dass mein
<? $num = mysql_num_rows($result); ?>
kein Sinn mehr macht, wenn ich beim SELECT-Befehl mit LIMIT angeben. Denn danach wird immer $num <= 20 sein.

Also muss ich irgendwie die Gesamtzeilenanzahl einer Tabelle herausfinden, aber hab nur "SHOW TABLE STATUS FROM" gefunden und das liefert wohl ein Array Wert, den ich wieder mit mysql_fetch_arrey() auseinander nehmen muss. Oder?
__________________
www.rockinchina.com
rockinchina ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datenbanktabelle erstellen - brauche Hilfe Raccoon PHP Tipps 2008 1 14.06.2008 11:03
[Erledigt] Hilfe: Projektabreit Informatik und Technik bitte helft uns. Off-Topic Diskussionen 31 05.04.2006 18:25
[Erledigt] HILFE HILFE HILFE mysqladmin.exe fehlt Datenbanken 7 20.12.2005 14:00
[Erledigt] Hilfe mit encoded php-Files PHP-Fortgeschrittene 9 02.11.2005 16:16
brauche sehr schnell und dringend hilfe Beitragsarchiv 13 24.10.2005 13:11
HILFE ! Brauche ganz dringend hilfe! PHP Tipps 2005-2 2 10.10.2005 23:08
Hilfe, Ich brauche hilfe! Kevin PHP Tipps 2005-2 2 27.09.2005 19:31
Hilfe bei kleiner Funktion PHP Tipps 2005-2 1 24.08.2005 09:35
[Erledigt] VARIABLEN WERDEN NICHT RICHTIG VERARBEITET!!!! HILFE PHP Tipps 2005-2 6 02.07.2005 18:32
[Erledigt] Hilfe! If Tags werden Ignoriert PHP Tipps 2005 10 16.05.2005 10:16
[Erledigt] HILFE PHP Tipps 2004-2 1 16.12.2004 20:49
PHP, Frontpage -----> HILFE!!!! HTML, Usability und Barrierefreiheit 4 30.11.2004 15:00
Suche -dringend- Hilfe zu einem Smily Mod! <- HiLFE - :-) PHP Tipps 2004-2 0 07.11.2004 13:50
[Erledigt] Domainnamen in Apache bekanntgeben HILFE Server, Hosting und Workstations 3 12.08.2004 13:48
Brauche Hilfe - kenne mich nicht aus - zahlen auch dafür Beitragsarchiv 1 09.08.2004 16:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
codieren set_display as, php webseiten einlesen kodierung, pagefirstrow pagelastrow, codierung php kyrillisch

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.