Foros del Web » Programando para Internet » PHP »

envio de datos vacios en un input name

Estas en el tema de envio de datos vacios en un input name en el foro de PHP en Foros del Web. Buenas, tengo un problema y no le encuentro la solucion, el tema es que tengo un formulario que tiene imputs que recoge datos de una ...
  #1 (permalink)  
Antiguo 04/03/2009, 19:49
 
Fecha de Ingreso: julio-2006
Mensajes: 18
Antigüedad: 18 años, 4 meses
Puntos: 1
envio de datos vacios en un input name

Buenas, tengo un problema y no le encuentro la solucion, el tema es que tengo un formulario que tiene imputs que recoge datos de una base para poder modificarlos.
uno de ellos es asi:

<input name="Copete_en" type="text" id="Copete_en" value="<?php echo $row["Copete_en"] ?>" size="104" maxlength="255">

Si por ejemplo este campo tiene un texto:

"prueba1234"

y yo lo cambio y le pongo una A, al final quedaria asi al anviar el formulario:,

"prueba1234A"

pero si yo borro todo y lo dejo vacio, me vuelve a traer lo ultimo que esta en la base, en este caso:

"prueba1234A"

Como se soluciona esto?

el tipo de campo en la base es varchar, probe tambien con text y pasa lo mismo.

Alguna idea?
  #2 (permalink)  
Antiguo 04/03/2009, 19:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: envio de datos vacios en un input name

Depende de cómo estás procesando el formulario, ¿el formulario sirve para modificar los datos de la base de datos? ¿Cómo estás haciendo la sentencia SQL?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 04/03/2009, 19:52
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: envio de datos vacios en un input name

Tiene que ser algo en como insertas los datos, muestranos el codigo.
  #4 (permalink)  
Antiguo 04/03/2009, 19:57
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: envio de datos vacios en un input name

Deberias usar UPDATE para modificarlos , pero si fuese un INSERT no modificarias nada solo añadirias otro registro .
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #5 (permalink)  
Antiguo 04/03/2009, 21:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 39
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: envio de datos vacios en un input name

Me parece que estas jalando de un array proveniente de una base de datos, bueno si fuese asi lo que debes de hacer es que cada vez que pase la lectura de datos por el contador deberias de reiniciar la variable con un espacio en blanco como por ejemplo

for($i=0;$i<$cantidad_filas;$i++)
{
$row["Copete_en"]="";
$row=mysql_fetch_array($consulta);
//resto de los asignadores
}
  #6 (permalink)  
Antiguo 05/03/2009, 03:36
 
Fecha de Ingreso: julio-2006
Mensajes: 18
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: envio de datos vacios en un input name

Ante todo gracias por responder.
Tengo dos archivos add.php y edit.php

En el add.php no tengo problemas porque no obtiene ningun dato en el value, viene asi:

<input name="Copete_en" type="text" id="Copete_en" value="">

Ahi si no coloco nada, (el campo de la base por defecto es NULL) no tengo problemas.
utilizo un insert para crear el producto.

En el edit.php el value, viene con datos de la base, y utilizo un update que utiliza una funcion desde otro archivo.
Esto es lo que tengo (parte del codigo)en el edit.php para "updatear"

Código:
if(isset($_POST["edit"])){
	$tipo = $_POST['Tipo'];
	$IdProducto = $_POST['IdProducto'];
	mysql_update('',TABLA_PRODUCTOS,"IdProducto",$IdProducto,'POST');
	header("Location: edit.php?mensaje=El producto se ha guardado con exito&IdRubro=" . $_POST['SubSubFamilia'] . "&Familia=" . $_POST['Familia'] . "&IdProducto=" . $IdProducto."&Tipo=".$tipo);
}
y la funcion que esta en otro archivo hace esto, es bastenate largo pero creo que solo utiliza una parte:

Código:
function mysql_update($Base = '',$Tabla,$Field_Name,$Field_Value,$Tipo = 'POST',$campos = '',$valores = '',$redefine = ''){
	global $sistema, $debug, $HTTP_POST_VARS, $HTTP_GET_VARS;
	
	if($campos != "" && $valores != ""){
		$checkbox_temp_campos = split(",",$campos);
		$checkbox_temp_datos = split(",",$valores);
	}
	
	// Busco los campos en la tabla de datos:
	$query = "SHOW FIELDS FROM $Tabla";
   	$Filas = mysql_query($query, $sistema["conexion"]);
	$totalRows_Filas = mysql_num_rows($Filas);
	
	
	// Creo el arreglo con las filas:
	$i = 0;
	while ($row_Filas = mysql_fetch_assoc($Filas))		
		$Datos_Filas_A[$i++] = $row_Filas["Field"];
	
	// Creo los arreglos con los campos:
	$i = 0;
	
	if($Tipo == 'POST'){
		reset ($HTTP_POST_VARS);	
		while(list($key, $val) = each($HTTP_POST_VARS)) {
    		if (strpos($key,"CONF_") === FALSE) {
				if ($val != "") {		
    				if (in_array($key,$Datos_Filas_A)) {// Es un campo para update ????
        				if($key == "Clave") // Caso particular de las claves:
							$Datos[$i] = md5($val);					
						elseif(isset($redefine[$key]))
							$Datos[$i] = $redefine[$key];
						else 
							$Datos[$i] = $val;
            			$Campos[$i++] = $key;
        				if ($debug) { echo "<br>" . $key . " - " . $val; }
            		}	
    			}
    		}
    	}
	}
	elseif($Tipo == 'GET'){
   		reset ($HTTP_GET_VARS);	
    	while(list($key, $val) = each($HTTP_GET_VARS)) {
    		if(isset($$key) && $$key != '') $val = $$key;
			if (strpos($key,"CONF_") === FALSE) {		
				if ($val != "") {		
    				if (in_array($key,$Datos_Filas_A)) {// Es un campo para update ????
        				if($key == "Clave") // Caso particular de las claves:
							$Datos[$i] = md5($val);					
						elseif(isset($redefine[$key]))
							$Datos[$i] = $redefine[$key];
						else 
							$Datos[$i] = $val;
            			$Campos[$i++] = $key;
        				if ($debug) { echo "<br>" . $key . " - " . $val; }
            		}	
    			}
    		}
    	}	
	}
	else die("Eror grave. Falta definir el tipo de consulta");

	for($j = 0; $j < count($checkbox_temp_campos) + 1; $j++){
		if(!in_array($checkbox_temp_campos[$j],$Campos)){
			$Datos[$i] = $checkbox_temp_datos[$j];
        	$Campos[$i] = $checkbox_temp_campos[$j];
			$i++;
		}
	}
	
	// Formo el Query	
	$i = 0;
	$Query_Campos = "";
	$j = count($Campos) - 1;
	$Datos_Mail = "";
	
	while ($i < $j) {
		if (in_array($Campos[$i],$Datos_Filas_A)) {
    			if ($i == ($j - 1))
    				$Query_Campos .= $Campos[$i] . " = '" . $Datos[$i] . "'";
    			else 
					$Query_Campos .= $Campos[$i] . " = '" . $Datos[$i] . "', ";
		}	
		$i++;
	} 

	$Field_Value = "'" . $Field_Value . "'";	
	
	if ($Query_Campos != "") {
		$query = "	UPDATE $Tabla 
					SET $Query_Campos 
					WHERE $Field_Name = $Field_Value";
		ExecMysql($query);
		return mysql_affected_rows();
	}
	return 0;
	
	if ($debug) echo "<br>Query:" . $Query_Campos . "<hr>$query<hr>";
}
Gracias
  #7 (permalink)  
Antiguo 06/03/2009, 14:49
 
Fecha de Ingreso: julio-2006
Mensajes: 18
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: envio de datos vacios en un input name

A alguien le paso o alguna idea de como solucionarlo? Please!!!
  #8 (permalink)  
Antiguo 06/03/2009, 16:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: envio de datos vacios en un input name

Tu mismo estas condicionando a que no se consideren valores vacios para "updetear" (se lee mejor "actualizar") el registro:

Código php:
Ver original
  1. if ($val != "")

Nota: No vas a realizar alguna validacion antes de ingresar informacion a la base de datos?, minimo un mysql_real_escape_string() al menos para que se puedan incluir comillas, aunque por seguridad, pasaria antes htmlentities()
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 06/03/2009, 17:10
 
Fecha de Ingreso: julio-2006
Mensajes: 18
Antigüedad: 18 años, 4 meses
Puntos: 1
De acuerdo Respuesta: envio de datos vacios en un input name

Que ciego soy por dios!
Entonces voy a tener que obligar o hacer algo para poder limpiar el campo.
Quiero que con solo borrar lo que traigo de la base se actualice el campo y quede NULL, voy a ver como hago.

No valido nada al ingresar porque es un backend y generalmente saben lo que ingresan.

Mil gracias a todos y especialmente a Triby por abrirme los ojos.
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

SíEste tema le ha gustado a 1 personas




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