 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
14.10.2004, 15:18
|
#1
|
|
TP-Member
Registriert seit: Jan 2004
|
Mit PHP Dateiname anzeigen
Hallo,
Nach einer lästigen und gleichermaßen erfolglosen Suche in der PHP.net Datenbank und in diesem Forum habe ich mich entschlossen, meine Frage (bzw. meine zwei Fragen) per neuen Thread direkt an euch zu wenden:
1. Gibt es mit PHP eine Möglichkeit, den Dateinamen einer aktuellen Datei zu definieren?*
Sprich: Die Datei 12345.php soll eine Funktion, ein Script oder was auch immer enthalten, welche/r/s in diesem Fall 12345.php (oder 12345) wiedergibt.
-> Damit verknüpft: 2. Diese Frage bezieht sich eher auf MySQL, doch ist sie mit der oberen eng verknüpft: Habe ich den Dateinamen erhalten, möchte ich in meiner MySQL Datenbank eine festgelegte Tabelle in der Spalte "url" durchsuchen und die Zeile, deren Inhalt der Spalte "url" mit dem Dateinamen der aktiven Datei identisch ist, soll komplett ausgegeben werden.
Wie man Daten aus MySQL Datenbanken ausgibt usw. weiß ich, daher möchte ich auch nur einen richtigen Gedankengang wissen und nicht einen kompletten Codeschnipsel bekommen, den ich per "Copy & Paste" einfügen soll.
Für alle Neugierigen unter euch noch ein wenig Hintergrundwissen zu meinem Vorhaben: Ich habe eine Tabelle in einer MySQL Datenbank erstellt, die drei Spalten (eigentlich vier, doch "ID" zähle ich hier nicht mit) enthält: "titel", "url" und "content". Diese Tabelle nennen neunzehn Zeilen ihr Zuhause: Alle haben sie einen Wert in der Spate "url", wie auch reale Daten in einem bestimmten Ordner auf einem bestimmten Webserver existieren. Das führt dazu, dass ich in jede Datei einfach nur immer wieder das gleiche Script einbauen kann, welches sagt:
1. Dateiname = ABC
2. Suche in der Datenbank 111 und der Tabelle 112 in der Spalte 113 nach der Zeile mit dem Inhalt ABC und gebe speichere alle Spalteninhalte dieser Zeile in Variablen.
3. Include des HTML-Inhalts der Seite und Ersetzen des Contents und des Titels mit denen aus der Datenbank.
Volià. Das ganze ist eigentlich sehr simpel. Es wurde übrigens nur zum Auslagern der Inhalte in eine Datenbank zurückgegriffen, da der Content dynamisch ist und immer wieder (aber unaktuell) von einem selbstgeschriebenem kleinen CMS bearbeitet wird.
So, nun seid ihr an der Reihe, ich bitte um Hilfe!
_________________________________________________
*Hier ist nicht gemeint, dass das Skript den Dateinamen bestimmt, sondern lediglich, dass es ihn "herausfindet"!
Geändert von Galen (14.10.2004 um 22:28 Uhr).
|
|
|
14.10.2004, 22:41
|
#2
|
|
TP-Veteran
Registriert seit: Feb 2002
|
In der Variable $_SERVER['PHP_SELF'] findest Du den Pfad inkl. Dateinamen.
Z.B. foo/bar.foobar.php
Und nun schau Dir mal die Funktion basename an -> http://de.php.net/manual/de/function.basename.php
__________________
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/
|
|
|
14.10.2004, 22:43
|
#3
|
|
TP-Insider
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
|
1. $_SERVER['PHP_SELF'] ist die globale variable, die den dateinamen der aufgerufenen datei enthaelt
2. klingt logisch, auch wenn ichs so noch nie gemacht hab. modifiziere deine abfrage einfach mit WHERE (WHERE url = $_SERVER['PHP_SELF'] - auch wenn es jetzt doch n codeschnipsel ist  )
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
|
|
|
14.10.2004, 23:48
|
#4
|
|
TP-Senior
Registriert seit: Jun 2004
Ort: leipzig
|
zu 2.:
SELECT * FROM `table` WHERE `url` = '{$_SERVER['PHP_SELF']}'
__________________
BeCreated - Geduld und Zeit für Ihre Wünsche
|
|
|
15.10.2004, 10:48
|
#5
|
|
TP-Member
Registriert seit: Jan 2004
|
Ich danke euch zunächst für eure kompetente Hilfe!
Dank des Links von fettmme habe ich diesen kleinen Code gefunden, der (so vermute ich) das ist, was ich suche (für den ersten Teil):
PHP-Code:
<?php
echo(basename ($PHP_SELF)); // returnes filename.php
//oder (stand zwar nicht auf php.net, sollte aber auch gehen:)
$filename = (basename ($PHP_SELF)); // saves filename in a variable
// Und dann bei Teil zwei (den MySQL-Connect-Mist lasse ich hier der Übersichts wegen aus):
SELECT * FROM `table` WHERE `url` = '$filename'
Eine Frage kam mir eben doch auf: Wenn ich den Dateinamen in eine Variable speichere, muss der Code dann nicht folgendermaßen aussehen?
PHP-Code:
$filename = (basename ($_SERVER['PHP_SELF'])
Das wäre der letzte zu klärende Punkt.
|
|
|
15.10.2004, 11:08
|
#6
|
|
TP-Member
Registriert seit: Jan 2004
|
Eben ist noch ein Problem aufgetreten (das andere habe ich selbst gelöst: es muss (basename ($_SERVER['PHP_SELF'])) lauten):
PHP-Code:
$abfrage = "SELECT * FROM tabelle WHERE url = $filename";
Im obrigen Code erkennt PHP einen Fehler (über die Richtigkeit der Angaben, was die gegenüberliegende Existenz betrifft, habe ich mich überzeugt).
Doch dieser Code ist fehlerfrei:
PHP-Code:
$abfrage = "SELECT * FROM tabelle";
Ich habe schon Hochkommata gesetzt (wegen des Punktes im Dateinamen) und den Dateinamen selbst statt der Variable geschrieben - ohne Wirkung. Eventuell ist es ein ganz banaler Fehler, der mir nicht erscheinen will...
UPDATE:
Das ganze funktioniert, wenn statt Hochkommata die kursiv aussehenden und sich an der oberen Textkante befindenden "Tüttelchen" benutzt werden, mit Ausnahme der Angabe des Dateinamens.
Ich danke jedem für die Hilfe, das Thema ist erledigt.
Geändert von Galen (15.10.2004 um 11:11 Uhr).
|
|
|
18.10.2004, 11:46
|
#7
|
|
TP-Senior
Registriert seit: Jun 2004
Ort: leipzig
|
Zitat:
UPDATE:
Das ganze funktioniert, wenn statt Hochkommata die kursiv aussehenden und sich an der oberen Textkante befindenden "Tüttelchen" benutzt werden, mit Ausnahme der Angabe des Dateinamens.
Ich danke jedem für die Hilfe, das Thema ist erledigt.
|
sie heißen m.e. nach backticks. du hast sie doch auch in einem vorherigen posting benutzt...
auch immer wieder hilfreich
__________________
BeCreated - Geduld und Zeit für Ihre Wünsche
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 09:11 Uhr.
|
 |