Foros del Web » Programando para Internet » PHP »

Ayuda para validar inserción en una bd

Estas en el tema de Ayuda para validar inserción en una bd en el foro de PHP en Foros del Web. Buenas tengo un formulario donde introduzco mediante unos textbox, unos datos en una base de datos. mi intención es que cuando hago el <? echo ...
  #1 (permalink)  
Antiguo 10/10/2005, 04:10
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Ayuda para validar inserción en una bd

Buenas tengo un formulario donde introduzco mediante unos textbox, unos datos en una base de datos.

mi intención es que cuando hago el <? echo $SERVER['PHP_SELF']?>, antes de hacer el INSERT, me gustaria controlar que esten los campos rellenados. hay como en javascript en php, una funcion tipo alert, que no se echo, que me salgan en una ventanita de aquellas emergentes los campos que me faltan?

tengo algo asi, pero no me acaba de funcionar:

$tipo = $_REQUEST['tipo];
$id = $_REQUEST['id'];

if($tipo == ""){
echo "Debe seleccionar algun tipo";
}
if($id == ""){
echo "Debe ingresar una referencia";
}

a ver si alguien puede darme una mejor solucion, saludos y gracias
  #2 (permalink)  
Antiguo 10/10/2005, 04:42
 
Fecha de Ingreso: diciembre-2004
Mensajes: 114
Antigüedad: 13 años
Puntos: 0
Como el ALERT de JS no hay en PHP.

Pero puedes utilizar JS para que te compruebe que no existen campos vacios. Puedas llamar a una funcion JS dentro del ONCLICK del boton enviar por ejemplo
  #3 (permalink)  
Antiguo 10/10/2005, 04:55
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 13 años, 7 meses
Puntos: 0
Deberías decir qué es lo que no funciona exactamente.
  #4 (permalink)  
Antiguo 10/10/2005, 04:55
 
Fecha de Ingreso: mayo-2004
Ubicación: Barcelona
Mensajes: 200
Antigüedad: 13 años, 7 meses
Puntos: 0
$mensaje='Campos por rellenar: \n';
if($tipo="")
{
$mensaje.='Rellenar tipo\n';
}
if($tal="")
{
$mensaje.='rellenar tal';
}

echo "<script>alert('$mensaje');</script>";

hay varias formas de resolverlo, pero esto seria lo mas simple.

Salud2
  #5 (permalink)  
Antiguo 10/10/2005, 05:28
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias fido. he puesto tu codigo, pero me sale el alert sin nada. es decir, si no pongo nada en el campo id me sale

campos por rellenar:

y noi me dice que campos son. tengo lo siguiente:

Código:
if(isset($_POST['submit'])){

	$mensajes='Campos por rellenar: \n';
	if($id="")
	{
	$mensajes.='Rellenar id\n';
	}
	if($zona="")
	{
	$mensajes.='rellenar zona';
	}

echo "<script>alert('$mensajes');</script>";
utilizarias otra forma de recoger las variables?

salu2
  #6 (permalink)  
Antiguo 10/10/2005, 06:24
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
JavaScript es independiente de PHP... no hay nada que sustituya un alert().

... las variables provenientes de un formulario (otra vez) deben recojerse con variables superglobales; lo hacias en el código inicial, fido85 parte de que ya le haz asignado un valor a $id.

Pero bueno.. errores:
- Recoje con variables superglobales
- Usa la función empty() para verificar que estén vacias las variables
- Haz la condicional directamente a $_POST; como --solo-- la primer condicional que muestras ahora, no como el código que mostraste inicialmente
- También condiciona el código que imprime el alert(), de la forma en que está ahora se ejecutará estén o no vacios los campos.

Un saludo!
Concuerdo con la apresiación de lo mal redactado de la consulta inicial...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 10/10/2005, 09:17
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias una vez más jam. tengo lo siguiente:

if((empty($_POST['id']))){
$mensaje='Campos por rellenar: \n';

$mensaje.='Falta el campo id \n';

echo "<script>alert('$mensaje');</script>";

}

esto me funciona a la perfección, el problema lo tengo en el alert tal y como comentabas. necesito comprobar más campos, pero claro, si meto el alert en cada if, me saldrán tantos campos como ifs hayan, no?

como quedaria?

salu2 y gracias
  #8 (permalink)  
Antiguo 10/10/2005, 09:31
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
tengo un problemilla añadido, a ver como lo puedo solucionar. y es que estos alerts, aparecen cuando se hace el submit, me marca los campos que faltan (la pagina de fondo se queda en blanco), y al volver hay que volver a picar los datos de nuevo.

hay alguna manera de mantener los datos?
  #9 (permalink)  
Antiguo 10/10/2005, 09:37
 
Fecha de Ingreso: diciembre-2004
Mensajes: 114
Antigüedad: 13 años
Puntos: 0
Código PHP:
if((empty($_POST['id']) and (empty($_POST['usuario']) and (empty($_POST['password'])){
if (empty(
$_POST['id'])
{
 
$id_v="id";
}
if (empty(
$_POST['usuario])
{
 $usu_v="usuario";
}
if (empty($_POST['
password'])
{
 $pass_v="password";
}

$x = " ";

$mensaje='
Campos por rellenar$id_v.$x.$usu_v.$x.$pass_vn';

echo "<script>alert('
$mensaje);</script>";

Asi a bote pronto...
  #10 (permalink)  
Antiguo 10/10/2005, 09:37
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Bueno yo tengo una idea para tu primera duda... Haber si me explico y te funciona:

Haces lo siguiente con todos los campos que quieras validar:

Código PHP:
$error="";
if(empty(
$_POST['id'])){
   
$error.="No hay id";
}
if(empty(
$_POST['tipo'])){
   
$error.="No hay tipo";
}
echo 
'<script>alert("'.$error.'");</script>'
De esta manera solo se mostrará un alert con todos los errores que tenga.

Saludos,
__________________
sergiold

Última edición por sergiold; 10/10/2005 a las 09:52
  #11 (permalink)  
Antiguo 10/10/2005, 09:46
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias tofus. te pongo el codigo entero, a ver si ves el error. a mi me sale el alert, pero me pone falta $id_v.. no el valor.
Código:
if((empty($_POST['id']))){

$id_v="id"; 

}

if((empty($_POST['zona']))){

$zona_v="zona";

}

if((empty($_POST['precio']))){

$precio_v="precio";
}

$x = " "; 

$mensaje='Campos por rellenar: $id_v.$x.$zona_v.$x.$precio_v'; 

echo "<script>alert('$mensaje');</script>";
  #12 (permalink)  
Antiguo 10/10/2005, 09:54
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Prueba así:

Código PHP:
$mensaje="Campos por rellenar: ".$id_v.$x.$zona_v.$x.$precio_v

echo 
"<script>alert('".$mensaje."');</script>"
Saludos,
__________________
sergiold
  #13 (permalink)  
Antiguo 10/10/2005, 09:54
 
Fecha de Ingreso: diciembre-2004
Mensajes: 114
Antigüedad: 13 años
Puntos: 0
Cambia esa linea por esto:

$mensaje="Campos por rellenar: $id_v.$x.$zona_v.$x.$precio_v";
  #14 (permalink)  
Antiguo 10/10/2005, 09:57
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias a los dos, ya me funciona. ahora lo que os comento, para rizar el rizo... hay alguna manera de que no se pierda la pagina con lois datos insertados??

salu2
  #15 (permalink)  
Antiguo 10/10/2005, 10:04
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Solo decir que el problema que tenias es que dentro de comillas dobles (") las variables se expanden pero dentro de comillas simples(') no se expanden.

Para más información:

http://es.php.net/manual/es/language.types.string.php

Saludos,
__________________
sergiold
  #16 (permalink)  
Antiguo 10/10/2005, 10:06
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
y como hago para que entre campo y campoo, es decir, variable y variables, me haga un \n? para que quede de la sigguiente manera:

Falta los siguientes campos:
Referencia
Zona...

gracias sergio por la aclaracion
  #17 (permalink)  
Antiguo 10/10/2005, 10:24
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Has probado poniendo "\n" al final?

Si es así y no te funciona no se como puede hacerlo...

Saludos,
__________________
sergiold
  #18 (permalink)  
Antiguo 10/10/2005, 10:32
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
lo he probado, pero me da error.

donde lo pongo? en la variable x

$x = "\n";

eso es lo que ponemos entre variable y variable.

he probado en el otro ejemplo, al ponerlo al final de la linea, y me da error

$error.="Falta campo Referencia"\n;

no se q mas hacer
  #19 (permalink)  
Antiguo 10/10/2005, 10:34
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Prueba así:

Código PHP:
$error.="Falta campo Referencia\n"
Saludos,
__________________
sergiold
  #20 (permalink)  
Antiguo 10/10/2005, 11:31
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
no funciona sergio, cuando le pongo el \n, me da error... q cosa más rara, no?

saludos
  #21 (permalink)  
Antiguo 10/10/2005, 11:40
 
Fecha de Ingreso: diciembre-2004
Mensajes: 114
Antigüedad: 13 años
Puntos: 0
Puedes poner todo el codigo, q le exe un ojo?
  #22 (permalink)  
Antiguo 10/10/2005, 12:16
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
claro q si Tofus, faltaria más!!

Código:
$error=""; 
if(empty($_POST['id'])){ 
   $error.="Falta campo Referencia\n"; 

} 
if(empty($_POST['zona'])){ 
   $error.="Falta campo Zona"; 
} 
echo '<script>alert("'.$error.'");</script>';
  #23 (permalink)  
Antiguo 11/10/2005, 02:43
 
Fecha de Ingreso: diciembre-2004
Mensajes: 114
Antigüedad: 13 años
Puntos: 0
Código:
if(empty($_POST['id'])){ 
   $error1="Falta campo Referencia\n"; 

} 
if(empty($_POST['zona'])){ 
   $error2="Falta campo Zona\n"; 
} 
echo '<script>alert("'.$error1+$error2.'");</script>';
Prueba esto a ver si hace los saltos de linea...
  #24 (permalink)  
Antiguo 17/10/2005, 03:05
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
ya que me han cerrado el hilo, sigo el que empece. amigo jam, no queria seguirlo pq consideraba que hbían pasado muchos dias. disculpa las molestias

Buenas a todos. tengo un problema con un alert. tengo lo siuguiente:


Código:

if((empty($_POST['id']))){

$id_v="Referencia";

}

if((empty($_POST['zona']))){

$zona_v="Zona";

$x = "-";

$mensaje="Campos por rellenar:".$id_v.$x.$zona_v;

}

esto me muestra algo tal que asi:

Faltan por rellenar: Referencia-Zona

pero me gustaria que quedase algo asi

Faltan por rellenar:
Referencia
Zona

tambien he probado con lo siguiente, con la ayuda del compañero Tofus


Código:

if(empty($_POST['id'])){
$error1="Falta campo Referencia\n";

}
if(empty($_POST['zona'])){
$error2="Falta campo Zona\n";
}
echo '<script>alert("'.$error1+$error2.'");</script>';
  #25 (permalink)  
Antiguo 17/10/2005, 04:17
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Para generar saltos de línea en el alert() necesitas incluir "\n" pero dentro de ese alert() no en PHP (generaría un salto de línea en el código) que es lo que se ha estado haciendo.
Código PHP:
$error=""
if(empty(
$_POST['id'])){ 
   
$error.= 'Falta campo Referencia\n'// las comillas simples no interpretan \n


if(empty(
$_POST['zona'])){ 
   
$error.="Falta campo Zona"

echo 
'<script>alert("'.$error.'");</script>'
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #26 (permalink)  
Antiguo 17/10/2005, 04:31
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias jam. pero donde tendria que incluirlo entonces? si no puedo dentro de la cadena php, de que manera podria hacerlo?

he probado a hacer lo siguiente:

Código:
$error="Faltan por rellenar los siguientes campos:";

if(empty($_POST['id'])){ 
   $error1="Falta campo Referencia"; 

} 
if(empty($_POST['zona'])){ 
   $error2="Falta campo Zona"; 
} 
echo '<script>alert('.$error.'\n'.$error1+$error2.');</script>';
pero no sale, no me da error, pero en vez de poner el alert, me vuelve a mostrar la pagina de insercion..
  #27 (permalink)  
Antiguo 17/10/2005, 04:54
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
de que manera podria hacerlo?
No te sirvió lo que dejé???.

Maneras de hacerlo hay varias:
- Trabajar directo con JavaScript, fuera de PHP, imprimiendo ahí las variables de PHP:
Código HTML:
<script> alert('Texto:\n<?=$variable ?>\n<?=$variable2 ?>') </script> 
- Puedes hacer que PHP no te interprete el salto de línea (ya lo dejé)
- Puedes incluso escapar la diagonal invertida para que tengas una de salida:
Código PHP:
$texto"Texto:\\n $variable\\n $variable2";
echo 
"<script> alert('$texto') </script>"
... entre muchas posibilidades más. Repito: el "\n" debe estar en el JS resultante, solo es eso...

Tus errores:
- Utilizas el símbolo "+" como si estubieras concatenando con JS... ve bien, estás en PHP.
- No mandas a imprimir las comillas del JS. Seguro te da un error, pero de JS. Hay que diferenciar las cosas.
Código PHP:
echo '<script>alert("'.$error.'\n'.$error1.'\n'.$error2.'");</script>'
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #28 (permalink)  
Antiguo 17/10/2005, 05:11
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias jam ya me ha salido.una preguntilla más para rizar el rizo. tengo hecho el insert en el mismo php, es decir, tengo un $PHP_SELF. cuando le doy a enviar, pierdo la referencia del form, y me sale el alert con los campos que faltan...

hay alguna manera de hacer la comprobación sin que haga una carga de la pagina? es decir, en el SUBMIT?

gracias
  #29 (permalink)  
Antiguo 17/10/2005, 05:35
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
tengo un $PHP_SELF
Obsoleto. Una vez más: usa variables superglobales, usa $_SERVER['PHP_SELF']
Cita:
pierdo la referencia del form, y me sale el alert con los campos que faltan...
Entiendo que manejas un solo archivo y por lo tanto tu formularo "se muestra o no" (según si se ha enviado). Puedes redireccionar después de mostrar ese alert() para que te vuelva a mostrar el formulario. Buscalo en el foro así: tanto como "redireccionar" como "alert".
Comentario al margen: evita manejar un solo archivo, no es recomendable.
Cita:
hay alguna manera de hacer la comprobación sin que haga una carga de la pagina? es decir, en el SUBMIT?
Claro, con JavaScript y lo encuentras en las FAQ y buscando en aquel foro. Te lo aseguro; tema común.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 06:05.