Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/10/2012, 15:17
gatoher
 
Fecha de Ingreso: marzo-2010
Mensajes: 30
Antigüedad: 14 años, 7 meses
Puntos: 0
Problema con un formulario

Hola a todos. Bueno pues tengo un problema con este formulario. No quiere funcionar. Supuestamente debes de rellenar todos los campos con un *, sino debería devolverte con una franja roja los campos que no has rellenado. Pero nada no quiere ir. La cosa me esta trayendo de cabeza por que no consigo ver el error.
La verdad es que estoy aprendiendo PHP y no se ya que hacer. Si lo ejecutas, solo falla los campos de Firstname, Lastname, Yourgender. Los campos de password y el texto que hay debajo de Membership Form si funcionan. Sale resaltados de color si no rellenan.
Y si rellenas todos los campos si se envía el formulario.
Osea el fallo esta en: Firstname, Lastname, Yourgender. Debe ser que el codigo esta mal construido. Algo que no se, seguro. Os dejo el script a ver si me podeis ayudar:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
			<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
			
			
	<head>
	<title>Membership Form</title>
	<link rel="stylesheet" type="text/css" href="common.css">
	<style type="text/css">
		.error { background: #90EE90; color: white; padding: 0.2em;}
		</style>
	
	</head>
	 
	<body>
	
	<?php
	
	
		if ( isset ( $_POST["submitbutton"] ) ) {
			processform ();
			} else {
				displayform ( array() );
				}
				
		function validatefield ( $fieldname, $missingfields ) {
			if ( in_array( $fieldname, $missingfields ) ) {
			 echo   ' class id="error" ';
			 }	
			 	}
			 	
		function setvalue ( $fieldname ) {
			if ( isset ( $_POST[$fieldname] ) ) {
				echo $_POST[$fieldname];
				}
						}
						
		function setchecked ( $fieldname, $fieldvalue )  {
			if ( isset ( $_POST[$fieldname]) and $_POST[$fieldname] == $fieldvalue) {
				echo ' checked="checked" ' ;
				}
					}
					
		function setselected ( $fieldname, $fieldvalue ) {
			if ( isset ( $_POST[$fieldname] ) and $_POST[$fieldname] == $fieldvalue ) {
				echo ' selected="selected" ' ;
				}
				}
				
				
		function processform () {
			$requiredfields = array ("firstname", "lastname", "password1", "password2", "gender" );
				$missingfields = array ();
				
		foreach ( $requiredfields as $requiredfield ) {
			if ( !isset ( $_POST[$requiredfield]) or !$_POST[$requiredfield] ) {
				$missingfields[] = $requiredfield;
				}
					}
					
		if ($missingfields) {
			displayform ($missingfields);
				} else {
					displaythanks ();
					
				}
						}
							 
		
		function displayform ($missingfields) {
		
		?>
	
		<h1>Membersship Form</h1>
		
		<?php if ( $missingfields ) { ?>
		
		<p class="error">There were some problems with the form you submitted.
		Please complete the fields highlighted below and click Send Details to 
		resend the form.</p>
		
		<?php } else { ?>
		
		<p>Thanks for choosing to join The Widget Club. To register, please fill
		in your details below and click Send Details. Fields marked with an
		asterisk (*) are requiered. </p>
		
		<?php } ?>
		
		
		<form action="registration.php" method="post">
		<div style="width: 30em;">
		
		// yo creo que el eror esta apartir de firstname 
		
			<label for="firstname" <?php validatefield ( "firstname", $missingfields ) ?> > First name * </label>
			<input type="text" name="firstname" id="firstname" value="<?php setvalue("firstname") ?>" />
			
			<label for="lastname"<?php validatefield ("lastname", $missingfields ) ?>> Last name * </label>
			<input type="text" name="lastname" id="lastname" value="<?php setvalue ("lastname") ?> "/>
			
			<label for="password1"<?php if ($missingfields) echo ' class="error" ' ?>> Choose a password *</label>
			<input type="password" name="password1" id="password1" value="" />
		 	<label for="password2"<?php if ($missingfields) echo ' class="error" ' ?>> Retype password *</label>
			<input type="password" name="password2" id="password2" value="" />
			
			<label <?php validatefield ("gender", $missingfields ) ?> > Your gender: * </label>
			<label for="gendermale">Male</label>
			<input type="radio" name="gender" id="gendermale" value="M"<?php setchecked ("gender" , "M" ) ?> />
			<label for="genderfemale">Female</label>
			<input type="radio" name="gender" id="gendermale" value="F"<?php setchecked ("gender" , "F") ?> />
			
			<label for="favoritewidget">What's your favorite widget? * </label>
			<select name="favoritewidget" id="favoritewidget" size="1">
				<option value="superwidget"<?php setselected ("favoritewidget", "superwidget") ?>> The Superwidget</option>
				<option value="megawidget" <?php setselected ("favoritewidget", "megawidget" ) ?>> The Megawidget</option>
				<option value="wonderwidget"<?php setselected ("favoritewidget", "wonderwidget") ?>> The Wonderwidget</option>
				</select>
				
			<label for="newsletter">Do you want to receive our newsletter? </label>
			<input type="checkbox" name="newsletter" id="newsletter" value="yes" <?php setchecked ("newsletter", "yes" ) ?> />
			
			<label for="comments">Any comments?</label>
			<textarea name="comments" id="comments" rows="4" cols="250"><?php setvalue ("comments") ?></textarea>
			
			
			<div style="clear:both;">
				<input type="submit" name="submitbutton" id="submitbutton" value="Send Details" />
				<input type="reset" name="resetbutton" id="resetbutton" value="Reset Form" style="margin-right: 20px;" />
				
				</div>
				
					</div>
					
						</form>
						
							<?php
							
			}
			
			function displayThanks() {
			
			?>
			
					<h1>Thank You</h1>
					<p>Thank you, your applicaton has been received.</p>
					<?php
					}
					?>
					
								</body>
								
									</html>
Agradecería cualquíer ayuda.