Frage zu Stylesheet/PHP

wapplegraph

Normande
Registriert
12.04.06
Beiträge
571
Hallo

Mache nun meine erste Seite mit php. Dies brauche ich aber eigentlch nur für den Inhaltwechsel.

Nun aber Frage Stylesheet: Ich möchte, dass alle <a> im div#links diesen und diesen Abstand haben. Wie kann ich das angeben?

Code:
[COLOR="Red"][B]a div#links[/B][/COLOR]{

padding-left:20px;
}

Wie kann ich den Zwischenabstand meiner Links bestimen?
Mit padding-left stimmt ja dann der erste Link nicht, d.h. hat auch diesen Abstand vom div.

Nun noch glaube ich eine eher lächerliche Frage, doch diese habe ich irgendwie nirgends gelesen: Wenn man auf diesen Links klickt so soll diese und diese Variable übergeben werden.


Danke wapplegraph
 
Zuletzt bearbeitet:

Herr Sin

Sternapfel
Registriert
05.01.04
Beiträge
4.990
Variable übergeben:
Code:
<a href="dahin.php?variable=4">Link</a>
 

wapplegraph

Normande
Registriert
12.04.06
Beiträge
571
Wie kann ich etwas z.B. ein Bild oben rechts in einer Ebene platzieren?
mit padding-right:0px; padding-top:0px; geht es nicht.

wapplegraph
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Zunächst musst Du der Ebene Ausmaße zuweisen, damit die Kindobjekte innerhalb dieser Ebene auch wissen, was mit "links oben" oder "rechts unten" gemeint ist. Hast Du zum Beispiel eine große Fläche mit himmelblauem Hintergrund auf Deiner Seite, würde das mit CSS so formuliert:
Code:
   body { text-align: center }
   div#grosse_flaeche {
        width: 800px;
        margin: 0 auto;
        text-align: left;
        background-color: #9cf;
   }
Zunächst gebe ich dem Dokument (body) eine insgesamt zentrierte Ausrichtung. Das brauch ich, damit die himmelblaue Fläche auch im Internet Explorer mittig ausgerichtet ist.

Dann wird die ein Div mit der Id »grosse_flaeche« angesprochen, welches 800 Pixel Breite hat, innen links ausgerichtet ist und, wie gesagt, einen himmelblauen Hintergrund hat. CSS-konform ist der Außenrand (margin) oben und unten 0 (beachte die Kurzschreibweise) sowie links und rechts automatisch, was »automatisch« dazu führt, dass diese Fläche in der Mitte der HTML-Seite liegt (horizontale Mitte).

Wenn Du nun innerhalb dieser Spalte etwas links oben ablegen möchtest, also ein Bild zum Beispiel, nennst Du das Bild im Quelltext einfach zuerst.

Oder Du richtest das Bild mit einer Positionierung dort aus.

Oder Du gibst dem Bild die Flussanweisung, es solle links von anderen (Text-)Objekten schweben.

Wenn Du es positionieren möchtest, kannst Du es so selektieren (achte auf die Reihenfolge der »Selektoren«):
Code:
...
div#grosse_flaeche img#dasbild {
    position: relative;
    left: 0;
    top: 0;
}

Das ist nur eine Möglichkeit von vielen. In diesen Beispielen verwende ich IDs, Du kannst aber, wenn Du die Stile wiederverwenden möchtest genausogut Klassen verwenden, da IDs an sich nur einmal vorkommen sollen, damit Sie zum Beispiel im DOM per JavaScript angesprochen werden können (getElementById()).
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Also wenns im eigenen Dokument ist so muss ich auch noch das Dokument angeben?

Merci Jonas

Im eigenen Dokument arbeitest Du in PHP vorzugsweise mit der superglobalen Variable »$_SERVER«. Hierbei handelt es sich um ein assoziatives Array (die Indizes sind Wörter und keine Zahlen), welches Dir immer zur Verfügung steht. Zum Beispiel enthält »$_SERVER['PHP_SELF']« immer den Pfad zur aktuellen Datei (also der Name der aktuellen Skript-Datei). Welche Überraschungen das Array $_SERVER für Dich bereit hält siehst Du entweder mit
Code:
phpinfo();

oder, wenn's nicht so ganz den Rahmen spregen soll, mit einem einfachen Variablen-Dump:

Code:
echo "<pre>\n", print_r($_SERVER), "</pre>\n";

Zusatz: Jetzt kannst Du den einen Link in das eigene Dokument zum Beispiel so formulieren:

Code:
<?

    printf("<a href=\"%s?nummer=5>Link</a>",
        $_SERVER['PHP_SELF']    // ersetzt %s);

?>

Im selben Skript hast Du nun, einen Seitenaufruf später, den Wert $_GET['nummer'] mit 5 zur Verfügung.
 

wapplegraph

Normande
Registriert
12.04.06
Beiträge
571
Hallo möchte nochmal auf meine erste Frage zurückkommen. Geht das?

Und habe ein blöderes Problem: ein div lässt sich nicht über ein Blid verschieben, obwohl der z-index grösser ist. Hilfe!

wapplegraph
 

wapplegraph

Normande
Registriert
12.04.06
Beiträge
571
Noch ein Problem:

Habe ein div, dies ist unter einem beweglichen div mit php Inhalt angeordnet. Es sollte immer einen Abstand von 30px haben, doch sobald ich den Inhalt der oberen Box wechsle, rutscht mein unteres dic plötzlich über das andere.

Code:
	<div id="bottom">	Server by <a href="http://www.nesto.ch" target="_blank">Nesto-Software AG </a><br />
			Webmaster: <a href="mailto:[email protected]">Jonas Eichenberger</a>
			&copy; Copyright 2006 by Nesto-Software AG, Wapplegraph <br />
			Bilder &copy; by Nesto Software AG, Thomas &amp; Jonas Eichenberger<br />
	</div>
Code:
				div.inhalt	{
				
				margin-top:70px;
				margin-left:25%;
				margin-right:25%;
				margin-bottom:40px;
				width:750px;
				text-align:left;
				z-index:4;
				}
				
				
				#bottom	{
				margin-left:25%;
				margin-right:25%;
				margin-bottom:50px;
				padding-top:20px;
				border-top-color:#000000;
				border-top-style:solid;
				width:750px;
				text-align:left;
				z-index:3;
				
				}


wapplegraph
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Beide Bereiche (DIVs) dürfen sich ja auch überlagern, da sie in unterschiedlichen Ebenen stattfinden (z-index). Nebenbei: wenn Du rechts und links einen gleichförmigen Abstand haben möchtest, kannst Du auch dem Bereich eine Breite angeben width: 75%; und rechter und linker Rand auf »automatisch« stellen margin: 0 auto (oben und unten: 0; rechts und links: auto).
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Tscha,... Kannst Du die betreffende WebSite irgendwo veröffentlichen? Das müsste ich mir im Detail anschauen.
 

wapplegraph

Normande
Registriert
12.04.06
Beiträge
571
Ok habe es hochgeladen.

Hier

Mir ist aufgefallen:

schreibe ich z.B. tr .blabla{}
so klappt es, bei tr.blabla{} klappt es nicht.

Bei einem anderen Dokument ist es gerade umgekehrt.

wapplegraph

PS. Das mit den Zeilen geht beim Safari nicht! Muss man auch schon für den Safari noch extra programmieren?
 
Zuletzt bearbeitet:

wapplegraph

Normande
Registriert
12.04.06
Beiträge
571
Hallo

Das Problem mit der überlager bzw. überspringen habe ich immer noch. Könnte mir nocheinmal jemand gute Ratschläge geben?
Oben habt ihr den Link zur momenanen Seite.

Das Problem mit der Zeile beim Safari habe ich gelöst. Habe da gemerkt, dass Safari nicht gerade unkeikel ist. o_O

Nun noch eine dritte Frage zu einer PHP abfrage.

Die Abfrage sollte heissen:

Code:
Wenn Variable section=movie übergeben wird so füge dies ein, ist diese Variable nicht übergeben, füge nichts ein, doch am Anfang wo garnichts übergeben ist füge wieder dies ein.

Man kann ja nicht schreiben
else {
include movie.php
}

da ja sonst dies immer eingefügt wird und dies will ich ja nicht.
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Das stimmt nicht ganz, denn include und include_once verhalten sich nicht so, dass der Code immer eingefügt wird. Theoretisch kannst Du durchaus die Inklusion abhängig machen von einer Bedingung (nicht so bei require und require_once).

Es ist nur ziemlich schwer wartbarer Code, den Du dann produzierst. Einfacher ist es, zu den einzelnen Ausgaben zum Beispiel eine Methode (function) zuzuordnen, so dass Du zunächst alle Deine Ausgabebibliotheken einfügt (include) und anschließend bei Bedarf aufrufst. So kann der Zend-Kern Deine Skripte auch ziemlich effizient kompilieren.
 

wapplegraph

Normande
Registriert
12.04.06
Beiträge
571
Das stimmt nicht ganz, denn include und include_once verhalten sich nicht so, dass der Code immer eingefügt wird. Theoretisch kannst Du durchaus die Inklusion abhängig machen von einer Bedingung (nicht so bei require und require_once).

Es ist nur ziemlich schwer wartbarer Code, den Du dann produzierst. Einfacher ist es, zu den einzelnen Ausgaben zum Beispiel eine Methode (function) zuzuordnen, so dass Du zunächst alle Deine Ausgabebibliotheken einfügt (include) und anschließend bei Bedarf aufrufst. So kann der Zend-Kern Deine Skripte auch ziemlich effizient kompilieren.

Huu

Das ist für mich noch zu hoch, doch ich widme mich diesem dann sofort.

Ohne dieses Filmchen, kann die Seite leben, mit dieser Überlagerung nicht.
Wenn mir jemand bei dem helfen könnte, so würde ich die Seite soweit fertigstellen, und dann mich als Dessert dem Skript zuwenden.

wapplegraph
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Huu

Das ist für mich noch zu hoch, doch ich widme mich diesem dann sofort.


Ok, dann statt dessen ein Lösungsansatz zum obigen include-Problem. Du kannst, wenn Du's einfach halten möchtest einen »Wrapper« bauen, der die Inhalte je nach Anforderung zusammenstrickt:
Code:
<?php
    $Templates = array ('Start' => 'start.inc.php',
                                 'Produkte' => 'produkte.inc.php',
                                 'Kontakt' => 'kontaktformular.inc.php');
    // so kannst Du Aktionen mit Deinen Template-Dateien mappen
    
    // und jetzt gibst Du ein Menue aus, das kommt ja immer oben dran
    print('<ul id="menu">\n');
    foreach ($Templates as $schluessel => $dateiname) {
        printf ("<li><a href=\"%s?action=%s\">%s</a></li>\n", $_SERVER['PHP_SELF']
                               , strtolower($schluessel)
                               , $schluessel
                );
    }
    printf('<ul>\n');


    // vermutlich wurde schon ein Menuelink angewaehlt, da schaun wir mal nach:
    if (!empty ($_GET['action'])) {
        $_template = $Templates[$_GET['action']];
        if (is_readable($Templates[$_GET['action']]) {
            include_once ('/pfad/zum/template/' . $_template);
        }
    } else {
        include_once ('/pfad/zum/standardtemplate.inc.php');
    }
?>
(in der Kantine getippt und nicht getestet)

Jetzt gibt es noch zu bedenken, dass die Dateien, die Du per Include in den ausführbaren Code hinzufügst, Datei-Endungen mit .php haben, damit nicht jemand den Dateinamen errät (zum Beispiel: 'dbconnect.inc'), und dann diese Datei einfach mal im Browser direkt adressiert. Lautet die Datei-Endung dann nicht auf '.php', erhält er den Quelltext angezeigt. Ist hier noch ein Datenbank-Passwort enthalten wird's schnell aufregend (und danan einsam).
 

wapplegraph

Normande
Registriert
12.04.06
Beiträge
571
Merci

Du tippst da ja schnell solche komplexen Sachen merci.

Wie kann ich - Werte verhindern, und position:absolute? D.h. es musst trotzdem eine überlagerung stattfinden.

Ich habe eine Ebene mit einem Hintergrundbild, unter diese Ebene muss eine zweite Ebene, die aber etwa 50px oberhalb vom unteren Rand der oberen Ebene positioniert sein sollte.

wapplegraph