Antworten auf deine Fragen:
Neues Thema erstellen

durch Radiobutton anderen Inhalt anzeigen

zellerjohannes

Noch nicht viel geschrieben

Hallo

Muss bei einer Seite einstellen, dass per Radiobutton das Formular für die English-News bzw. Deutsch-News umgestellt werden kann.
Hat leider noch nicht ganz funktioniert.. :hmpf:
hoffe jemand kann mir kurz helfen.

Hier der Code.
HTML:
<form action="#" method="post">
  <input type="radio" name="language" id="en" value="en">
  English 
  <input type="radio" name="language" id="de" value="de">
Deutsch
</form>
  <?php
  if($_POST["language"] == "de")
  { 
  ?>
  Deutsch Formular
    <?php
  }
  else
  {
	  ?>
Englisch Formular
      
  <?php
  }
  ?>
Gruss
jz
 

Chriss1987

me.drinkCoffee();

AW: durch Radiobutton anderen Inhalt anzeigen

Hi,

was genau funktioniert denn nicht? Gibt es Fehlermeldungen? Was hast du schon alles versucht?

Schöne Grüße aus dem Sauerland!
Chriss
 

zellerjohannes

Noch nicht viel geschrieben

AW: durch Radiobutton anderen Inhalt anzeigen

@SineTempore: ääh.. nein submit-button habe ich nicht gemacht..habe aber auf anderen Seiten bereits gesehen, dass es manchmal ändert nur mit einem Klick auf den Radiobutton.
Für mich sieht das vielleicht plötzlich eher nach JavaScript aus.. weiss jemand etwas dazu?

@Chriss1987: Es wechselt einfach nichts, d.h. es zeigt natürlich das Englische an, da dies in der else-Schlaufe ist.

gruss
jz
 

MyBad

localhorst

AW: durch Radiobutton anderen Inhalt anzeigen

Jap, dafür brauchst du js, wenn du ohne Submit-Button arbeiten möchtest.

Wenn du kein JS möchtest, bau doch einfach Links mit einer Übergabe ein, die du dir per $_GET["lang"] aus der url ziehst.

Ist doch easy!
 

netbandit

Aktives Mitglied

AW: durch Radiobutton anderen Inhalt anzeigen

Beispiel:

PHP:
<?php
$CH_LANG['de']='';
$CH_LANG['en']='';
$LANG='en';
if(isset($_POST["language"])){
    $LANG=$_POST["language"];
}
$CH_LANG[$LANG]=' checked';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Test</title>
</head>
<body>
    <form action="" method="post" name="lang">
        <input type="radio" name="language" id="en" value="en" onClick="document.lang.submit()"<?php echo $CH_LANG['en'];?>> English
        <input type="radio" name="language" id="de" value="de" onClick="document.lang.submit()"<?php echo $CH_LANG['de'];?>> Deutsch
    </form>
<?php
if($_POST["language"] == "de"){
    ?>
    Deutsch Formular
    <?php
}
else{
    ?>
    Englisch Formular
    <?php
}
?>
</body>
</html>
 

zellerjohannes

Noch nicht viel geschrieben

AW: durch Radiobutton anderen Inhalt anzeigen

Vielen Dank, das hilft mir schon ziemlich weiter..nur gibt es jetzt das Problem, da man sich vorher einloggt wird man automatisch wieder ausgelogt und ich habe noch nie mit Sessions gearbeitet..den Einstieg nie richtig verstanden! kannst du mir anhand diesem Beispiel vielleicht helfen?

Code für das Login-Auslesen:
PHP:
<?php
$user = $_POST["user"];
$pass_ = $_POST["pass"];
$pass = md5($pass_);

if (!$user || !$pass)
{ echo $errorMessage; }

if ($user == "admin" and $pass == "c21c3b7331a10e7f356e8e1ddc933e0f")
{
	?>

gruss
jz
 

saila

Moderatorle

AW: durch Radiobutton anderen Inhalt anzeigen

Hi,

für einen Login brauch man schon etwas mehr Code um den Login einmal sicher zu machen und letztendlich gehe ich davon aus, dass die Daten des User's oder Admin in einer Datenbank liegen.

Ergo sind deine Stichwörter:
// Post
trim()
strip_tags()
md5() / was du schon hast
empty oder isset - je nachdem was dir zusagt, wobei es da doch noch wesentliche Unterschiede gibt.

// Datenbank
mysql_connect()
mysql_select_db()
mysql_query()
mysql_real_escape_string()
mysql_fetch_array()

// Session
session_save_path()
session_name()
session_start()
$_SESSION
setcookie()
$_COOKIE

Hierzu findest du weiterführende Infos unter PHP: Hypertext Preprocessor

Im fortgeschrittenen Status kannst du einige Bereiche herausnehmen durch ini_set() Aber dazu mehr, wenn das Loginscript in Teilen steht.

Weitere Tipps unter:
 

zellerjohannes

Noch nicht viel geschrieben

AW: durch Radiobutton anderen Inhalt anzeigen

Nene das ist nur ein admin bereich für mich. Ist nicht mit einer Datenbank verbunden und gibt nur einen user. Kannst du mir das anhand vom Beisp. oben zeigen?
 

zellerjohannes

Noch nicht viel geschrieben

AW: durch Radiobutton anderen Inhalt anzeigen

Hi,

für einen Login brauch man schon etwas mehr Code um den Login einmal sicher zu machen und letztendlich gehe ich davon aus, dass die Daten des User's oder Admin in einer Datenbank liegen.

Ergo sind deine Stichwörter:
// Post
trim()
strip_tags()
md5() / was du schon hast
empty oder isset - je nachdem was dir zusagt, wobei es da doch noch wesentliche Unterschiede gibt.

// Datenbank
mysql_connect()
mysql_select_db()
mysql_query()
mysql_real_escape_string()
mysql_fetch_array()

// Session
session_save_path()
session_name()
session_start()
$_SESSION
setcookie()
$_COOKIE

Hierzu findest du weiterführende Infos unter PHP: Hypertext Preprocessor

Im fortgeschrittenen Status kannst du einige Bereiche herausnehmen durch ini_set() Aber dazu mehr, wenn das Loginscript in Teilen steht.

Weitere Tipps unter:

Nene das ist nur ein admin bereich für mich. Ist nicht mit einer Datenbank verbunden und gibt nur einen user. Kannst du mir das anhand vom Beisp. oben zeigen?
 

saila

Moderatorle

AW: durch Radiobutton anderen Inhalt anzeigen

Naja, zeigen muss ich dir das nicht, wenn es keine Datenbank gibt, fällt alles mit mysql... weg. Der Rest bleibt. Und nur so ein Tipp am Rande - verwende zu Beginn deines Scripts folgende Zeile:
PHP:
<?php
error_reporting(E_ALL);

?>

Damit kannst du deine Fehler im Script erkennen ;)

Den Rest bitte ich dich mal selbst etwas einzulesen. Wenn dann Fragen aufkommen, wird dir hier ganz sicher Hilfe zur Seite stehen. Doch einfach mal so vorweg gibt's nichts ;)
 

Ditin

Web Developer

AW: durch Radiobutton anderen Inhalt anzeigen

Hallo,

wäre es nicht einfacher die Länderabfrage gleichzeitig mit dem Login zu machen? oder
Ein einfacher Login kann alternativ auch über .htaccess realisiert werden. Dann brauchst Du Dich nicht um Sessions oder Cookies zu kümmern. Hier gibt es auch ein Tutorial darüber (habe es mir aber nicht angesehen):



Ganz unten das Letzte... ich verlinke absichtlich nicht direkt damit Dir nicht gleich die Punkte dafür abgezogen werden. Suchmaschinen finden auch viele Tutorials über .htaccess (Verzeichnisschutz).

Viele Webhoster bieten auch in der Webspace Verwaltung an bestimmte Verzeichnisse mit einem Passwortschutz zu versehen, dann brauchst Du noch nicht mal manuell die .htaccess und .htpasswd anzulegen.

Mfg.
 
I

ixiter

Guest

AW: durch Radiobutton anderen Inhalt anzeigen

Es ist tatsächlich Javascript und css gefragt.
So wie ich es verstehe willst entweder den englischen Bereich oder den deutschen Bereich anzeigen. Das soll der User durch klick auf deinen der Radiobuttons entscheiden.
HTML:
<form action="" method="post">
  <input type="radio" name="language" id="en" value="en" onclick="document.getElementById('de_news').style.display='none'; document.getElementById('en_news').style.display='block';"> English
  <input type="radio" name="language" id="de" value="de" onclick="document.getElementById('de_news').style.display='block'; document.getElementById('en_news').style.display='none';"> Deutsch

  <div id="de_news" style="display:none">
    <h2>Deutsche Version des Artikels</h2>
    <textarea name="de_article"></textarea>
  </div>

  <div id="en_news" style="display:none">
    <h2>English version of the article</h2>
    <textarea name="en_article"></textarea>
  </div>

</form>
Am Anfang sind beide Einbgabefelder ausgeblendet. Durch Klick auf einen der Radieo Buttons wird entweder das eine oder das andere eingeblendet.
Beachte, dass du den Formelementen in beiden Divs unterschiedliche Namen geben musst, da es sonst zu Problemen bei der Formularauswertung im PHP Script kommen kann. Insbesondere dann, wenn du checkboxes, radios oder selects verwendest. Hätten dann in beiden Divs die Element die gleichen names, würde im PHP Script immer der Wert des zuletzt definierten genommen, auch wenn das zugehörige Div ausgeblendet war.
Alternativ kannst du auch PHP array Bezeichner als names benutzen. z.B. article[de] und article[en] usw. usf. Das macht die Auswertung in Abhängigkeit der gewählten Sprache evtl. einfacher.
 
Zuletzt bearbeitet:

zellerjohannes

Noch nicht viel geschrieben

AW: durch Radiobutton anderen Inhalt anzeigen

Es ist tatsächlich Javascript und css gefragt.
So wie ich es verstehe willst entweder den englischen Bereich oder den deutschen Bereich anzeigen. Das soll der User durch klick auf deinen der Radiobuttons entscheiden.
HTML:
<form action="" method="post">
  <input type="radio" name="language" id="en" value="en" onclick="document.getElementById('de_news').style.display='none'; document.getElementById('en_news').style.display='block';"> English
  <input type="radio" name="language" id="de" value="de" onclick="document.getElementById('de_news').style.display='block'; document.getElementById('en_news').style.display='none';"> Deutsch

  <div id="de_news" style="display:none">
    <h2>Deutsche Version des Artikels</h2>
    <textarea name="de_article"></textarea>
  </div>

  <div id="en_news" style="display:none">
    <h2>English version of the article</h2>
    <textarea name="en_article"></textarea>
  </div>

</form>
Am Anfang sind beide Einbgabefelder ausgeblendet. Durch Klick auf einen der Radieo Buttons wird entweder das eine oder das andere eingeblendet.
Beachte, dass du den Formelementen in beiden Divs unterschiedliche Namen geben musst, da es sonst zu Problemen bei der Formularauswertung im PHP Script kommen kann. Insbesondere dann, wenn du checkboxes, radios oder selects verwendest. Hätten dann in beiden Divs die Element die gleichen names, würde im PHP Script immer der Wert des zuletzt definierten genommen, auch wenn das zugehörige Div ausgeblendet war.
Alternativ kannst du auch PHP array Bezeichner als names benutzen. z.B. article[de] und article[en] usw. usf. Das macht die Auswertung in Abhängigkeit der gewählten Sprache evtl. einfacher.

Vielen Dank! Das hört sich super an und ich werde es gleich anpassen und einbauen, das Login-Problem wird dann auch nicht mehr sein, da es ja nicht auf PHP zugreift oder?

gruss jz
 

zellerjohannes

Noch nicht viel geschrieben

AW: durch Radiobutton anderen Inhalt anzeigen

Vielen Dank an die Hilfe. Jetzt funktioniert alles, bis auf, dass man beim Deutschen-Newsformular wieder ausgeloggt wird. Dabei habe ich zur Sicherheit das Englische kopiert und nochmals umgeändert, dass es sicher identisch ist. Das Englische funktioniert einwandfrei!

Mein Code:
HTML:
<form action="" method="post">
  <input type="radio" name="language" id="en" value="en" onclick="document.getElementById('de_news').style.display='none'; document.getElementById('en_news').style.display='block';"> English
  <input type="radio" name="language" id="de" value="de" onclick="document.getElementById('de_news').style.display='block'; document.getElementById('en_news').style.display='none';"> Deutsch

  <div id="de_news" style="display:none">
  <form id="form_de" name="form_de" method="post" action="../news/eintragen.php" target="_self">
  <p class="verdana_gross">Neue Nachricht: (de)</p>
  <table width="320" height="200" border="0" class="verdana">
    <tr>
      <td width="88" height="27">Titel:</td>
      <td colspan="2"><label>
        <input name="title" type="text" id="title" size="30" />
      </label></td>
    </tr>
    <tr>
      <td height="82">Nachricht:</td>
      <td colspan="2"><label>
        <textarea name="message" id="message" cols="28" rows="5"></textarea>
      </label></td>
    </tr>
    <tr>
      <td height="22">Link-URL:</td>
      <td colspan="2"><label>
        <input name="url1_link" type="text" id="url1_link" value="http://" size="30" />
      </label></td>
    </tr>
    <tr>
      <td height="22">Link-Name:</td>
      <td colspan="2"><input name="url1_name" type="text" id="url1_name" size="30" /></td>
    </tr>
    <tr>
      <td height="35"><label>
        <input type="reset" name="button" id="button" value="Reset" />
      </label></td>
      <td width="170">&nbsp;</td>
      <td width="48"><label>
        <div align="right">
          <input type="submit" name="button2" id="button2" value="Send" />
        </div>
        </label></td>
    </tr>
  </table>
  <?php include("../news/time.php"); ?>
<input name="date" type="hidden" value="<?php echo $date1; ?>" />
</form>
  </div>

  <div id="en_news" style="display:none">
  <form id="form_en" name="form_en" method="post" action="../en/news/eintragen.php" target="_self">
  <p class="verdana_gross">New Message: (en)</p>
  <table width="320" height="200" border="0" class="verdana">
    <tr>
      <td width="88" height="27">Title:</td>
      <td colspan="2"><label>
        <input name="title" type="text" id="title" size="30" />
      </label></td>
    </tr>
    <tr>
      <td height="82">Message:</td>
      <td colspan="2"><label>
        <textarea name="message" id="message" cols="28" rows="5"></textarea>
      </label></td>
    </tr>
    <tr>
      <td height="22">Link-URL:</td>
      <td colspan="2"><label>
        <input name="url1_link" type="text" id="url1_link" value="http://" size="30" />
      </label></td>
    </tr>
    <tr>
      <td height="22">Link-Name:</td>
      <td colspan="2"><input name="url1_name" type="text" id="url1_name" size="30" /></td>
    </tr>
    <tr>
      <td height="35"><label>
        <input type="reset" name="button" id="button" value="Reset" />
      </label></td>
      <td width="170">&nbsp;</td>
      <td width="48"><label>
        <div align="right">
          <input type="submit" name="button2" id="button2" value="Send" />
        </div>
        </label></td>
    </tr>
  </table>
  <?php include("../en/news/time.php"); ?>
<input name="date" type="hidden" value="<?php echo $date1; ?>" />
</form>
</div>

</form>

Gruss jz
 

Doitsu

Aktives Mitglied

AW: durch Radiobutton anderen Inhalt anzeigen

Poste mal noch eintragen.php - weil da muss ja der fehler sein.. An HTML wird es jedenfalls nicht liegen, dass PHP die session nicht mehr erkennt ..
 

zellerjohannes

Noch nicht viel geschrieben

AW: durch Radiobutton anderen Inhalt anzeigen

Poste mal noch eintragen.php - weil da muss ja der fehler sein.. An HTML wird es jedenfalls nicht liegen, dass PHP die session nicht mehr erkennt ..

Hier der Code von eintragen.php (de):
PHP:
<body class="verdana" bgcolor="#382d20">
<?php
$title = $_POST["title"]; 
$news = $_POST["message"]; 
$linkURL = $_POST["url1_name"]; 
$linkNAME = $_POST["url1_link"];
$date = $_POST["date"];

if (!$title or !$news)
{	?>
		<div>
  <p class="gross1"><strong>
	  Bitte f&uuml;llen Sie alle Felder aus!
    </strong></p>
    <a href="javascript:history.back();"> zur&uuml;ck zum News-Formular</a></div>
<?php
}
else
{
if ($linkURL == "http://")
{
	$linkURL = "";
	$linkNAME = "";
}
require ".include.php";
$eintrag = "INSERT INTO newsscript (Titel, Nachricht, LinkURL, LinkNAME, Datum)
VALUES ('$title', '$news', '$linkURL', '$linkNAME', '$date')";
$eintragen = mysql_query($eintrag);

?>
    <div>
    <p class="gross1"><strong>
	  Ihre Nachricht wurde erfolgreich gespeichert.
    </strong></p>
    <p class="verdana">Bitte laden Sie die Seite neu, um den neuen Eintrag zu sehen.
    </p>
    <a href="../home.html"> zur&uuml;ck zur Startseite</a></div>.
        <?php
		}
	?>
</body>
 
I

ixiter

Guest

AW: durch Radiobutton anderen Inhalt anzeigen

Du machst die Fehler vor denen ich vorher gewarnt habe. Du benutzt in beiden Divs gleiche names für die Elemente in den forms.
Dann auch noch form in form. Ganz böse. ;)

Außer der Überschrift ändert sich auch nichts in den Formularen. Das Ganze wird damit ziemlich unsinnig.
Das einzige Unterscheidungsmerkmal ist ja tatsächlich, welche Sprache mit den radios gewählt wurde. Du brauchst also nicht einmal zwei Formulare. Du musst bei der Auswertung lediglich den Zustand der radios berücksichtigen, um zu entscheiden für welche Sprache der Artikel sein soll.
Ich glaube, du machst es dir nur unnötig kompliziert.

Ein Formular reicht aus. Die Radios bestimmen die gewählte Sprache. Alles was hier vorher besprochen wurde, ist hinfällig.

Mein Vorschlag:
HTML:
<form action="../news/eintragen.php" method="post">
  <input type="radio" name="language" id="en" value="en"> English
  <input type="radio" name="language" id="de" value="de"> Deutsch

  <p class="verdana_gross">Neue Nachricht:</p><!-- Am Radio erkennt man doch, um welche Sprache es sich handelt -->
  <table width="320" height="200" border="0" class="verdana">
    <tr>
      <td width="88" height="27">Titel:</td>
      <td colspan="2"><label>
        <input name="title" type="text" id="title" size="30" />
      </label></td>
    </tr>
    <tr>
      <td height="82">Nachricht:</td>
      <td colspan="2"><label>
        <textarea name="message" id="message" cols="28" rows="5"></textarea>
      </label></td>
    </tr>
    <tr>
      <td height="22">Link-URL:</td>
      <td colspan="2"><label>
        <input name="url1_link" type="text" id="url1_link" value="http://" size="30" />
      </label></td>
    </tr>
    <tr>
      <td height="22">Link-Name:</td>
      <td colspan="2"><input name="url1_name" type="text" id="url1_name" size="30" /></td>
    </tr>
    <tr>
      <td height="35"><label>
        <input type="reset" name="button" id="button" value="Reset" />
      </label></td>
      <td width="170">&nbsp;</td>
      <td width="48"><label>
        <div align="right">
          <input type="submit" name="button2" id="button2" value="Send" />
        </div>
        </label></td>
    </tr>
  </table>
  <?php include("../news/time.php"); ?>
<input name="date" type="hidden" value="<?php echo $date1; ?>" />
</form>
In ../news/eintragen.php fragst du dann $_POST['lang'] ab und weißt für welche Sprache der Artikel ist.
Das ganze Gedönse mit unterschiedlichen Formularen usw. ist überflüssig.
 

zellerjohannes

Noch nicht viel geschrieben

AW: durch Radiobutton anderen Inhalt anzeigen

Du machst die Fehler vor denen ich vorher gewarnt habe. Du benutzt in beiden Divs gleiche names für die Elemente in den forms.
Dann auch noch form in form. Ganz böse. ;)

Außer der Überschrift ändert sich auch nichts in den Formularen. Das Ganze wird damit ziemlich unsinnig.
Das einzige Unterscheidungsmerkmal ist ja tatsächlich, welche Sprache mit den radios gewählt wurde. Du brauchst also nicht einmal zwei Formulare. Du musst bei der Auswertung lediglich den Zustand der radios berücksichtigen, um zu entscheiden für welche Sprache der Artikel sein soll.
Ich glaube, du machst es dir nur unnötig kompliziert.

Ein Formular reicht aus. Die Radios bestimmen die gewählte Sprache. Alles was hier vorher besprochen wurde, ist hinfällig.

Mein Vorschlag:
HTML:
<form action="../news/eintragen.php" method="post">
  <input type="radio" name="language" id="en" value="en"> English
  <input type="radio" name="language" id="de" value="de"> Deutsch

  <p class="verdana_gross">Neue Nachricht:</p><!-- Am Radio erkennt man doch, um welche Sprache es sich handelt -->
  <table width="320" height="200" border="0" class="verdana">
    <tr>
      <td width="88" height="27">Titel:</td>
      <td colspan="2"><label>
        <input name="title" type="text" id="title" size="30" />
      </label></td>
    </tr>
    <tr>
      <td height="82">Nachricht:</td>
      <td colspan="2"><label>
        <textarea name="message" id="message" cols="28" rows="5"></textarea>
      </label></td>
    </tr>
    <tr>
      <td height="22">Link-URL:</td>
      <td colspan="2"><label>
        <input name="url1_link" type="text" id="url1_link" value="http://" size="30" />
      </label></td>
    </tr>
    <tr>
      <td height="22">Link-Name:</td>
      <td colspan="2"><input name="url1_name" type="text" id="url1_name" size="30" /></td>
    </tr>
    <tr>
      <td height="35"><label>
        <input type="reset" name="button" id="button" value="Reset" />
      </label></td>
      <td width="170">&nbsp;</td>
      <td width="48"><label>
        <div align="right">
          <input type="submit" name="button2" id="button2" value="Send" />
        </div>
        </label></td>
    </tr>
  </table>
  <?php include("../news/time.php"); ?>
<input name="date" type="hidden" value="<?php echo $date1; ?>" />
</form>
In ../news/eintragen.php fragst du dann $_POST['lang'] ab und weißt für welche Sprache der Artikel ist.
Das ganze Gedönse mit unterschiedlichen Formularen usw. ist überflüssig.

ok. du hast wahrscheinlich recht! Aber wie muss ich das in eintragen.php eingeben? "lang" wird ja gar nicht definiert. Verstehe nicht ganz..?!
 

Doitsu

Aktives Mitglied

AW: durch Radiobutton anderen Inhalt anzeigen

ICh weiss jetzt nicht, ob es an einer Stelle deines code steht, oder im 'include.php', aber ich sehe bei dir nun kein brauchbares session_start()..

& 'require ".include.php";'.. Meinst du './include.php'? oder startet der Dateiname wirklich mit einem Punkt?

Edit:

Code:
<input type="radio" name="language" id="en" value="en"> English
<input type="radio" name="language" id="de" value="de"> Deutsch

Da wird die Sprache geschickt - $_POST['language']; (= en oder de)

Dazu wuerde ich, wenn du es so machst, die ganzen sachen in Englisch schreiben, also 'New message', 'title' usw ..
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.479
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben