PHP ID aus MySQL in Include einbinden

AMD4Ever

Ensign
Registriert
Apr. 2008
Beiträge
188
Hallo!
Ich benötige mal ein bisschen Hilfe, die ich mit 2 Stunden php-Recherche nicht gefunden habe. Nun folgendes Problem:

Ich programmiere einen News-Bereich. Datum, Schlagzeile und ID liegen in einer MySQL-Tabelle.

Mehrere Textinhalte liegen in einer php-Datei, die mittels Variablen voneinander getrennt sind.

Die ID soll in der Inhaltsdatei den Textpfad aufrufen. Wie kann man das mit include umsetzen:

newsinhalt.php
PHP:
<?php
$var1 = 'Computerbase ist cool und informativ ...';
$var2 = 'Computerbase bietet schnelle Downloads ...';
$var3 = 'Computerbase bietet schnelle Downloads ...';
?>

Mittels meiner ID möchte ich gerne den Inhalt aufrufen

news_formular.php
PHP:
$ID=$_GET['ID']; 
$link = "$var". +$ID;


HTML:
<!-- Hier soll jetzt der Inhalt stehen!-->
<?php include 'newsinhalt.php'; echo $link;?>

Als Inhalt wird mir nichts angezeigt.

Wie bekommt man das hin, dass man über Variablen, die programmiert worden sind, in einem zentralen Dokument Inhalte auslesen und anzeigen.

gebe ich
PHP:
<?php include 'newsinhalt.php'; echo $var3;?>
an, zeigt mir mein Browser den Inhalt an, aber leider nur manuell.

Can anybody help me??
 
$link = "$var". +$ID;

weg mit den Anführungsstrichen und dem +

Aber mal ne Frage:
willst du anhand der ID entscheiden, welche der drei Variablen ausgegeben wird?
 
@maxpayne80: auch das funktioniert nicht. Da müsste man schon eval einsetzen, was du aber niemals tun solltest.

mach's lieber so in der art:


PHP:
// newsinhalt.php
$news = array(
 'erster wert nix',
 'Computerbase ist cool und informativ ...',
 'Computerbase bietet schnelle Downloads ...',
 'Computerbase bietet schnelle Downloads ...',
);

// news_formular.php
$id = intval($_GET['id']);
if ($id > 0 && array_key_exists($news, $id)) {
	echo $news[$id];
}
else {
	echo "keine news!";
}
 
Zuletzt bearbeitet:
es bleibt nicht bei 3 Datensätzen. Es werden sicherlich mehrere Datensätze. Ein mehr oder weniger zentrales Dokument hätte den Vorteil alles kompakt in einer Datei zu besitzen. Liegt es wirklich an den Anführungszeichen??
 
// edit ok ;P
 
Die kürzeste Lösung für das Problem des OP ist:

PHP:
echo ${$link};

Siehe Doku: Variable variables

Allerdings stimme ich zu, daß die Methode nicht gut ist und z.B. bu1137s Array-Lösung bevorzugt werden sollte :)
 
Mit switch/case arbeiten, sowie auf Sicherheit achten und am einfachsten ein "enum" nutzen.
PHP:
class Pages # da es in php leider keine enums gibt, arbeitest du am einfachsten so
{
  const HOME = 0;
  const DOWNLOADS = 1;
  const NEWS = 2;
  const ABOUT = 3
  # ...
}

# ...

switch( (int)$_GET['id'] )
{
  case Pages::DOWNLOADS : require_once '...' ); break;
  case Pages::NEWS : require_once( '...' ); break;
  case Pages::ABOUT : require_once( '...' ); break;
  default : require_once( '...' );
}

# ...
Wie das mit dem Content dann funktioniert, legst du selbst fest. Um eine Ausgabe zu erreichen, muss in der eingebundenen Datei natürlich ein echo vorkommen. Besser wäre es aber, wenn du alles in einer Variable zwischenspeicherst und am Ende ausgibst, denn so kannst du immer noch mit header() und Cookies arbeiten, ohne dass irgendwas großartiges bedacht werden muss. Ggf. kannst du im Nachhinein auch noch andere Operationen am gesamten Quelltext machen. Am einfachsten wäre es natürlich ein Template-System wie Smarty zu benutzen, da lernst du das schon von selbst und zwar recht zügig.

Ist natürlich die Frage wie tief du in der Materie steckst und gehen willst.

edit: Bisschen falsch verstanden...

An deiner Stelle würde ich von Dateien weggehen und komplett auf die Datenbank setzen, denn sonst bekommst du nur Probleme (aicherheitstechnischer Natur) und es wird umständlich.
 
Zuletzt bearbeitet:
Du überlastest nicht den Browser, allerhöchstens den Server. Aber, arrays sind relativ effizent (effizienter als 1000 variablen). Wie auch immer, ich versteh nicht ganz, warum du die news nicht gleich aus der Datenbank holst.
 
Jede Datenbanklösung ist besser als die Daten "manuell" in einer Datei zu speichern. Das mit dem Array wäre eine Alternative, aber bei weitem nicht optimal.
 
Zurück
Oben