Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
Jacques3012
Threadersteller
Dabei seit: 24.03.2008
Ort: Hannover
Alter: -
Geschlecht:
|
Verfasst Mo 24.03.2008 15:04
Titel Aus mySQL den Seitentitel auslesen |
|
|
Hallo,
ich arbeite gearde an einem kleinen eigenen CMS.
Es soll ja auch flexibel sein, weswegen ich gerne die Funktion einbauen würde, das man den Seitentitel ändern kann.
Alles ganz angenehm über Formulare und PHP/MySQL.
Gibt es da eine möglichkeit? Eigentlich müsste ich das Abfragescript doch in den Tag <title></title> einfügen können. Oder?
Wäre sehr dankbar für Hilfe!
MfG,
Jacques3012
|
|
|
|
|
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 24.03.2008 15:07
Titel
|
|
|
Warum sollte das denn nicht gehen?
Wenn du an sowas schon hängst... einfach ne SQL Abfrage rein und gut is.
|
|
|
|
|
Anzeige
|
|
|
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst Di 25.03.2008 01:20
Titel
|
|
|
Zitat: | Eigentlich müsste ich das Abfragescript doch in den Tag <title></title> einfügen können. Oder? |
Ja, allerdings würde ich das ein wenig anders angehen.
Wenn du ein Content-Management-System selbst programmierst, dann wirst du sicherlich eine Trennung zwischen Funktionalität und Design vornehmen, oder?
Vielleicht hast du ein Template-System entwickelt, so daß es möglich ist, dem Ganzen einfach ein anderes Layout zu verpassen?
In jedem Fall würde ich keine Abfrage zwischen title-Tags quetschen.
Ich würde ein Template-System entwickeln oder auf ein vorhandenes (z.B. Smarty) zurückgreifen.
Dann hast du deine Template-Dateien mit Template-Variablen und diese Files werden dann von der Template-Engine geparst um HTML-Seiten zu generieren.
Dann würde das in etwa so aussehen:
Code: | <title>[title]</title> |
Und in einer anderen Datei würde ein Script diese deine "Tags" ersetzen.
Hast du kein Template-System, würde ich der Übersichtlichkeit halber, trotzdem kein Abfragescript zwischen die title-Tags quetschen.
HTML-Code und Script-Code würde ich so weit es geht voneinander getrennt halten.
In etwa so:
Code: | $sql = "SELECT title FROM tabelle WHERE blabla";
$result = @mysql_query( $query );
while( $row = mysql_fetch_array( $result ) )
{
$title = $row['title'];
} |
Code: | <title><?= $title ?></title> |
bzw.
Code: | <title><?php echo $title; ?></title> |
Obwohl ich mir für die SQL-Abfragen bei so einem Projekt natürlich auch noch eine Klasse schreiben würde, die den Krams übernimmt und eine anständige Fehlerbehandlung mitbringt.
Aber vom Prinzip her funktioniert es so natürlich...
Ist kein Problem den title jeder Seite aus einer Datenbank zu holen.
Natürlich mußt du wissen, welcher title bei welcher Seite geholt werden soll.
Dazu wirst du da wahrscheinlich was per URL übergeben, oder?
http://example.com/index.php?site=impressum
oder
http://example.com/index.php?artikel=104
Das übernimmst du dann natürlich einfach in deine Abfrage:
Code: | $sql = "SELECT title FROM tabelle WHERE site = '". mysql_real_escape_string( $_GET['site'] ) ."'"; |
oder
Code: | $sql = "SELECT title FROM tabelle WHERE id = '". mysql_real_escape_string( $_GET['artikel'] ) ."'"; |
oder so in der Art halt...
Zu beachten ist, daß du Werte von außen nie, nie, niemals einfach ungeprüft in deine Abfragen einbauen darfst.
Ein mysql_real_escape_string() ist das Wenigste, was du tun kannst, um einen Angriff per SQL-Injection zu verhindern.
Das weißt du aber, oder? Sollte man eigentlich, wenn man ein eigenes CMS programmiert...
Und sinnvollerweise würde ich mir für sowas halt eine Klasse schreiben, damit ich dann auf eine Methode des jeweiligen Objektes zugreifen kann anstatt jedesmal immer wieder die gleichen Abfragen mit Absicherungen und Fehlerbehandlungen zu schreiben...
Zuletzt bearbeitet von rob am Di 25.03.2008 01:31, insgesamt 1-mal bearbeitet
|
|
|
|
|
Jacques3012
Threadersteller
Dabei seit: 24.03.2008
Ort: Hannover
Alter: -
Geschlecht:
|
Verfasst Di 25.03.2008 13:25
Titel
|
|
|
Hallo,
erstmal, Danke dass ihr euch die Mühe gemacht habt!
Dann ist es nun so wie du sagtest, rob, das ich kein Template System eingebaut habe. Werde in der nächsten Version gerne drauf zurückkommen. Zurzeit hab ich schoon eine Art Bildergalerie, ein News-/ Artikelsystem und ein Downloadscript.
Ich stehe immer noch vor dem Problem, in eine externe Navigation (z.B. navi.php) ein Script zu schreiben das beim Auslesen eines Unterseitentitels eine weitere Dynamisch Generiert. Alle Daten würden wie gehabt aus einer DB geladen werden.
PS... Dann nochetwas.
Code: | $abfrage = "SELECT downloads_name, author, downloads_url, downloads_image FROM downloads"; |
In meiner index.php habe ich nun diesen Code, und möchte das der neueste Beitrag ganz oben angezeigt wird bzw. mit der größten ID. Nun experimentier ich nicht gern, was ein kleines Problme schaffen könnte...
Bis denn' dann!
|
|
|
|
|
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst Di 25.03.2008 13:46
Titel
|
|
|
Zitat: | Ich stehe immer noch vor dem Problem, in eine externe Navigation (z.B. navi.php) ein Script zu schreiben das beim Auslesen eines Unterseitentitels eine weitere Dynamisch Generiert. |
Ich verstehe nicht, wo da das Problem ist...
Irgendwie mußt du deiner Funktion/Methode doch sagen, was für eine Seite generiert werden soll. Und genauso, wie du den Content dieser Seite aus deiner Datenbank holst, holst du dann auch den title aus der Datenbank.
Wo ist das Problem? Was verstehst du nicht?
Zitat: | In meiner index.php habe ich nun diesen Code, und möchte das der neueste Beitrag ganz oben angezeigt wird bzw. mit der größten ID. |
Und wo ist hier das Problem?
Irgendwie habe ich den Eindruck, es fehlen die elementarsten Datenbankgrundlagen...
Wenn du die Datensätze nach ID geördnet haben willst, dann sag das deiner Datenbank:
Code: | $abfrage = "SELECT downloads_name, author, downloads_url, downloads_image FROM downloads ORDER BY id"; |
Wirf am besten mal einen Blick in das MySQL-Handbuch oder in ein einfaches Tutorial.
Du kannst deiner SELECT-Anweisung ein einfaches ORDER BY mitgeben.
Und dann mit ASC (ascending = aufsteigend) oder DESC (descending = absteigend) noch die Sortierreihenfolge festlegen.
ASC ist die Voreinstellung und kann daher auch weggelassen werden.
Also, Sortierung nach ID, aufsteigend:
Code: | $abfrage = "SELECT downloads_name, author, downloads_url, downloads_image FROM downloads ORDER BY id ASC"; |
und entsprechend, Sortierung nach ID, absteigend:
Code: | $abfrage = "SELECT downloads_name, author, downloads_url, downloads_image FROM downloads ORDER BY id DESC"; |
Denkbar wären auch noch weitere Kriterien (also Sortierung nach mehreren Spalten) wie:
Code: | $abfrage = "SELECT downloads_name, author, downloads_url, downloads_image FROM downloads ORDER BY id ASC, irgendwas DESC"; |
Zuletzt bearbeitet von rob am Di 25.03.2008 13:47, insgesamt 1-mal bearbeitet
|
|
|
|
|
Jacques3012
Threadersteller
Dabei seit: 24.03.2008
Ort: Hannover
Alter: -
Geschlecht:
|
Verfasst Do 17.04.2008 14:21
Titel
|
|
|
Bitte entschuldigt/entschuldigen sie,
dass ich erst wieder so spät poste!
Vielen Dank für die Hilfe.
Konnte alles mit ihrer/eurer Hilfe umsetzen.
Nun habe ich leider noch ein Problem. Es geht um die PHP/MySQL Funktion 'UPDATE':
Code: | <?
$server = "";
$user = "";
$pass = "";
$db = "";
$dbh = mysql_connect($server, $user, $pass) or die
("Keine Verbindung moeglich");
mysql_select_db("");
if(!empty($_POST['button']))
{
$aendern = "UPDATE benutzerdaten Set
Geschlecht ='$_POST[geschlecht]',
Klasse ='$_POST[jahrgang]',
Geburtstag ='$_POST[geburtstag]',
Ichbin ='$_POST[ichbin]',
lFach ='$_POST[lfach]',
hFach ='$_POST[hfach]',
Beziehung ='$_POST[beziehung]',
Hobbies ='$_POST[hobbies]',
lMusik ='$_POST[lmusik]',
lFilm ='$_POST[ifilm]',
Ichmag ='$_POST[ichmag]',
Ichmagnicht ='$_POST[ichmagnicht]'
WHERE id ='$_SESSION[user_id]'
";
}
$update = mysql_query($aendern);
?>
<?php
header("Location: edit.php");
?> |
Dabei Frage ich mich nun, was genau der Fehler ist, wieso ich (nach abschicken des Formulars) ohne Änderung der Datenbank wieder zurückgeleitet werde. Vorallem frage ich mich das weil es vor geraumer Zeit noch funktionierte...
MfG
|
|
|
|
|
Skyw4lker
Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 43
Geschlecht:
|
Verfasst Do 17.04.2008 16:02
Titel
|
|
|
Also zunächst würde ich mal überprüfen ob die IF Abfrage überhaupt true ergibt und der Code im Statement ausgeführt wird. Vorzugsweise durch eine Ausgabe mit echo innerhalb der Abfrage. Falls nicht, testen ob im array der index "button" vorhanden ist. Wird das Query ausgeführt bitte nach dem ein Code: | echo(mysql_error()); | einfügen. Das sollte Aufschluss geben.
Zuletzt bearbeitet von Skyw4lker am Do 17.04.2008 16:02, insgesamt 1-mal bearbeitet
|
|
|
|
|
Jacques3012
Threadersteller
Dabei seit: 24.03.2008
Ort: Hannover
Alter: -
Geschlecht:
|
Verfasst Do 17.04.2008 16:31
Titel
|
|
|
@Skyw4lker:
Habe nun den echo Befehl eingebaut:
Code: | $aendern = "UPDATE benutzerdaten Set
Geschlecht ='$_POST[Geschlecht]',
Klasse ='$_POST[Klasse]',
Geburtstag ='$_POST[Geburtstag]',
Ichbin ='$_POST[Ichbin]',
lFach ='$_POST[lFach]',
hFach ='$_POST[hFach]',
Beziehung ='$_REQUEST[Beziehung]'
WHERE id ='$_POST[User_id]'
";
$update = mysql_query($aendern) echo(mysql_error()); |
bekomme allerdings das zurück
Parse error: syntax error, unexpected T_ECHO in /usr/export/www/hosting/schillermp/system/edit_mysite_go.php on line 33
Mit einem anderen Formular dieser Art (gleiche Struktur)
geht es allerdings.
Als ob da irgdendwie der Wurm drin wär...
Zuletzt bearbeitet von Jacques3012 am Do 17.04.2008 16:40, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
Daten aus MySql auslesen
MySql Kommentar auslesen?
[PHP/MySQL] Datenbank auslesen.
[php/mysql] daten aus DB per zufall auslesen
[mySQL] Nur Einträge mit bestimmten IDs auslesen
[PHP/mySQL] ID zur eindeutigen Zuordnung aus Table auslesen
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|