Foros del Web » Programando para Internet » PHP »

Eliminar campo en formulario PHP

Estas en el tema de Eliminar campo en formulario PHP en el foro de PHP en Foros del Web. Hola, Tengo el formulario abajo expuesto y querría eliminar la obligatoriedad de enviar el adjunto. Es decir, que se pueda enviar el adjunto, aunque sin ...
  #1 (permalink)  
Antiguo 16/09/2011, 09:39
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Eliminar campo en formulario PHP

Hola,

Tengo el formulario abajo expuesto y querría eliminar la obligatoriedad de enviar el adjunto.

Es decir, que se pueda enviar el adjunto, aunque sin obligación:


El php:

<?php

$maximo_tamano= '6000000';
$direccion_envio= '[email protected]';
$url= 'http://www.laweb.com/archivo-php;

?>


<?PHP
//proceso del formulario
// si existe "enviar"...
if (isset ($_POST['enviar'])) {

// vamos a hacer uso de la clase phpmailer,
require("class.phpmailer.php");

$mail = new PHPMailer();

//recogemos las variables y configuramos PHPMailer
$mail->From = $_POST['email'];
$mail->FromName = $_POST['nombre'];
$mail->AddAddress($direccion_envio);
$mail->Subject = "Contacto desde el Formulario";
$mail->AddReplyTo($_POST['email'],$_POST['nombre']);
$mail->IsHTML(true);
$comentario=$_POST['comentario'];

//comprobamos si se adjunto un archivo, y si su tamano es menor al permitido
if (isset($_FILES['archivo']['tmp_name'])) {
$tipo=$_FILES['archivo']['type'];
//Formatos de archivo permitidos, si desean agregar mas, agregar un case para cada formato.
switch ($tipo) {
case "image/gif":
$ext="gif";
break;
case "image/pjpeg":
$ext="jpg";
break;
case "image/jpeg":
$ext="jpg";
break;
case "image/png":
$ext="png";
break;
case "application/zip":
$ext="zip";
break;
case "application/msword":
$ext="doc";
break;
case "application/pdf":
$ext="pdf";
break;
case "application/rtf":
$ext="rtf";
break;
case "application/octet-stream":
$extension_type= explode ('.', $_FILES['archivo']['name']);
$ext= end($extension_type);
if($ext!="rar") {$ext="error";}
break;
default:
$ext="error";
break;
}

$aleatorio = rand();
$nombreoriginal= explode ('.', $_FILES['archivo']['name']);
$tamano=$_FILES['archivo']['size'];
$nuevonombre=$nombreoriginal[0].'-'.$aleatorio.'.'.$ext;
}

if (isset ($nuevonombre)) {
if ($ext=="error") {$error_archivo="<br />- Formato de archivo no permitido.";}
if ($tamano > $maximo_tamano) {$error_archivo="<br />- El tama&ntilde;o de su archivo supera el m&aacute;ximo permitido.";}
}

//comprobamos si todos los campos fueron completados
if ($_POST['email']!='' && $_POST['nombre']!='' && $_POST['comentario']!='' && $error_archivo=='') {

// copiamos el archivo en el servidor
copy($_FILES['archivo']['tmp_name'],'archivos/'.$nuevonombre);

//armamos el html
$contenido = '<html><body>';
$contenido .= '<h2>Contacto desde formulario</h2>';
$contenido .= '<p>Enviado el '. date("d M Y").'</p>';
$contenido .= '<hr />';
$contenido .= '<p>Nombre: <strong>'.$_POST['nombre'].'</strong>';
$contenido .= '<p>Email: <strong>'.$_POST['email'].'</strong>';
$contenido .= '<p>Archivo: <strong><a href="'.$url.'/archivos/'.$nuevonombre.'">'.$nuevonombre.'</a> (formato:'.$ext.' - '.$tamano.' bytes)</strong>';
$contenido .= '<p>Comentario: <strong>'.$comentario.'</strong>';
$contenido .= '<hr />';
$contenido .= '</body></html>';

$mail->Body = $contenido;
$mail->AddAttachment('archivos/'.$nuevonombre.'', $nuevonombre); // optional name
// si todos los campos fueron completados enviamos el mail

$mail->Send();

$flag='ok';
$mensaje='<div id="ok">Su archivo ha sido adjuntado con &eacute;xito<br /> Gracias por Contactarnos</div>';
} else {

//si no todos los campos fueron completados se frena el envio y avisamos al usuario
$flag='err';
$mensaje='<div id="error">- Los Campos Marcados Con * Son Requeridos. '.$error_archivo.'</div>';

}
}
?>



El formulario:

<? echo $mensaje; ?>
<? if ($flag!='ok') { ?>
<form action="<?php echo $PHP_SELF;?>" method="post" enctype="multipart/form-data">
<p>Nombre* <br />
<input <? if (isset ($flag) && $_POST['nombre']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="nombre" value="<? echo $_POST['nombre'];?>" /></p>

<p>Email* <br />
<input <? if (isset ($flag) && $_POST['email']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="email" value="<? echo $_POST['email'];?>" /></p>


<p>Subir Archivo*<br />(Formatos permitidos: .gif, .jpg, .png, .zip) <br />
<input <? if (isset ($flag) && $ext=='error' || $tamano > $maximo_tamano) { echo 'class="error"';} else {echo 'class="campo"';} ?> type="file" name="archivo" value="<? echo $_FILE['archivo'];?>" /></p>

<p>Comentario* <br />
<textarea <? if (isset ($flag) && $_POST['comentario']=='') { echo 'class="com-error"';} else {echo 'class="com"';} ?> name="comentario"><? echo $_POST['comentario'];?></textarea></p>
<p><input class="boton" type="submit" name="enviar" value="enviar" /></p>
</form>
<? } ?>
</div>



¿Me podéis aclarar qué debo hacer para que no sea obligatorio enviar el adjunto?

Gracias.
  #2 (permalink)  
Antiguo 16/09/2011, 10:14
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Eliminar campo en formulario PHP

debes acomodar ese codigo entre etiquetas para que sea mas entendible, y por otra parte que mensaje te muestra si no adjuntas el archivo? para no leer tanto
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #3 (permalink)  
Antiguo 16/09/2011, 11:24
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: Eliminar campo en formulario PHP

Disculpa por la confusión en el código.

El mensaje que me muestra cuando no se adjunta nada es:

"Formato de archivo no permitido".

Que no debería ser ese, pero lo muestra así tanto si no es permitido el archivo, como si no adjuntas nada.

Yo quiero que la opción de adjuntar sea voluntaria.


El problema es que en el código figura esto:

// copiamos el archivo en el servidor
copy($_FILES['archivo']['tmp_name'],'archivos/'.$nuevonombre);

Así que, si dejas en blanco, aparece una línea de error donde te dice que no se puede dejar sin adjuntar.
  #4 (permalink)  
Antiguo 16/09/2011, 12:20
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Eliminar campo en formulario PHP

prueba asi solo comente 2 lineas a ver

Código PHP:
Ver original
  1. <?php
  2.  
  3. $maximo_tamano= '6000000';
  4. $direccion_envio= '[email protected]';
  5. $url= 'http://www.laweb.com/archivo-php';
  6.  
  7. ?>
  8.  
  9.  
  10. <?PHP
  11. //proceso del formulario
  12. // si existe "enviar"...
  13. if (isset ($_POST['enviar'])) {
  14.  
  15. // vamos a hacer uso de la clase phpmailer,
  16. require("class.phpmailer.php");
  17.  
  18. $mail = new PHPMailer();
  19.  
  20. //recogemos las variables y configuramos PHPMailer
  21. $mail->From = $_POST['email'];
  22. $mail->FromName = $_POST['nombre'];
  23. $mail->AddAddress($direccion_envio);
  24. $mail->Subject = "Contacto desde el Formulario";
  25. $mail->AddReplyTo($_POST['email'],$_POST['nombre']);
  26. $mail->IsHTML(true);
  27. $comentario=$_POST['comentario'];
  28.  
  29. //comprobamos si se adjunto un archivo, y si su tamano es menor al permitido
  30. if (isset($_FILES['archivo']['tmp_name'])) {
  31. $tipo=$_FILES['archivo']['type'];
  32. //Formatos de archivo permitidos, si desean agregar mas, agregar un case para cada formato.
  33. switch ($tipo) {
  34. case "image/gif":
  35. $ext="gif";
  36. break;
  37. case "image/pjpeg":
  38. $ext="jpg";
  39. break;
  40. case "image/jpeg":
  41. $ext="jpg";
  42. break;
  43. case "image/png":
  44. $ext="png";
  45. break;
  46. case "application/zip":
  47. $ext="zip";
  48. break;
  49. case "application/msword":
  50. $ext="doc";
  51. break;
  52. case "application/pdf":
  53. $ext="pdf";
  54. break; 
  55. case "application/rtf":
  56. $ext="rtf";
  57. break; 
  58. case "application/octet-stream":
  59. $extension_type= explode ('.', $_FILES['archivo']['name']);
  60. $ext= end($extension_type);
  61. //if($ext!="rar") {$ext="error";}
  62. break; 
  63. default:
  64. //$ext="error";
  65. break;
  66. }
  67.  
  68. $aleatorio = rand();
  69. $nombreoriginal= explode ('.', $_FILES['archivo']['name']);
  70. $tamano=$_FILES['archivo']['size'];
  71. $nuevonombre=$nombreoriginal[0].'-'.$aleatorio.'.'.$ext;
  72. }
  73.  
  74. if (isset ($nuevonombre)) {
  75. if ($ext=="error") {$error_archivo="<br />- Formato de archivo no permitido.";}
  76. if ($tamano > $maximo_tamano) {$error_archivo="<br />- El tama&ntilde;o de su archivo supera el m&aacute;ximo permitido.";}
  77. }
  78.  
  79. //comprobamos si todos los campos fueron completados
  80. if ($_POST['email']!='' && $_POST['nombre']!='' && $_POST['comentario']!='' && $error_archivo=='') {
  81.  
  82. // copiamos el archivo en el servidor
  83. copy($_FILES['archivo']['tmp_name'],'archivos/'.$nuevonombre);
  84.  
  85. //armamos el html
  86. $contenido = '<html><body>';
  87. $contenido .= '<h2>Contacto desde formulario</h2>';
  88. $contenido .= '<p>Enviado el '. date("d M Y").'</p>';
  89. $contenido .= '<hr />';
  90. $contenido .= '<p>Nombre: <strong>'.$_POST['nombre'].'</strong>';
  91. $contenido .= '<p>Email: <strong>'.$_POST['email'].'</strong>';
  92. $contenido .= '<p>Archivo: <strong><a href="'.$url.'/archivos/'.$nuevonombre.'">'.$nuevonombre.'</a> (formato:'.$ext.' - '.$tamano.' bytes)</strong>';
  93. $contenido .= '<p>Comentario: <strong>'.$comentario.'</strong>';
  94. $contenido .= '<hr />';
  95. $contenido .= '</body></html>';
  96.  
  97. $mail->Body = $contenido;
  98. $mail->AddAttachment('archivos/'.$nuevonombre.'', $nuevonombre); // optional name
  99. // si todos los campos fueron completados enviamos el mail
  100.  
  101. $mail->Send();
  102.  
  103. $flag='ok';
  104. $mensaje='<div id="ok">Su archivo ha sido adjuntado con &eacute;xito<br /> Gracias por Contactarnos</div>';
  105. } else {
  106.  
  107. //si no todos los campos fueron completados se frena el envio y avisamos al usuario
  108. $flag='err';
  109. $mensaje='<div id="error">- Los Campos Marcados Con * Son Requeridos. '.$error_archivo.'</div>';
  110.  
  111. }
  112. }
  113. ?>
  114.  
  115.  
  116.  
  117. <? echo $mensaje; ?>
  118. <? if ($flag!='ok') { ?>
  119. <form action="<?php echo $PHP_SELF;?>" method="post" enctype="multipart/form-data">
  120. <p>Nombre* <br />
  121. <input <? if (isset ($flag) && $_POST['nombre']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="nombre" value="<? echo $_POST['nombre'];?>" /></p>
  122.  
  123. <p>Email* <br />
  124. <input <? if (isset ($flag) && $_POST['email']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="email" value="<? echo $_POST['email'];?>" /></p>
  125.  
  126.  
  127. <p>Subir Archivo*<br />(Formatos permitidos: .gif, .jpg, .png, .zip) <br />
  128. <input <? if (isset ($flag) && $ext=='error' || $tamano > $maximo_tamano) { echo 'class="error"';} else {echo 'class="campo"';} ?> type="file" name="archivo" value="<? echo $_FILE['archivo'];?>" /></p>
  129.  
  130. <p>Comentario* <br />
  131. <textarea <? if (isset ($flag) && $_POST['comentario']=='') { echo 'class="com-error"';} else {echo 'class="com"';} ?> name="comentario"><? echo $_POST['comentario'];?></textarea></p>
  132. <p><input class="boton" type="submit" name="enviar" value="enviar" /></p>
  133. </form>
  134. <? } ?>
  135. </div>


alli esta junto el codigo del formulario fijate bien
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O

Etiquetas: html, formulario, variables, usuarios, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:49.