PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Php Parameterübergabe aus der Url auslesen



Benno
04.12.03, 09:30
moin,moin
Ich brauche mal Eure Hilfe. Ich habe ein phpScript und alle Funktionen auf einer Seite.
Wenn ich Parameter übergebe in der Art..........
http://localhost/Datenbank.php?funktion=bearbeiten&id=5
.........dann kann ich die funktion nicht aufrufen und der Parameter id ist auch nicht mit 5
besetzt.
Wie kann ich die Parameter hinter dem Fragezeichen aus der Url auslesen.

kratz00
04.12.03, 09:35
http://www.linuxforen.de/forums/showthread.php?s=&threadid=89791

lesen, verstehen und umsetzen ;)

Benno
04.12.03, 09:43
Ich glaube das ist nicht mein Problem.
Wenn ich die Funktionen oben in der ca 10 Zeile definiere in der Art.
$funktion =bearbeiten....
Dann läuft das Script.
Oder mache ich da einen Denkfehler.

kratz00
04.12.03, 09:50
ich kenn dein script doch nicht :)

Benno
04.12.03, 09:53
<? header("Cache-Control: no-cache, must-revalitate");
header("Pragma: no-cache");
?>

<html>
<head>
<title>Adressverwaltung</title>
<!-- Changed by: Martin Glinski, 01-Jan-2002 -->
</head>
<body>

<?
$dbuser = "root";
$dbpasswd = "";
$db = "test";
$tabelle = "adressen";
$tabelle_anlegen ="
CREATE TABLE $tabelle (
id int(10) NOT NULL auto_increment,
name varchar(255),
strasse varchar(255),
plz char(12),
stadt varchar(255),
PRIMARY KEY (id)
)";
?>

<?
mysql_connect("localhost", $dbuser, $dbpasswd)
or die("Kann mich nicht mit der Datenbank verbinden!") ;
?>

<?
$result = mysql_listtables($db);
$tabelle_fehlt = TRUE;
for($i=0; $i < mysql_num_rows($result); $i++) {
if(mysql_tablename($result, $i) == $tabelle) {
$tabelle_fehlt = FALSE;
break;
}
}

if($tabelle_fehlt) {
mysql($db, $tabelle_anlegen)
or die("Kann Tabelle nicht anlegen.");
}
?>


<?
function neu_bearbeiten($id=0) {
global $PHP_SELF, $db, $tabelle;
$name = ""; $strasse = ""; $plz = ""; $stadt = "";
$funktion = "anlegen";
if($id) {
$result = mysql($db, "SELECT name, strasse, plz, stadt FROM $tabelle"
." where id = $id");
list($name, $strasse, $plz, $stadt) = mysql_fetch_row($result);
$funktion = "aendern";
}
?>
<form action=<? echo $PHP_SELF ?>>
<pre>
<input type=hidden name=funktion value=<? echo $funktion ?>>
<input type=hidden name=id value=<? echo $id ?>>
Name: <input type=text name=name value="<? echo $name ?>">
Strasse:<input type=text name=strasse value="<? echo $strasse ?>">
PLZ: <input type=text name=plz value="<? echo $plz ?>">
Stadt: <input type=text name=stadt value="<? echo $stadt ?>">
<input type=submit value=<? echo $funktion ?>>

</pre>
</form>
<?
}

function anlegen($name, $strasse, $plz, $stadt) {
global $PHP_SELF, $db, $tabelle;
mysql($db, "INSERT INTO $tabelle (name, strasse, plz, stadt)"
." VALUES('$name', '$strasse', '$plz', '$stadt')");
echo "$name angelegt.";
echo "<p align=right><a href=$PHP_SELF>zurueck</a></p>";
}

function aendern($id, $name, $strasse, $plz, $stadt) {
global $PHP_SELF, $db, $tabelle;
mysql($db, "UPDATE $tabelle SET name='$name', strasse='$strasse',"
." plz='$plz', stadt='$stadt'"
." WHERE id = $id");
echo "$name geaendert.";
echo "<p align=right><a href=$PHP_SELF>zurueck</a></p>";
}

function loeschen($id) {
global $PHP_SELF, $db, $tabelle;
mysql($db, "DELETE FROM $tabelle WHERE id = $id");
echo "Eintrag $id geloescht.";
echo "<p align=right><a href=$PHP_SELF>zurueck</a></p>";
}

function liste($filter = "") {
global $PHP_SELF, $db, $tabelle;
$result=mysql($db, "SELECT * from $tabelle where name LIKE "
."'%${filter}%'");
echo "<table>";
while(list($id, $name, $strasse, $plz, $stadt)
= mysql_fetch_row($result)) {
echo "<tr><td>$name<br>$strasse<br>$plz $stadt</td>";
echo "<td><a href=$PHP_SELF?funktion=neu_bearbeiten&id=$id>"
."bearbeiten</a><br>"
."<a href=$PHP_SELF?funktion=loeschen&id=$id>loeschen</a></td></tr>";
}
echo "</table>";
echo "<p align=right><a href=$PHP_SELF>zurueck</a></p>";
}

function auswahl() {
global $PHP_SELF; ?>
<form action=<? echo $PHP_SELF ?>?liste>
<pre>
<input type=hidden name=funktion value=liste>
Suchen: <input type=text name=filter>
</pre>
</form><br>
<?
echo "<a href=$PHP_SELF?funktion=neu_bearbeiten>neuer Datensatz</a>";
echo " <a href=$PHP_SELF?funktion=liste>alle anzeigen</a>";
}

switch($funktion) {
case anlegen:
anlegen($name, $strasse, $plz, $stadt);
break;
case aendern:
aendern($id, $name, $strasse, $plz, $stadt);
break;
case neu_bearbeiten:
if(isset($id)) neu_bearbeiten($id);
else neu_bearbeiten();
break;
case liste:
if(isset($filter)) liste($filter);
else liste();
break;
case loeschen:
loeschen($id);
break;
default:
auswahl();
}
?>



</body>
</html>

Kip
04.12.03, 09:59
also ehrlich gesagt weiß ich nicht so ganz was du willst, und dein script ist sehr unübersichtlich geschrieben .... aber vielleicht solltest du dir das mal durchlesen:

http://www.dclp-faq.de/ch/ch-webvariablen.html

da wird genau erklärt wie man Formulare/übergebene Parameter verarbeitet ...

Benno
04.12.03, 10:17
Ja ich glaube mit diesem Link werde ich das Problem lösen.
Mein Problem ist mit der Seite war wohl
register globals=off.
Da ich das aus Sicherheitsgründen nicht einschalten werde, werde ich mir die Alternativen von dem in dem Link aufgeführten Dingen mal anschauen.
Danke:)

kratz00
04.12.03, 10:20
Original geschrieben von Benno
Ich glaube das ist nicht mein Problem.
Wenn ich die Funktionen oben in der ca 10 Zeile definiere in der Art.
$funktion =bearbeiten....
Dann läuft das Script.
Oder mache ich da einen Denkfehler.

dann scheints ja doch dein problem zu sein :p

Benno
04.12.03, 10:29
Nochmals vielen herzlichen Dank an euch beiden.
Mein Problem habe ich gelöst.
Ich habe mal kurzzeitig in der php.ini register globals = on gestellt und schon lief die Seite so wie Sie sollte:) :) :) :)
Da wäre ich von selbst nicht so schnell drauf gekommen.
Jetzt werde ich die Seite mit einer Alternative ausstatten, damit ich register globals auf off stellen kann und schon ist alles im Lack.
Vielen herzlichen Dank noch mal!!!!!:) :)

Benno
04.12.03, 10:33
Original geschrieben von kratz00
dann scheints ja doch dein problem zu sein :p
Ja Kratz00
Du hast mit dem Hinweis genau ins Schwarze getroffen.
Danke!

Benno
04.12.03, 10:35
Das ist mir eine weitere Spende wert.
Ich werde mal wieder 10Euro zum Netzmeister schicken.