Verschiedene Header Grafiken je Rubrik

Asso ok ;)

Also wenn du deine Seite mit http://www.xyz.de/index.php?page=test aufrufst, so hast du im PHP, in dem Array $_GET mit der Variable $_GET['page'] den Inhalt test stehen.

Diesen übergibst du dann der Variable $page.

PHP:
$page=$_GET['page'];

Oder du verwendest statt der $page die $_GET['page'].

Sollte jedoch bei dir das Sicherheitsmango noch bestehen, dass der register_global in der php.ini noch ON ist, so würde ich dies so schnell wie möglich selbst umstellen oder von deinem Serverzentrum umstellen lassen, weil sonst der Inhalt test auch ohne dem $_GET['page'] in die Variable $page eingetragen kann.

Wenn du später mal mit MySQL arbeitest, so rate ich dir, die Abfragen wie folgt aussehen zu lassen.

`page` = '".mysql_real_escape_string($_GET['page'])."'

wenn du Inhalte aus der Adresse oder einem Formular verwendest, denn das mysql_real_escape_string() überprüft den Inhalt der Variable.

Solltest du Inhalte von Formularen mit POST übertragen, so verwendest du einfach statt $_GET das $_POST.

Sollte dir noch irgendwas unklar sein, so frag einfach direkt nach, aber mit stichpunkten, was dir an irgendwas unklar war.

Gruß Matze202.
 
hm..

mein alter php code bleibt aber bestehen oder wird er durch deinen ersetzt?
ich blick leider noch nicht so durch ...sorry ..

will jetzt auch nicht, dass du dir zuviel arbeit machst, aber vielleicht schreibst du mir den kompletten code auf?

bin ja froh, dass es überhaupt läuft ..aber wenn es einfacher geht, dann her damit :D
 
Ich vermute mal, dass dies der Code ist, den du meinstest.

PHP:
index.php 

//hier funktioniert es nicht! (keine Bildanzeige) 

<div id="header"><h1>titel</h1>   
  <?php echo "<img src=\"$img\" />
</div>


//hier funktioniert es! (Bildanzeige) 

<div id="nav_container"> 
<?php include ("menu.php");?> 
<?php echo "<img src=\"$img\" />"; ?>  
</div> 


<?php 
$kategorien = array( 
'legosteine' => 'legos.gif', 
'badeschwaemme' => 'schwaemme.gif', 
'brotkruemel' => 'kruemel.jpg' 
); 

$img = $kategorien['brotkruemel']; 

if (!empty($_GET['kategorie']) && isset ($kategorien[$_GET 
['kategorie']])) { 
$img = $kategorien[$_GET['kategorie']]; 
} 

?>

Dass was ich dir nun rate, kannst du ja vielleicht in einem neuen Ordner machen, damit du dir den jetzt funktionierenden Code nicht zerhaust.

Als erstes legst du am besten mal einen Ordner für die Grafiken an, damit es schön übersichtlich wird, denn so wie ich es aus dem Quellcode entnehmen kann, wirdst du keine Unterverzeichnisse verwendet haben. Ich benenne übrigens Grafikordner immer mit dem Namen images und in diesem gebe ich dann eigentlich noch weitere Unterordnet, aber das ist erstmal nicht so wichtig.

Dann benennst die Grafik-Dateien, welche das selbe Format haben, mal mit dem genauen Kategorienamen. Dafür wählst du dir aber das Format aus, welches du am meisten verwendest. In deinem Fall war es ja das GIF-Format.

Kategorie -> jetzige Grafik -> neue Grafik

legosteine -> legos.gif -> legosteine.gif
badeschwaemme -> schwaemme.gif -> badeschwaemme.gif

Die Datei kruemel.jpg hat ja nun ein anderes Format und daher öffnest du diese in einem Grafikbearbeitungsprogramm, womit du die Datei dann als brotkruemel.gif abspeicherst. Somit hat diese Datei nun auch den Kategorienamen "brotkruemel".

Diese Grafik-Daten speicherst du in den Ordner "images", welcher sich in der selben Verzeichnisebene befindet, wie die index.php Datei.

Nun ersetzt du den oberen Inhalt einfach nur durch folgenden:

PHP:
index.php 

// Wenn du ein anderes Dateiformat nimmst, dann solltest du es dann nur noch hier drin ändern.

<div id="header"><h1>titel</h1>   
  <img src="./images/<?php echo $_GET['kategorie']; ?>.gif">   
</div>


<div id="nav_container"> 
<?php include ("menu.php");?> 
  <img src="./images/<?php echo $_GET['kategorie']; ?>.gif">   
</div>

Und schon brauchst du dafür kein extra Array mehr erstellen, sondern bekommst mit jedem anderen Kategorienamen, sofern die Grafik auch vorhanden ist, auch die dazu gehörige richtige Grafik angezeigt.

Zum testen rufst du nun einfach mal folgendes auf:

http://www.deinedomain.de/derordner/index.php?kategorie=brotkruemel
http://www.deinedomain.de/derordner/index.php?kategorie=legosteine

und du wirst sehen, dass es ohne soviel mehr Quellcode geht.

Übrigens, wenn du in einen HTML-Text etwas PHP einfügst wie hier:

HTML:
<div id="nav_container"> 
<?php include ("menu.php");?> 
<?php echo "<img src=\"$img\" />"; ?>  
</div>

so brauchst du nur einmal davor den PHP-Bereich öffnen und dahinter wieder schliesen, wie hier:

HTML:
<div id="nav_container"> 
<?php 
include ("menu.php");
echo "<img src=\"$img\" />"; 
?>  
</div>

So, ich hoffe nun, dass es diesmal etwas verständlicher ist.

Gruß Matze202.

PS.: Ich hoffe es ist trotz, dass es so lang ist noch verständlich und ich habe mich nicht irgendwo doppelt gemoppelt. ;)
 
Also auch dir ein dickes DANKESCHÖN!!

das mit den php tags hab ich längst gemacht, ist ja klar ;)
aber das kam durch das viele testen ...

Grafikordner und Namen ist auch klar ;)
Dazu war noch keine Zeit im Eifer des gefechts..aber ist nun auch fertig!

ich hab´s ja jetzt am laufen mit einem array ..so richtig gecheckt hab ich es nicht!
Deine Version ist wesentlich einfacher vom Verständnis denke ich ..auch wenn ich dazu fragen habe ..

sooo ..

PHP:
index.php  

// Wenn du ein anderes Dateiformat nimmst, dann solltest du es dann nur noch hier drin ändern. 

<div id="header"><h1>titel</h1>    
  <img src="./images/<?php echo $_GET['page']; ?>.jpg">    
</div> 


<div id="nav_container">  
<?php include ("menu.php");?>   
</div>

so sieht nun mein quellcode aus ..
aber woher weiß er denn jetzt welches bild er bei welcher seite nehmen soll?
ich habe ja bei dem array folgendesdrinstehen gehabt, als es funktionierte!

PHP:
<?php  
$kategorien = array(  
'startseite' => 'startseite.jpg',  
'impressum' => 'impressum.jpg',  
'agb' => 'agb.jpg'        // usw.  
);  

if (!empty($_GET['page']) && isset ($kategorien[$_GET  
['page']])) {  
$img = $kategorien[$_GET['page']];  
}  

?>

das lief und ging ja auch ..
dieses script habe ich in jede seite includet ...

hoffe du verstehst was ich meine ..:)

Nur durch : <img src="./images/<?php echo $_GET['page']; ?>.jpg">
weiß er ja nicht welches bild er nehmen soll ..
 
ich habs hinbekommen

ist es richtig, dass ...

ich die grafiken genau so benennen muss wie die 'kategorie'

also bei index.php?page=startseite ...zeigt er automatisch die datei startseite.jpg an ;)

ist ja viel einfacher als ein array ..
jetzt hab ich 3 lösungen!
1x css, 1x array und 1x deine lösung, die ich denke mal behalte :)
 
Genau dies habe ich dir in meinem letzten Post bereits erklärt.

Dann benennst die Grafik-Dateien, welche das selbe Format haben, mal mit dem genauen Kategorienamen. Dafür wählst du dir aber das Format aus, welches du am meisten verwendest. In deinem Fall war es ja das GIF-Format.

Kategorie -> jetzige Grafik -> neue Grafik

legosteine -> legos.gif -> legosteine.gif
badeschwaemme -> schwaemme.gif -> badeschwaemme.gif

Die Datei kruemel.jpg hat ja nun ein anderes Format und daher öffnest du diese in einem Grafikbearbeitungsprogramm, womit du die Datei dann als brotkruemel.gif abspeicherst. Somit hat diese Datei nun auch den Kategorienamen "brotkruemel".

Gruß Matze202.
 
Nabend Matze ;)

so bin zuhause ..aaalso ..ich musste wohl nochmal alleine dahinter steigen ;)

<?php echo $_GET['page']; ?>.jpg">

die 'page'.jpg wird mit $_GET ausgegeben ?

wie kann man diese zeile denn kommentieren?
damit ich weiß was da genau passiert ...;)
 
<?php echo $_GET['page']; ?>.jpg">

die 'page'.jpg wird mit $_GET ausgegeben ?

wie kann man diese zeile denn kommentieren?
damit ich weiß was da genau passiert ...;)

Ich hoff, dass ich dafür nun die richtigen Bezeichnungen wähle, da ich mir das ganze nur selbst angeeignet und nicht wie andere von der Pike auf gelernt habe.

Also als erstes hast du da gerade das GET und .jpg falsch getrennt.

PHP:
<?php // starten des PHP-Inhaltes

?> // beenden des PHP-Inhaltes

echo // ausgeben des darauf folgenden Inhaltes, bis zu dem nächsten Semikolon
mehrzeilige ECHO´s sehen wie folgt aus

echo 'Zeile 1'
       .'Zeile 2 usw.';

$_GET // ist eines der vielen Standartarray, welche das System selbst verwaltet und von dir abgerufen werden können, desweiteren gibt es noch die folgenden, welche ich am meisten nutze:
$_POST
$_SESSION
$_SERVER // Die aktuellen Inhalte dieser Standartarray kannst du dir insgesamt mit folgedem Code ausgeben lassen:
echo nl2br(print_r($_GET, true)); // dazu ersetzt du einfach das $_GET mit der gewünschten.

Um die einfachen Array zu verstehen, stellst du dir am besten die eine Tabelle mit nur einer Zeile vor.

Dieses Array kann man durch ein weiteres Array erneut erweitern und damit kannst du dir dann eine Tabelle vorstellen, die eine beliebige Anzahl von Zeilen und Spalten hat (ob es eine grenze direkt gibt, weiß ich leider noch nicht, aber irgendwann wird spätestens das System ein Ende setzen).

Die Spalten stellst du dir am besten, wie die Bezeichnung des Inhaltes vor und die Zeilen wie der Zähler der Arrays.

Aus einfachen Array kannst du die Inhalte wie folgt aufrufen und ausgeben lassen:

PHP:
echo $_GET['Bezeichung'];

Für die anderen brauchst du dann entweder eine FOR oder WHILE Schleife um Inhalte aus abzurufen.

PHP:
for($i = 1; $i <= 10; $i++){ // Dies gibt dir die ersten 10 Inhalte der Spalte "Bezeichung" und "Text" wieder und trennt Sie durch ein Komma und einem Zeilenumbruch.
echo $_GET['Bezeichung'].', '.$_GET['text'].'<br>';
}

PHP:
while($_GET['Bezeichung'] != NULL){ // Dies gibt dir die alle Inhalte der Spalte "Bezeichung" und "Text" wieder, die einen Inhalt haben und trennt Sie durch ein Komma und Zeilenumbruch.
echo $_GET['Bezeichung'].', '.$_GET['text'].'<br>';
}

Array, Variablen und Funktionen werden immer, wie hier bereits gezeigt, mit einem ." und ". oder .' und '. von den anderen Inhalten, wie HTML-Code in einem ECHO oder einer MySQL-Abfrage getrennt. Sollten aber zweie dieser aneinander liegen, so reicht ein einfacher Punkt zum trennen aus.

Es gibt zwar noch Abfragen wie folgende:
PHP:
echo $_GET['Bezeichung']['Bezeichung2'];
diese könnte man vielleicht dafür verwenden, aber da bin ich mir leider nicht so sicher und getestet habe ich es noch nicht.

Du kannst dich ja aber vielleicht auch mal bissel auf http://www.php.net belesen, da dort vieles beschrieben ist.

So nun bin ich erstmal müde und wünsch euch noch eine gute nacht, wenn weite Fragen sind, dann ruhig einfach wieder Fragen. ;)

Gruß Matze202.
 
Morgen ;)

danke für die erklärungen ...
aber was geschieht denn jetzt genau in folgender Zeile übersetzt für doofe :D
oder haste das jetzt auch schon beschrieben und ich hab´s wieder übersehen oder nicht verstanden ...

PHP:
<?php echo $_GET['page']; ?>.jpg">

und woher weiß der server was 'page' ist? ..ist es vielleicht besser $_POST zu nehmen?
wo wird 'page' festgelegt? ist ja keine variable ..oder einfach nur durch den link?
sprich index.php?page=startseite ...

somit weiß er, dass page= startseite.jpg ist?

anfängerfragen, i know :) aaber ich muss es ja wissen ...:)
 
moin moin

und woher weiß der server was 'page' ist? ..ist es vielleicht besser $_POST zu nehmen?

das Page ist die Variable von dem Array, welche du wie folgt festlegst:

http://www.xyz.de/index.php?page=Startseite

Der Unterschied zwischen $_GET und $_POST ist, dass $_GET in der Adresszeile übertragen wird und $_POST für den User unsichtbar aus einem Formular herraus

HTML:
<form action="index.php" method="GET">
   <input type="text" name="page">
   <input type="submit" name="submit" value="anzeigen">
</form>

http://www.xyz.de/index.php?page=inhaltvonpage

Weitere Variablen mit Inhalten werde durch ein &-Zeichen statt dem ? angehängt.

HTML:
<form action="index.php" method="POST">
   <input type="text" name="page">
   <input type="submit" name="submit" value="anzeigen">
</form>

http://www.xyz.de/index.php

wo wird 'page' festgelegt? ist ja keine variable ..oder einfach nur durch den link?

das 'page' ist keine Variable, sondern ein Teil der Variable $_GET['page'] und es wird durch das:

http://www.xyz.de/index.php?page=Startseite

festgeleget.

sprich index.php?page=startseite ...

index.php (Empfangsdatei) ? page (Variable des $_GET) = startseite (Inhalt der Variable $_GET['page']

somit weiß er, dass page= startseite.jpg ist?

Er weiß nicht, dass page = startseite.jpg ist, sondern er weiß dass $_GET['page'] = startseite ist und das .jpg hängst du einfach im HTML-Teil mit dran.

Gruß Matze202.

PS.: eine bitte habe ich an dich, lies dies bitte wenn nötig nicht nur 1-mal durch, was ich jetzt hier bereits alles gepostet habe und zwar langsam und versuch es zu verstehen, denn mir kommt es so vor, als würdest du es nur überfliegen und dir gar keinen kopf darüber zu zerbrechen, da ich einiges bereits in den vorherigen Posts beschrieben habe oder war das etwa zu undeutlich beschrieben?
 
Zuletzt bearbeitet:
Zurück