Radiobuttons auslesen

lexxlevi

Grünschnabel
JUHUU, ich hab mein allererstes php-script geschrieben und es funktioniert auch soweit. auf der inputseite muss der user 6 fragen beantworten, in der art:
Code:
 <div class="fragenblock">
  <div class="frage">Trinken Sie viel Alkohol?
    </div><div class="antwort">
      <label>
        <input type="radio" name="frage1" id="ja" value="1" />
        </label>
    </div> <div class="antwort">
        <label>
          <input type="radio" name="frage1" id="nein" value="0" />
    </label>
        </div>
  </div>
in der output seite werden dann drei ergebnisse ausgelesen, je nachdem welcher wert errechnet wird. soweit klappt das auch prima. jetzt will ich aber, dass der user auf der input alle fragen beantworten muss, und das funktioniert mit der abfrage nicht. er liefert mir ein ergebnis, sobald ich nur einen button geklickt habe. welchen codeschnippsel brauch ich dafür, dass er alle buttons vergleicht. hat jemand bitte einen kleinen tipp für mich.
hier der code auf der output seite

Code:
<?php

if (($_POST['frage1'] == "")&&($_POST['frage2'] == "")&&($_POST['frage3'] == "")&&($_POST['frage4'] == "")&&($_POST['frage5'] == "")&&($_POST['frage6'] == ""))
        {
            $msg='Bitte beantworten Sie alle Fragen';
             $msg2='<a href="javascript:history.go(-1);">zurück</a>';
        }
    else {

            $gesamt = $_POST['frage1'] + $_POST['frage2'] + $_POST['frage3'] + $_POST['frage4'] + $_POST['frage5'] + $_POST['frage6'];

                  if ($gesamt <3) {
                  $msg="<h5>Sie haben ".$gesamt." Punkte und sind nicht gefährdet</h5>";
                  }
                  elseif ($gesamt <5) {
                  $msg="<h5>Sie haben ".$gesamt." Punkte und sind gefährdet</h5>";
                  }
                  else {
                  $msg="<h5>Sie haben ".$gesamt." Punkte und sind stark gefährdet</h5>";
                  }
                  
                   $msg2='<a href="test.php">neuer Test &gt;&gt;</a>';
 }

?>

DANKE! :-(
 
Hi,

mit

PHP:
if ($_POST['frage1'] == "")

Wird es nicht klappen, denn da prüfst du ja, ob frage1 leer, also empty ist.

Aber da du ja in deinen Inputs entweder eine 0 oder eine 1 hast, wirst du bei deiner if Abfrage immer ein false bekommen (hoffe das war richtig).

Versuche es mal so:
PHP:
if (($_POST['frage1'] == "0")&&($_POST['frage2'] == "0")&&($_POST['frage3'] == "0")&&($_POST['frage4'] == "0")&&($_POST['frage5'] == "0")&&($_POST['frage6'] == "0"))

// edit
Oder du prüfst mit der funktion isset(), ob die Werte überhaupt existieren.

//edit 2
Oder du fragst einfach, ob != 1 ist. ;)
PHP:
if (($_POST['frage1'] != "1")

Vielleicht geht das!
 
Zuletzt bearbeitet:
In deiner ersten IF Bedingung müssen ODER stehen anstelle von UND. Außerdem solltest du isset() verwenden.

PHP:
if (!isset($_POST['frage1']) || !isset($_POST['frage2']) || !isset($_POST['frage3']) || !isset($_POST['frage4']) || !isset($_POST['frage5']) || !isset($_POST['frage6']))
 
Hallo!

mit

PHP:
if ($_POST['frage1'] == "")
Wird es nicht klappen, denn da prüfst du ja, ob frage1 leer, also empty ist.
Aber genau das hat er doch vor. ;)

CPoly hat es schon richtig erkannt..... die UND-Verknüpfung ist das Problem.
Denn damit wird geprüft ob ALLE Fragen unbeantwortet (leer) sind..... was aber nicht der Fall ist wenn auch nur eine einzige Frage beantwortet ist. :p

Gruss Dr Dau
 
super danke, mit isset und || klappt es wunderbar. hab ich alles selber schonmal in ähnlicher weise ausprobiert und ähnlich heißt bei mir: falsche syntax. vielen dank, wieder was wichtiges gelernt, vor allem was isset angeht

ll.:):):):)
 
JUHUU, ich hab mein allererstes php-script geschrieben und es funktioniert auch soweit. auf der inputseite muss der user 6 fragen beantworten, in der art:
Code:
 <div class="fragenblock">
  <div class="frage">Trinken Sie viel Alkohol?
    </div><div class="antwort">
      <label>
        <input type="radio" name="frage1" id="ja" value="1" />
        </label>
    </div> <div class="antwort">
        <label>
          <input type="radio" name="frage1" id="nein" value="0" />
    </label>
        </div>
  </div>
in der output seite werden dann drei ergebnisse ausgelesen, je nachdem welcher wert errechnet wird. soweit klappt das auch prima. jetzt will ich aber, dass der user auf der input alle fragen beantworten muss, und das funktioniert mit der abfrage nicht. er liefert mir ein ergebnis, sobald ich nur einen button geklickt habe. welchen codeschnippsel brauch ich dafür, dass er alle buttons vergleicht. hat jemand bitte einen kleinen tipp für mich.
hier der code auf der output seite

Code:
<?php

if (($_POST['frage1'] == "")&&($_POST['frage2'] == "")&&($_POST['frage3'] == "")&&($_POST['frage4'] == "")&&($_POST['frage5'] == "")&&($_POST['frage6'] == ""))
        {
            $msg='Bitte beantworten Sie alle Fragen';
             $msg2='<a href="javascript:history.go(-1);">zurück</a>';
        }
    else {

            $gesamt = $_POST['frage1'] + $_POST['frage2'] + $_POST['frage3'] + $_POST['frage4'] + $_POST['frage5'] + $_POST['frage6'];

                  if ($gesamt <3) {
                  $msg="<h5>Sie haben ".$gesamt." Punkte und sind nicht gefährdet</h5>";
                  }
                  elseif ($gesamt <5) {
                  $msg="<h5>Sie haben ".$gesamt." Punkte und sind gefährdet</h5>";
                  }
                  else {
                  $msg="<h5>Sie haben ".$gesamt." Punkte und sind stark gefährdet</h5>";
                  }
                  
                   $msg2='<a href="test.php">neuer Test &gt;&gt;</a>';
 }

?>

DANKE! :-(

PHP:
$frage1 = (empty($_POST['frage1']) ? 0 : 1);
 
Wieso sollte man einfach "Nein" annehmen, wenn nichts ausgewählt wurde? Es handelt sich doch um Ja/Nein Fragen und Ja=1, Nein=0. Die Vorgabe ist, dass alle Fragen beantwortet werden müssen.

Welchen Wert können deine Radiobuttons noch haben, wenn im Formular entweder 0 oder 1 angegeben wurde?
 
Welchen Wert können deine Radiobuttons noch haben, wenn im Formular entweder 0 oder 1 angegeben wurde?

Na eben "undefiniert" oder "empty" oder "not set" wie auch immer man es nennt. Denn am Anfang ist eben keiner der beiden ausgewählt und dann soll der Nutzer gesagt bekommen, dass er überall was auswählen soll.
 
Na eben "undefiniert" oder "empty" oder "not set" wie auch immer man es nennt. Denn am Anfang ist eben keiner der beiden ausgewählt und dann soll der Nutzer gesagt bekommen, dass er überall was auswählen soll.

Das mag ja alles so sein ;)

Nur solltest du schon erkennen, das wenn du ein Formular aufrufst, dort keine _POST-Vars wie "frage1" verfügbar sind.

Meine Antwort bezog sich einzig auf das Verarbeiten deiner Formulardaten, weil du dort 4-5 If-Anweisungen hattest, um zu Prüfen, welchen Wert jetzt welcher Var (von den Buttons) hatte....mit dem, was ich oben geschrieben habe, würde es am schnellsten gehen ;)
 
Zurück