Weiterleitung wenn Bedingung erfüllt ist

DrBonsai

Mitglied
Hallo,
ich komme mal wieder nicht weiter.

Ich möchte, dass ich nach ausführen eines php-scripts durch klicken auf submit auf der gleichen Seite bleibe, wenn eine Variable >0 ist, und weitergeleitet werde, wenn die Variable nicht >0 ist.

Hier mal mein Code:

HTML:
<form method="POST" action="" > 
[...]
</form>
PHP:
<?php
	$do = $_POST['do'];  //submit-button
	$reference = $_POST['reference'];
	if ($do == "novo")
		{
		$check = mysql_query("SELECT ref FROM energia_teste WHERE ref = '$reference'");
		$check_number = mysql_num_rows($check);
		if ($check_number > 0)
			{
			echo "A referência pretendida já foi concedido a um outro cliente.<br/> Escolhe um outra refência, por favor!" ;
			} 
			else
				{
				$client = $_POST['client'];
				mysql_query("INSERT INTO energia_teste (cliente)  VALUES ('$client')");			
				mysql_query("UPDATE energia_teste SET ref='$reference' WHERE cliente='$client'");
				$product = $_POST['product'];
				mysql_query("UPDATE energia_teste SET produto='$product' WHERE cliente='$client'");
				}
		} 
		else
			{
			echo "nope"; 
			}
		error_reporting(E_ALL); 
?>

Jetzt möchte ich gerne auf eine andere Seite geleitet werden, falls $check_number !>0.
Habs schon probiert mit location: 'neueseite.php' im header zu basteln. Allerdings bekomme ich die Info, ob $check_number !>0 nicht dahin.
Ich raffe nicht, wie ich die Variable da oben verfügbar machen kann.

Wie mach ich sowas? Oder gibt es noch eine andere Möglichkeit.
die <form action "..."> variabel zu gestalten geht nicht, wie ich i verschiedenen Foren gelesen habe.

mfg,
David
 
Was heisst da oben vefügbar?
Du kannst den Header ja nach dem Abfragen der $check_number senden.
 
Du kannst den Header ja nach dem Abfragen der $check_number senden.

Ahhhhh

Ich dreh durch.
Läuft.
Danke für den Hinweis.

Dann mal ne allgemeine Frage:
Ich bin nicht so der Crack, was Programmierung angeht.
Ist diese Lösung so, wie ein Profi es machen würde?
Also:
Wenn Bedingung erfüllt, dann Weiterleitung, sonst auf der Seite bleiben, oder gibts da schönere Alternativen?
Ich machs jetzt so, dass wenn meine Bedingung nicht erfüllt ist, ich eine Variable $ref_fail = "fail"; setze.
Und unterhalb meines Formulars dann:
PHP:
if ($ref_fail == "fail")
{
echo "Die Referenz ist schon vergeben";
}
ausgebe.

Allerdings ist $ref_fail ja beim ersten aufruf nich nicht definiert (wird ja eben erst definiert, wenn meine Bedingung nicht erfüllt ist), was beim ersten Aufruf des Dokuments zu einer Fehlermeldung führt.
Klar, die kann ich ausblenden. Spricht aber für eine unsaubere Programmierung, oder?
Also gibt es da was schönderes?
 
Du musst die Variable einfach ganz am Anfang setzen, z.B:

PHP:
$referenceFail = false;

Ich würde bei so ner Sache mit Bools arbeiten und nicht mit einem String...
 
Du musst die Variable einfach ganz am Anfang setzen, z.B:
Danke.
e, auch das war nun mehr als eindeutig...

Mein Problem mit dieser Programmiererei ist (noch), dass ich es geohnt bin, mit denkenden Subjekten zu arbeiten. Und der Computer denkt nunmal nicht mit...
Deswegen hakt es bei mir i.d.R immer an einer winzigen Kleinigkeit und der ganze Code t nicht...
Ich würde bei so ner Sache mit Bools arbeiten und nicht mit einem String...

Ja, ich weiß.
Mach ich jetzt dann mal.
Aber mir leuchtet ehrlich gesagt der Sinn von bools nicht ein.
Ich kann doch auch einfach genausogut Strings nutzen. Wo ist der Vorteil von bools?

Meine vorherige Frage war aber eher allgemein gemeint.
Ist dieser Ansatz vom Prinzip her "schön" oder "hässlich".
Wie löst ein "richtiger" Programmierer so etwas?
mfg,
David
 
Bools sparen Speicher, aber das ist heutzutage nicht mehr sichtbar. Ein Bool kann nur 0 oder 1 speichern (vgl. Bit).
Ein String ist dynamisch, belegt aber mindestens 8 Bit wegen dem Null-Zeichen (oder irre ich mich?).

Zum zweiten: Kommt drauf an, welche Dateien hast du bzw. wie hast du die Website aufgeteilt?
 
Ja, ich weiß.
Mach ich jetzt dann mal.
Aber mir leuchtet ehrlich gesagt der Sinn von bools nicht ein.
Ich kann doch auch einfach genausogut Strings nutzen. Wo ist der Vorteil von bools?

Sie sind kleiner (glaub ich...) und außerdem speicherst du nur 2 Zustände in der Variable, und dazu sind Bools eben gemacht :)

Meine vorherige Frage war aber eher allgemein gemeint.
Ist dieser Ansatz vom Prinzip her "schön" oder "hässlich".
Wie löst ein "richtiger" Programmierer so etwas?
mfg,
David

Keine Ahnung, ob ich schon zum richtigen Programmierer aufgestiegen bin :-), aber ich benutze keine Weiterleitungen, sondern eine Datei, die sich *immer* selbst aufruft und dann das Zeug mit Hilfe einer Klasse verarbeitet.
Wobei man sehen kann, dass zum Beispiel Youtube auch Weiterleitungen benutzt... Von da her würde ich sagen, dass es Geschmackssache ist ;)

Viel wichtiger als die Frage, ob du jetzt Header oder Bedingungen benutzt ist, dass du den Variablen gescheite Namen gibst, Code einrückst etc... Buchempfehlung dazu: Clean Code
 
Zurück