PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Vordefinierte Konstante mit $_GET übergeben (http://www.selfphp.de/forum/showthread.php?t=18297)

werftarbeiter 19.12.2007 12:44:54

Vordefinierte Konstante mit $_GET übergeben
 
Hallo,
ich will per $_GET eine eine vordefinierte Konstante an ein mysql_select übergeben.
PHP-Code:

<?php
    define
('DATENBANK''personen');

    echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."?index&db=DATENBANK\">Startseite</a></p>\n";
    
    if (isset(
$_GET['index'])) {
        echo 
$sql "SELECT * FROM ".$_GET['db']."";
    }
?>

Als Ausgabe bekomme ich:

SELECT * FROM DATENBANK statt SELECT * FROM personen.

Hab schon diverse schlaue Bücher gewälzt und gegoogelt, aber keine brauchbare Lösung bekommen.

Für Eure Hilfe bin ich sehr dankbar, stehe nämlich voll auf dem Schlauch.
Der werftarbeiter

defabricator 19.12.2007 12:53:50

AW: Vordefinierte Konstante mit $_GET übergeben
 
Versuch es mal mit
PHP-Code:

echo '<p><a href="?index=true&db=DATENBANK">Startseite</a></p>'

Du weißt aber hoffentlich, dass man das auch mit beliebigen anderen Parameter aufrufen kann und so unter Umständen komplett andere Abfragen ausführen lassen kann?

werftarbeiter 19.12.2007 13:41:29

AW: Vordefinierte Konstante mit $_GET übergeben
 
Hallo defabricator,
Danke für deine prompte Antwort, aber die Ausgabe bleibt leider die Gleiche.
Zitat:

Du weißt aber hoffentlich, dass man das auch mit beliebigen anderen Parameter aufrufen kann und so unter Umständen komplett andere Abfragen ausführen lassen kann?
Das weiß ich wohl, aber die Seite liegt in einem sicheren Bereich. Wie wäre das Problem denn eleganter zu lösen?
Mast und Schotbruch
der Werftarbeiter

meikel (†) 19.12.2007 14:19:32

AW: Vordefinierte Konstante mit $_GET übergeben
 
Zitat:

Zitat von werftarbeiter (Beitrag 110348)
Als Ausgabe bekomme ich:

SELECT * FROM DATENBANK statt SELECT * FROM personen.

Hab schon diverse schlaue Bücher gewälzt und gegoogelt, aber keine brauchbare Lösung bekommen.

Du sollst die Bücher nicht wälzen sondern lesen. PHP ersetzt Variable in "Gänsefußzeichenketten". Variable != Konstante

werftarbeiter 19.12.2007 14:51:08

AW: Vordefinierte Konstante mit $_GET übergeben
 
Hallo meikel
Zitat:

Du sollst die Bücher nicht wälzen sondern lesen. PHP ersetzt Variable in "Gänsefußzeichenketten". Variable != Konstante
War mir schon klar, dass variablen und konstanten nicht das gleiche sind. Ich arbeite nicht regelmäßig mit PHP und wollte eigentlich nur einen kleinen Lösungsvorschlag oder Ansatz.
Gruß vom werftarbeiter.

meikel (†) 19.12.2007 15:08:06

AW: Vordefinierte Konstante mit $_GET übergeben
 
echo $variable . "Zeichenkette" . KONSTANTE . "noch ne Zeichenkette";

defabricator 19.12.2007 15:08:25

AW: Vordefinierte Konstante mit $_GET übergeben
 
Mischt Du eventuelle verschiedene Beispiele aus dewm Buch?
Zitat:

Zitat von werftarbeiter
echo $sql = "SELECT * FROM ".$_GET['db']."";

an der Stelle wird keinesfalls die Datenbank gewechselt sondern allenfals die Tabelle. Was genau möchtest Du erreichen?

werftarbeiter 19.12.2007 15:45:42

AW: Vordefinierte Konstante mit $_GET übergeben
 
Hallo,
ich möchte verschiedene tabellen aufrufen können, die dann mit einer function ausgewertet werden. Die Tabellennamen sind per define() voregeben.
Da ich zwei Homepages verwalte, die auf ein gleiches Datenbanksystem aufbauen, möchte ich nur die Konstanten für die jeweilige Seite anpassen.

Blade1965 19.12.2007 17:00:27

AW: Vordefinierte Konstante mit $_GET übergeben
 
Zitat:

Zitat von werftarbeiter (Beitrag 110348)
Hallo,
ich will per $_GET eine eine vordefinierte Konstante an ein mysql_select übergeben.
PHP-Code:

<?php
    define
('DATENBANK''personen');

    echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."?index&db=DATENBANK\">Startseite</a></p>\n";
    
    if (isset(
$_GET['index'])) {
        echo 
$sql "SELECT * FROM ".$_GET['db']."";
    }
?>

Als Ausgabe bekomme ich:

SELECT * FROM DATENBANK statt SELECT * FROM personen.

Hab schon diverse schlaue Bücher gewälzt und gegoogelt, aber keine brauchbare Lösung bekommen.

Für Eure Hilfe bin ich sehr dankbar, stehe nämlich voll auf dem Schlauch.
Der werftarbeiter

Da macht dein Script auch das Richtige.
Du übergibst im String ja auch db=DATENBANK und nicht den String der Tabelle!

defabricator 19.12.2007 17:24:10

AW: Vordefinierte Konstante mit $_GET übergeben
 
Oh, ich glaube jetzt hat es klick gemacht ...vielleicht.
Du willst, dass der Benutzer zwischen zwei oder mehr Konstanten wählen kann? Im Link steht dann immer table=alpha oder table=beta und Du tauschst dann in den Skripten nur die define('alpha', .... Zeilen aus.
PHP-Code:

<?php
echo '<p><a href="?index=xyz&table=alpha">Startseite alpha</a></p>';
echo 
'<p><a href="?index=xyz&table=beta">Startseite beta</a></p>';
echo 
'<p><a href="?index=xyz&table=gamma">Startseite gamma</a></p>';

define('alpha''personen');
define('beta''rauchwaren');
define('gamma''restaurants');

if ( isset(
$_GET['table']) ) {
  if ( 
defined($_GET['table']) ) {
    
$sql 'SELECT * FROM '.constant($_GET['table']);
  }
  else {
    echo 
'unbekannte Tabelle';
    exit();
  }
}
else {
  echo 
'keine Tabelle gewählt';
  exit();
}


echo 
$sql;
?>



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:54:23 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.