Einfachste Formulare funktionieren nicht

Alles, was PHP betrifft, kann hier besprochen werden.

Einfachste Formulare funktionieren nicht

Postby CptMetal » 09. January 2007 16:33

Hi,

hab xampp 1.5.5 installiert, Apache und MySql gestartet. Wenn ich folgendes Formular testen will, gibt mir der Browser kein Ergebnis. Ist bei anderen Scripten ähnlich, Taschenrechner zum Beispiel.


<html>

<head>
<title></title>
</head>


<body>

<form action="<? $PHP_SELF; ?>" method="post">

Anrede <input type="radio" name="Anrede" value="m"> Herr
<input type="radio" name="Anrede" value="w"> Frau<br>

Ihr Name: <input type="text" name="Name" >
<input type="submit" value="Abschicken">
</form>

<?

$pruefen_auf = ($Anrede == m) ? "Guten Tag Herr " : "Guten Tag Frau ";

echo $pruefen_auf.$Name;

?>


</body>

</html>
CptMetal
 
Posts: 5
Joined: 09. January 2007 16:25

Postby martinpre » 09. January 2007 16:37

lalalala ... http://faq.kwm-web.info/doku.php/php#register_globals

Und ich glaube(!), dass auch $PHP_SELF net funktioniert, aber am besten mal ausprobieren ;)
martinpre
 
Posts: 405
Joined: 22. May 2006 16:14
Location: Nähe Tulln / Österreich

Postby CptMetal » 09. January 2007 16:48

Das hab ich mir schon durchgelesen. Ich möchte nur gerne wissen was an dem Quelltext geändert werden muss. Ich bin PHP-Anfänger.
register_globals = On hab ich schon gemacht. Das alleine bringt aber nichts.
CptMetal
 
Posts: 5
Joined: 09. January 2007 16:25

Postby martinpre » 09. January 2007 16:51

CptMetal wrote:register_globals = On hab ich schon gemacht. Das alleine bringt aber nichts.


Und auch neugestartet?

Ich kenn die Kurzform nicht und verwende immer einfach die Langform mit if();

Die Vars sollten statt $var so ausschaun: $_POST['var']
martinpre
 
Posts: 405
Joined: 22. May 2006 16:14
Location: Nähe Tulln / Österreich

Postby CptMetal » 09. January 2007 17:10

Mein Quelltext sieht jetzt so aus:

<html>

<head>
<title></title>
</head>


<body>

<form action="<? $PHP_SELF; ?>" method="post">

Anrede <input type="radio" name="Anrede" value="m"> Herr
<input type="radio" name="Anrede" value="w"> Frau<br>

Ihr Name: <input type="text" name="Name" >
<input type="submit" value="Abschicken">
</form>

<?

$_POST['pruefen_auf'] = ($Anrede == m) ? "Guten Tag Herr " : "Guten Tag Frau ";

echo $pruefen_auf.$Name;

?>


</body>

</html>


Das klappt auch, aber Guten Tag Herr bzw. Guten Tag Frau wird nicht aus gegeben, nur der Name.
CptMetal
 
Posts: 5
Joined: 09. January 2007 16:25

Postby CptMetal » 09. January 2007 17:17

Alles klar, jetzt geht's.
CptMetal
 
Posts: 5
Joined: 09. January 2007 16:25

Postby martinpre » 09. January 2007 17:25

CptMetal wrote:<?

$_POST['pruefen_auf'] = ($Anrede == m) ? "Guten Tag Herr " : "Guten Tag Frau ";

echo $pruefen_auf.$Name;

?>


Das ist falsch, damit es IMMER und auf JEDEM Server funktioniert muss es so ausschaun (lange if sequenz):

Code: Select all
if ($_POST['Anrede']=='m'){
$titel = 'Guten Tag Herr ';
}elseif($_POST['Anrede']=='w'){
$titel = 'Guten Tag Frau ';
}else{
exit;
}

echo $titel.$_POST['Name'];


Ich hoffe, dass du verstanden hast, dass es besser ist mit den $_post, $_get, ... da das Skript sonst auf manchen Servern nicht funktioniert und ich glaube es fällt bei einer nächsten phpversion raus.
martinpre
 
Posts: 405
Joined: 22. May 2006 16:14
Location: Nähe Tulln / Österreich

Postby CptMetal » 09. January 2007 17:42

Ok, ich hab's verstanden, aber wie sieht's mit dem folgenden Taschenrechner aus:

<form action="<? $PHP_SELF; ?>" method="POST">
<table>
<tr>
<td><input type="radio" name="Rechenart" value="/">/
<input type="radio" name="Rechenart" value="+">+
<input type="radio" name="Rechenart" value="-">-
<input type="radio" name="Rechenart" value="*">*
</tr>
<tr>
<td>Wert1</td>
<td>Wert2</td>
</tr>
<tr>
<td><input type="text" name="wert1"></td>
<td><input type="text" name="wert2"></td>
</tr>
<tr>
<td></td>
<td><div align=right><input type="submit" name="Calculator" value="berechne"></div></td>
</tr>
</form>

<tr><td>
<?php
switch($Rechenart){
case "/": echo "<input type=\"text\" value=\"".($wert1/$wert2)."\"></td>"; break;
case "+": echo "<input type=\"text\" value=\"".($wert1+$wert2)."\"></td>"; break;
case "-": echo "<input type=\"text\" value=\"".($wert1-$wert2)."\"></td>"; break;
case "*": echo "<input type=\"text\" value=\"".($wert1*$wert2)."\"></td>"; break;
default: echo "<input type=\"text\"></td>"; break;
}
?>
CptMetal
 
Posts: 5
Joined: 09. January 2007 16:25

Postby martinpre » 09. January 2007 18:29

Das solltest du aus deinem Buch/Tutorial wntnehmen können, wenn so etwas grundlegendes wie jetzt diese Formulare nicht richtig erklärt sind, suche dir eine andere Wissensquelle!

Hier ist trotzdem der korrigierte Code:
Code: Select all
<form action="<? echo $PHP_SELF; ?>" method="POST">
<table>
  <tr>
    <td><input type="radio" name="Rechenart" value="/">/
    <input type="radio" name="Rechenart" value="+">+
    <input type="radio" name="Rechenart" value="-">-
    <input type="radio" name="Rechenart" value="*">*
  </tr>
  <tr>
    <td>Wert1</td>
    <td>Wert2</td>
  </tr>
  <tr>
    <td><input type="text" name="wert1"></td>
    <td><input type="text" name="wert2"></td>
  </tr>
  <tr>
    <td></td>
    <td><div align=right><input type="submit" name="Calculator" value="berechne"></div></td>
  </tr>
</form>

<tr><td>
<?php
  switch($_POST['Rechenart']){
    case "/": echo "<input type=\"text\" value=\"".($_POST['wert1']/$_POST['wert2'])."\"></td>"; break;
    case "+": echo "<input type=\"text\" value=\"".($_POST['wert1']+$_POST['wert2'])."\"></td>"; break;
    case "-": echo "<input type=\"text\" value=\"".($_POST['wert1']-$_POST['wert2'])."\"></td>"; break;
    case "*": echo "<input type=\"text\" value=\"".($_POST['wert1']*$_POST['wert2'])."\"></td>"; break;
    default: echo "<input type=\"text\"></td>"; break;
  }
?>
martinpre
 
Posts: 405
Joined: 22. May 2006 16:14
Location: Nähe Tulln / Österreich

Postby Wiedmann » 09. January 2007 18:47

martinpre wrote:
CptMetal wrote:
Code: Select all
<?
$_POST['pruefen_auf'] = ($Anrede == m) ? "Guten Tag Herr " : "Guten Tag Frau ";
echo $pruefen_auf.$Name;
?>

Das ist falsch, damit es IMMER und auf JEDEM Server funktioniert muss es so ausschaun (lange if sequenz):

Der Code ist zwar tatsächlich nicht korrekt. Aber nicht deswegen weil er den Trinitäts-Operator benutzt. Der Funktioniert mit jeder PHP-Version und Server
--> http://de.php.net/manual/en/language.op ... on.ternary

Code: Select all
$pruefen_auf = ('m' == $_POST['Anrede']) ? 'Guten Tag Herr ' : 'Guten Tag Frau ';
echo $pruefen_auf.$_POST['Name'];
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 5 guests