Globale Variable

LoMo

Erfahrenes Mitglied
Hi Ho,

ich habe bei meiner Registrierung ein kleines Problem. Anfangs schreibe ich in die Tabelle einen leeren Satz, damit ein neuer Index1(auto_increment) gesetzt wird und hier ist auch schon das Problem:

Direkt nach den schreiben des leeren Satzes mach ich ein select auf den Satz und hohl mir den neuen Index1. Ich brauch diesen Index1 für die komplette php Datei. D.h. dass ich diese Variable als globale Variable brauch. Weiss jemand wie ich das lösen könnte ?

Hier mal der Anfangscode:
PHP:
// Das sind die ersten paar Zeilen. Hier sollte die Variable $Index1 irgendwie "globalisiert" werden.

	if (!isset($_GET['Index'])){
		$db = datenbank_verbinden("xxx","xxx","xxx");
		$Index1 = tabelle_vorbereiten($db);
		mysql_close($db);
	}
	else {
		$Index1 = $_GET['Index1'];
	}

PHP:
	function tabelle_vorbereiten($db)
	{
		$query1 = "INSERT INTO kunden_registrierung 
						(Name1) 
					VALUES 
						(' ')";
						
		$query2 = "SELECT * from registrierung order by Index1 desc";
		
		$rs1 = mysql_query($query1,$db);
		if($rs1){
		
			$rs2 = mysql_query($query2);
			if($rs2){
				$objekt2 = mysql_fetch_object($rs2);
				$Index1 = $objekt2->Index1;
			}
			
		}
		else {
			echo mysql_error($db);
		}
		return $Index1; // Diesen Wert benötige ich für das komplette "Script"
	}

Am besten währe eine Lösung ohne Sessions. Aber wenn es nicht anders geht dann her damit :D

edit: Ich hab schon über Google nach einer Lösung gesucht. Bin dabei auf global gestoßen hat bei mir aber irgendwie nicht geklappt. /edit

mfg lomo
 
Zuletzt bearbeitet:
Die Nutzung von globalen Variablen ist unsauber.
Mach es am Besten so, dass der Index ein Rückgabewert von tabelle_vorbereiten ist, wie es ja jetzt auch schon ist, in jeder weiteren Funktion, in der du die Variable benötigst machst du einen Übergabeparameter mit dieser Variable.

Alternativ dazu und unsauber:
In der tabelle_vorbereiten nach dem füllen der Variable $Index1 sagen
PHP:
static $Index1;

in jeder weiteren Funktion musst du dann am Anfang des Funktionsrumpfes ein
PHP:
global $Index1;
setzen um auf diese Variable zugreifen zu können.

Von der zweiten Methode rate ich jedoch ab!
 
Erst mal vielen vielen Dank für die schnell Hilfe ! Was würde ich nur ohne euch machen :D

Wieso is die 2te Variante schlecht bzw. davon ab zu raten ?
Wie soll ich des mit den globalen Variablen handhaben wenn ich Index1 ausserhalb von Funktionen brauche ? wo kommt dann des global .... hin ?

mfg lomo
 
Zuletzt bearbeitet:
Kurz gesagt: schlechter Programmierstil!

Bei größeren Programmen wird es einfach unübersichtlich, wenn man mit globalen Variablen rumhantiert, vielleicht kannst du das in deiner jetztigen Situation nicht wirklich nachempfinden, tu dir einfach nen Gefallen und machs gleich "richtig" :-)
 
gibt es eigentlich einen Befehl womit man die ganzen URL Parameter auf einmal auslesen kann ?

Beispiel:
<a href="suche.php?x=23&y=43" target="hauptframe">auf den klick ich</a>
auf der suche.php möchte ich dann wiederrum einen Link anlegen, der die vorherigen Parameter übernimmt und noch einen hinzufügt.

Aber ich will es nicht manuell machen sprich:
<a href="suche.php?x=".$_GET['x']."&y=".$_GET['y']."&z=100" target="hauptframe">h</a>

Gibt es irgend einen Befehl wie ich alle Parameter auf einmal auslesen kann, dass das dann so aussieht:
<a href="suche.php..hier der Befehl..&z=100" target="hauptframe">h</a>

Geht das irgendwie? würde mir nämlich viel arbeit ersparen!

mfg lomo
 
Da gibt es eine globale Variable
PHP:
$_SERVER["QUERY_STRING"]
Es gibt auch noch andere nützliche Variablen, einen Überblick kannste dir mit phpinfo(); verschaffen.
 
Ich hab da mal was in der Richtung programmiert.
Am Samstag denk ich hab ich die Zeit um da nochmal reinzuschauen und zu gucken ob Dir das helfen kann.
Es geht in meinem Code darum, dass einer Seite die aufzurufende Seite und deren Parameter uebergeben werden, dort ein Login stattfindet und dann die eigentliche Seite, inklusive der angegebenen Parameter aufgerufen wird.
Ich denke mit der gleichen Technik solltest Du auch arbeiten koennen.

Als Ansatz, ich hab mit array_keys() (so hiess die Funktion glaub ich) gearbeitet um die Namen der Parameter zu bekommen und diese und deren Werte in einen String gepackt.
 
@reptiler. Woa des währe super. Vielen vielen Dank.

@Lars Michelsen: Des ist gut. Weist du vielleicht einen guten Link, wo die ganzen Servervariablen beschrieben sind ? (Inhalt .....)
 
Ich werd mal gucken was ich da tun kann.
Leider bin ich morgen nicht im Buero, daher schaff ich das erst am Samstag wenn ich wieder zuhause bin.

Den Inhalt der Server-Variablen kannst Du Dir recht easy mit dem kleinen Script:
PHP:
<?php
phpinfo();
?>
ansehen.
Aus Spass kannst Du nach dem Aufruf des Scripts ja auch noch ein paar Parameter uebergeben, ala ?test=1&test2=bla.
 
@LoMo: Das hatte ich doch bereits oben geschrieben. genau wie reptiler es gesagt hat, erstelle dir eine Datei und packe dort nur diesen Quellcode rein, dann kannst du dir viele viele Daten anschauen. :-)
 
Zurück