php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.06.2008, 22:28  
Neuer Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 11
0uhr15 befindet sich auf einem aufstrebenden Ast
Standard Php Formular prüfen mit Javascript ohne <form>

Guten Abend,

ich habe eine Grundsatzfrage:

Ein Formular besitzt mehrere checkboxen. Klickt man auf den submit button, soll geprüft werden, ob mindestens eine checkbox angeklickt ist. Ist dies der Fall, soll die E-Mail versendet werden. Wenn nicht, soll eine Fehlermeldung ausgegeben werden.

Diese Funktion kann man per javascript lösen. Beim Googlen habe ich oft die Lösung mittels eines <form ... > tags gefunden, in dem sich dann diese checkboxen und der submit button befinden.

Gibt es eine Möglichkeit, diesen Form-Tag zu umgehen? Wenn ja, wie?

(Hintergrund: Das Formular besteht aus insegesamt 14 Fragen - bestehend aus Radio-Buttons, Textfeldern, etc. Da insgesamt alle Fragen durch unterschiedliche Javascript-Funktionen geprüft werden sollen, würde das <form ...> Tag doch monstergroß werden!?)

Danke im Voraus!
0uhr15 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.06.2008, 22:54  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ein Formtag ist die Voraussetzung, dass die Daten überhaupt übermittelt werden.

1/ Eine Javascript Prüfung allein ist i.A. nicht ausreichend, weil JS abgeschaltet werden kann.
2/ Möglicherweise meinst Du eine onSubmit Anweisung innerhalb des Tags. Du kannst die Prüfung in einen extray JS Bereich auslagern, sogar in eines externe .js Datei

Stell Deine Frage bitte präziser und gib ggf. ein Beispiel...
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 13.06.2008, 23:10  
Neuer Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 11
0uhr15 befindet sich auf einem aufstrebenden Ast
Standard

Okay, hier ein paar Snippets:

Drei Checkboxen. Es soll später geprüft werden, ob mindestens eine davon "checked" ist. Wenn nicht, Fehlermeldung.
PHP-Code:

<body>

<!-- Beginn des PHP-Codes -->
<?php 

...

<
span>
<
input type="checkbox" name="checkbox1" value="Ja"
<? if($_POST['checkbox1']=='Ja') echo 'checked="checked"'?>>Antwort A
<input type="checkbox" name="checkbox1" value="Ja"
<? if($_POST['checkbox1']=='Ja') echo 'checked="checked"'?>>Antwort B
<input type="checkbox" name="checkbox1" value="Ja"
<? if($_POST['checkbox1']=='Ja') echo 'checked="checked"'?>>Antwort C
</span>
Hier werden - am Ende der Html-Datei - die Daten per submit-button verschickt:
PHP-Code:
<div>
<input type="submit" name="submit" value="Abschicken">
<input type="reset" value="Zurücksetzen">
</div>

<?php

?>

</body>
</html>
Das Formular besitzt kein <form> tag und funktioniert einwandfrei. Wie gesagt, ich möchte gern die Prüfroutine implementieren. *hm


Für konstruktive Vorschläge danke ich im Voraus!
0uhr15 ist offline  
Alt 13.06.2008, 23:34  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Versteh ich nicht. Was hast Du denn für ein Problem mit dem Form Tag? Das Body Tag ist doch auch 'groß' ??
Datenübetragung ohne Form ist nicht definiert und reines Gutdünken des Browsers (und damit Glückssache). Davon ist dringend abzuraten. Schon gar nicht, wirst Du hier auf einen POST Request prüfen können.

Das Code Bsp. ist auch schnell hinkopiert, oder? Ist nämlich auch Murx. Gleich benannte Input Elemente funktionieren nur bei Radioboxes oder mit [].
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (13.06.2008 um 23:37 Uhr).
nikosch ist offline  
Alt 14.06.2008, 06:54  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo, wenn du das ganze etwas abstrahierst, muss das garnicht mal so gross sein. Benenn deine Checkboxen-Gruppen doch einfach so:

<input name="hobbies[]" value="soccer" /> Soccer
<input name="hobbies[]" value="paintball" /> Paintball
..

Und dann kannst du mit PHP das ganze so testen, ob mindestens ein Element angeklickt wurde:
array_key_exists("hobbies", $_POST) and count($_POST["hobbies"]) > 0
(wobei das count() fast schon ueberfluessig ist)

Das ganze dann noch mit anderen Checkbox-Gruppen auf die gleiche Weise
<input type="checkbox" name="favoriteMovies[]" value="Superstau" /> Superstau
<input type="checkbox" name="favoriteMovies[]" value="Surf Nazis Must Die" /> 08/15 Trash-Movie

In PHP kannst du das dann mit einer Schleife durchlaufen:
PHP-Code:
<?php
$arrRequiredGroups 
= array("hobbies" => "Hobbies""favoriteMovies" => "Lieblingsfilme");
$arrWarnings = array();
foreach (
$arrRequiredGroups as $strGroup => $strTitle) {
  
$blnFormOk array_key_exists($strGroup$_POST) && count($_POST[$strGroup]) > 0;
  if (!
$blnFormOk) {
    
$arrWarnings[] = $strTitle;
  }
}
if (
count($arrWarnings) > 0) {
  
printf("<ul><li>%s</li></ul>"implode("</li><li>"$arrWarnings);
}
?>
In JavaScript saehe das ganze ziemlich aehnlich aus:
Code:
function Check(objForm) {
  var arrWarnings = new Array();
  var arrRequiredGroups = { hobbies : "Hobbies", favoriteMovies : "Lieblingsfilme" };
  var arrElements, intChecked;
  for (var strGroup in arrRequiredGroups) {
    arrElements = document.getElementsByName(strGroup + "[]");
    for (var i = 0, intChecked = 0; i < arrElements.length; i++) {
      intChecked += parseInt(arrElements[i].checked, 10);
    }
    if (intChecked > 0) {
      arrWarnings[] = arrRequiredGroups[strGroup];
    }
  }
  if (arrWarnings.length > 0) {
    alert("Please fillout:\n" + arrWarnings.join("\n"));
  }
  return arrWarnings.length == 0;
}
Code:
<form action=".." onsubmit="return Check(this)"> .. </form>
(ungetestet)

Natuerlich kannst du mit PHP dann auch Teile deiner JavaScript-Ueberpruefung generieren (das "arrRequiredGroups" Objekt naemlich).
__________________
"Nuschel ich?" - "Was?"

Geändert von Chriz (14.06.2008 um 06:57 Uhr).
Chriz ist offline  
Alt 14.06.2008, 11:31  
Neuer Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 11
0uhr15 befindet sich auf einem aufstrebenden Ast
Standard

Hallo!

@nikosch77-new: Japp, hab einfach einen <input ...> tag kopiert und vergessen die Bezeichnung zu wechseln.

@Chriz: Wow! Vielen dank für deine Tipps.

Für die checkboxen habe ich bisher keine Arrays verwendet:
PHP-Code:
<input type="checkbox" name="checkbox1" value="Ja"
<? if($_POST['checkbox1']=='Ja') echo 'checked="checked"'?>>Antwort A

<input type="checkbox" name="checkbox2" value="Ja"
<? if($_POST['checkbox2']=='Ja') echo 'checked="checked"'?>>Antwort B

usw.
Den Namen der checkboxen habe ich für das Mailformular bisher wie folgt verwendet:

PHP-Code:
//Den Nachrichtentext der E-Mail für eine HTML-Mail zusammenbauen

$message.="\nFRAGE 2";
$message.="\r\n";
$message.="Hier die Ergebnisse: ";
$message.=$checkbox1;
$message.="\r\n";
$message.=$checkbox2;
... 
Mit Arrays ist das nicht möglich, da für alle checkboxen der name="..." der selbe ist.

Meine Frage: Wie weise ich an, dass anstatt des name="..." das value="..." bei der Validierung des E-Mail Formulares genutzt wird?

Danke im Voraus.

Geändert von 0uhr15 (14.06.2008 um 12:01 Uhr).
0uhr15 ist offline  
Alt 14.06.2008, 13:38  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Zitat von 0uhr15 Beitrag anzeigen
Meine Frage: Wie weise ich an, dass anstatt des name="..." das value="..." bei der Validierung des E-Mail Formulares genutzt wird?
Siehe hier: http://www.php.de/mysql/1576-erledig...html#post12378 #2 bis #4
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 14.06.2008, 13:52  
Neuer Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 11
0uhr15 befindet sich auf einem aufstrebenden Ast
Standard

@nikosch77-new: Sorry mit deinem Tipp kann ich überhaupt nix anfangen. Würdest du das bitte etwas genauer erklären? Danke!
0uhr15 ist offline  
Alt 14.06.2008, 13:56  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ungern. Lesen lernen und verstehen!

Code:
<input name="wechmit[]" value="Schlüsselangabe" type="checkbox" />
PHP-Code:
foreach ($_POST["wechmit"] as $id) {
  
// delete $id
  

Code:
<input name="wechmit[Schlüsselangabe]" value="1" type="checkbox" />
PHP-Code:
foreach ($_POST["wechmit"] as $id => $tmp) {
  
// delete $id
  

__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 14.06.2008, 13:57  
Neuer Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 11
0uhr15 befindet sich auf einem aufstrebenden Ast
Standard

Erbitte kurze Hilfe:



PHP-Code:
<span class="spacer1">
<input type="checkbox" name="zielgruppe[]" value="Antwort_A" />Antwort A
</span><br />

<span class="spacer1">
<input type="checkbox" name="zielgruppe[]" value="Antwort_B" />Antwort B
</span><br />

<?PHP
foreach ($_POST["zielgruppe"] as $id) {
// delete $id
}  
?>
Beim Senden des Formulares werden die Felder (wenn andere Pflichtfelder nicht "checked" oder "selected" sind und das Formular somit nicht versendet wird) einfach "unchecked und auch nicht überprüft, ob mindestens eine checkbox angeklickt wurde. Was mache ich falsch?

Würde mich wirklich über ein paar Tipps freuen!

Geändert von 0uhr15 (14.06.2008 um 17:00 Uhr).
0uhr15 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP: Formular Generator Zergling-new Tutorials 16 06.07.2010 03:14
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Formular Pflichtfelder für Frontpage Formular erstellen Caruso JavaScript, Ajax und mehr 5 21.06.2008 09:17
Wert aus Textfeld in neues Formular übernehmen (kein Submit) PsychoEagle HTML, Usability und Barrierefreiheit 9 02.01.2007 14:51
formular includen samspa5 PHP Tipps 2006 13 18.03.2006 11:37
JavaScript - Formularsubmit und Weiterleitung HTML, Usability und Barrierefreiheit 3 10.11.2005 17:12
[Erledigt] Formular in Formular HTML, Usability und Barrierefreiheit 4 19.10.2005 12:18
<form> Formular Abstand ausschalten??? becks123 HTML, Usability und Barrierefreiheit 5 13.10.2005 20:21
JavaScript Formular abschicken HTML, Usability und Barrierefreiheit 4 15.08.2005 01:43
[Erledigt] Mit PHP prüfen ob JavaScript beim Browser aktiviert ist? HTML, Usability und Barrierefreiheit 3 21.07.2005 12:43
[Erledigt] PHP Formular ~~wichtig~~ PHP Tipps 2005 27 29.05.2005 19:38
[Erledigt] Daten in einem Formular ausgeben und ändern PHP Tipps 2004-2 7 07.12.2004 17:22
Problem mit Formular und Javascript phpKid HTML, Usability und Barrierefreiheit 6 14.10.2004 23:51
Javascript HTML, Usability und Barrierefreiheit 5 31.08.2004 18:30
[Erledigt] Daten in neuem Formular anzeigen PHP Tipps 2004 6 21.07.2004 10:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php formular überprüfen, php formular prüfen, http://www.php.de/php-tipps-2008/1674-php-formular-pruefen-mit-javascript-ohne-form.html, checkbox ohne form, input prüfen, js formular prüfen, javascript checkbox array prüfen, javascript checkbox prüfen array, input type prüfen, formular prüfen php, php javascript prüfen, javascript formular prüfen checkbox, javascript checkbox prüfen, javascript formular prüfen, checkbox mehrfachauswahl ohne formular, javascript ganzes formular prüfen, checkbox ohne formular, form prüfen js, php überprüfen von radiobutton-gruppe, php formulardaten prüfen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:48 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum