Zufallsvariable verschicken

BlackerLotus

Grünschnabel
Ich möchte eine per $zufallszahl = rand(0,100); generiet Zahl per Formular weitergegeben wird.

Formular:

<form action="auswertung2.php" method="post">
<input type="text" name="zahl">
<input type="hidden" name="zufallszahl" value="<?= htmlentities($zufallszahl) ?>">
<input type="hidden" name="zufallszahl" value="<?= htmlentities($versuche) ?>">
<input type="submit" value="Liegen Sie jetzt richtig?" name="button">
</form>

auswertung2.php:

$zufallszahl=0;
$versuche=0;
if (isset($_POST['zufallszahl'])) $zufallszahl=$_POST['zufallszahl'];
if (isset($_POST['versuche'])) $zufallszahl=$_POST['versuche'];

So ungefähr? Das funktioniert irgendwie nicht, die Zufallszahl ist irgendwie immer 1.
 
Das Formluar ist so gesagt quatsch ;)

HTML:
     <input type="hidden" name="zufallszahl" value="<?= htmlentities($zufallszahl) ?>">
     <input type="hidden" name="zufallszahl" value="<?= htmlentities($versuche) ?>">

Wenn du PHP Tags im HTML einbinden möchtest dann immer mit <?php ?>

htmlentities() kannst rausstreichen es sei denn du versuchst HTML Sonderzeichen auszulesen was bei einer Zahl quatsch ist.
Des weiteren wie gesagt den Namen vom Feld nicht 2 mal verwenden. Nenn das erste Zufallszahl und das zweite halt Versuche.

Und da es das 2. mal ist das ich das sehe , nämlich eine Hausaufgabe von jemanden war.

PHP:
    if(isset($_POST["button"])){ 
   	 //Zufalls Zahl prüfen mit der Eingabe 
   	  //wenn falsch das normale Formluar 
   	   //Zufallszahl im Formular speichern  und versuche um 1 erhöhen
  	// ansonsten gib Versuche aus und das es richtig war.
  } 
   else 
   { 
    $zufallszahl = rand(0,100); 
    // normales Formular  
   }
Alles was du brauchst ist quasi ein normales Eingabe Feld (raten) 2 versteckte Felder 1 x Zuffalszahl/ 1 x versuche und ein Submitbutton namens "Button/oder anderen Name"
 
Zuletzt bearbeitet:
Hallo!
FipsTheThief hat gesagt.:
.....Wenn du PHP Tags im HTML einbinden möchtest dann immer mit <?php ?>.....
Wer sagt dass?
In diesem Fall geht <? ?>, <?= ?> und <?php ?>, beim 2. darf er nur kein ECHO ausgeben (Parse error)..... ein PRINT ist aber möglich.
Das 1. ist (soweit ich weiss) dass gleiche wie das 3.
Ich persönlich nehme aber ausschliesslich die 3. Variante, weil diese (wie ich finde) sich am deutlichsten vom übrigem Code hervor hebt und somit der Anfang vom jeweiligem PHP-Code schneller zu finden ist.

Gruss Dr Dau
 
Etwas zu Erklärung:
  • Die <?php … ?>-Schreibweise entspricht syntaktisch einer XML-Verarbeitungsanweisung und sollte bevorzugt genutzt werden. Bei deaktivierter Kurzschreibweise (s. nächster Punkt) ist sie vorteilhalft, da sie auch die Verwendung von PHP in XML-konformen Code erlaubt.
  • Die <? … ?>-Schreibweise ist die verkürzte Form der <?php … ?>-Schreibweise. Diese ist jedoch nur verfügbar, wenn die Konfigurationsoption short_tag_open den Wert true besitzt.
  • Die Schreibweise <= <Ausdruck> ?> ist äquivalent zu <?php echo <Ausdruck> ?>. Auch diese ist nur bei erlaubter Kurzschreibweise verfügbar.
Neben diesen Schreibweisen gibt es noch weitere, jedoch weit aus seltener benutzte Schreibweisen zum Auszeichnen von PHP-Code.

Am besten gewöhnt ihr euch das Schreiben der <?php … ?>-Schreibweise an. Damit werdet ihr am wenigsten falsch machen und immer auf der sicheren Seite sein. Denn auch wenn eure Skripte auf anderen Plattformen mit unterschiedlichen Einstellungen laufen, wird es keine Probleme im Zusammenhang mit der Auszeichnung von PHP-Codeblöcken geben.
 
Oha das <?= geht auch ? für mich sah das wie eine Zuweisung aus das hat mich ein wenig stutzig gemacht. Naja dann war es doch nicht sooooo verkehrt ;)
 
@Gumbo, klasse Erklärung.
Dass erklärt auch den Parse error wenn man <?= echo <Ausdruck> ?> nimmt. ;)

@FipsTheThief, dafür kapiere ich das Ausrufezeichen, was an verschiedenen Stellen immer wieder mal auftaucht, einfach nicht. :(
 
Na, das --> !
Hmm, wie soll ich es erklären wenn ich den Sinn der da hintersteckt nicht verstehe?!
Spontan fällt mir if($_GET['bla'] != "blub"), so wie ich es aber verstehe beutet es dass gleiche wie if($_GET['bla'] == "blub").
Und dann ist es z.b. auch am Anfang der if-Anweisung..... if(!$bla)..... und damit kann ich schonmal garnichts anfangen.
Eben weil das Ausrufezeichen je nach Einsatzort (für mein Verständnis) verschiedene Bedeutungen hat, blicke ich da einfach nicht durch.
 
Das Aufrufungszeichen Invertiert ein Ergebnis oder eine Bedingung, aber wo verdammt nochmal ist im Code ein Ausrufungszeiche, ich kann keins entdecken.

Nochmal zur Erklärung.

PHP:
if("bla" == "bla"){ //-- Wenn "bla" gleich "bla"...
    // liefert true zurück
}

if("bla" != "bla"){ //-- Wenn "bla" ungleich "bla"...
    // liefert fals zurück
}

oder

PHP:
if(empty($bla)){ //-- Wenn $bla leer ist...
    // mache
}

if(!empty($bla)){ //-- Wenn $bla NICHT leer ist...
    // mache
}
 
Zurück