PHP - AyudaaaaValidar

 
Vista:
Imágen de perfil de emilio

AyudaaaaValidar

Publicado por emilio (18 intervenciones) el 25/06/2007 20:50:42
hola!!! pues miren estoy validando unos campos pero al momento de darle guardar me manda un msj y me dice k debo introducir datos en x campo, hasta ahi todo va de maravilla y depues de darle aceptar me mada un errorsote, y el error es al redireccionar ...
este es el error k me manda

Warning: Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/Activos/Accesorio.php:223) /opt/lampp/htdocs/Activos/saveAccesorio.php on line 22

y la linea 22 es la del header

header('Location: index.php?module=Accesorio&action=show&id='.$model->id);

esta es la linea al k me manda el error.
y este es el escrpt

echo '<script language="JavaScript">
function valida_envia(){
//valido el nombre
if (document.fvalida.nombre.value.length==0){
alert("Tiene que escribir su nombre")
document.fvalida.nombre.focus()
return 0;
}

//valido el tipo de accesorio
if (document.fvalida.tipo.selectedIndex==0){
alert("Debe seleccionar un tipo de Accesorio.")
document.fvalida.tipo.focus()
return 0;
}

//valido el estatus
if (document.fvalida.estatus.value.length==0){
alert("Tiene que escribir el estatus")
document.fvalida.estatus.focus()
return 0;
}
}
</script>'
y este es el formulario donde valido

function edit() {
$array=array("P"=>"P-Periferico","C"=>"C-Comunicaciones","I"=>"I-Interno");
$action='insert';
if (isset($this->model->id)){$action='update';}
echo '<form method=post name="fvalida" action=saveAccesorio.php?action='.$action.'>
<input type=submit name=submit value=Guardar onClick="valida_envia()">
<table border="0" cellspacing="1" width="50%">
<tr><th colspan=2>Accesorio</th></tr>';
echo '<tr><td>Id</td>';
if ($action=='insert'){
echo '<td></td></tr>';
} else {
echo '<input type=hidden name=id value='.$this->model->id.'>';
echo '<td>'.$this->model->id.'</td></tr>';

}
echo '<tr><td>Nombre</td><td>
<input type=text name=nombre value="'.$this->model->nombre.'" size=22 maxlength=20></td></tr>
<tr><td>Tipo</td><td>
'.menu_select_array($array, $this->model->tipo, 'tipo').'</td></tr>
<tr><td>Estatus</td><td>
<input type=text name=estatus value="'.$this->model->estatus.'" size=3 maxlength=1></td></tr>
</table></form>';

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AyudaaaaValidar

Publicado por Diego Romero (1450 intervenciones) el 25/06/2007 23:18:29
Para usar header("Location...) el script no puede enviar absolutamente nada, ni siquiera un espacio en blanco, antes de la ejecución de esa función. El solo hehco de enviar algo al cliente hace que el servidor envie las cabeceras y header es la función que las modifica, no puedes modificar una cabecera que ya fue enviada, ese es el error que te está señalando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de emilio

RE:AyudaaaaValidar

Publicado por emilio (18 intervenciones) el 25/06/2007 23:45:36
y en este caso k es lo k tendria k hacer para que me pudiera validar las cajas sin marcarme el error???? de antemano muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AyudaaaaValidar

Publicado por Diego Romero (1450 intervenciones) el 26/06/2007 10:34:09
Es que no me estás mostrando el código donde se produce el error. Según el mensaje el error está en el script saveAccesorios.php que por lo que veo es el destino del form que posteaste en tu primer mensaje.

Es simple: verifica que no haya ninguna salida (ningún echo) antes de ejecutar header();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de emilio

RE:AyudaaaaValidar

Publicado por emilio (18 intervenciones) el 26/06/2007 15:09:55
hola!! pues mira este es el archivo de SaveAccesorio.php


<?

include ('db.php'); //abre base de datos
include ('Accesorio.php'); //carga modulo

$id=strtoupper($id);
$model= new modelAccesorio($id);
$form_result = "";

switch ($action){
case 'insert':
$model->setData($nombre, $tipo, $estatus);
$model->insert();
break;
case 'update':
$model->setData($nombre, $tipo, $estatus);
$model->update();
break;
}

header('Location: index.php?module=Accesorio&action=show&id='.$model->id);

?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de emilio

RE:AyudaaaaValidar

Publicado por emilio (18 intervenciones) el 26/06/2007 15:49:10
hola pues basicamente me parece k encontre el error...

function edit() {
$array=array("P"=>"P-Periferico","C"=>"C-Comunicaciones","I"=>"I-Interno");
$action='insert';
if (isset($this->model->id)){$action='update';}

//este ees el error al momento de crear el formulario con el echo se ejecuta el saveAccesorio y tambien en header k se encuentra dentro del archivo...


este es el boton y es adonde mando a llamar mi script de alguna manera tengo k sacarlo del formulario, pero si lo saco ya no me funcionara, osea k no me va a gurdar...

echo '<form method=post name="fvalida" action=saveAccesorio.php?action='.$action.'>
<input type=submit name=submit value=Guardar onClick="valida_envia()">
<table border="0" cellspacing="1" width="50%">
<tr><th colspan=2>Accesorio</th></tr>';
echo '<tr><td>Id</td>';
if ($action=='insert'){
echo '<td></td></tr>';
} else {
echo '<input type=hidden name=id value='.$this->model->id.'>';
echo '<td>'.$this->model->id.'</td></tr>';

}
echo '<tr><td>Nombre</td><td>
<input type=text name=nombre value="'.$this->model->nombre.'" size=22 maxlength=20></td></tr>
<tr><td>Tipo</td><td>
'.menu_select_array($array, $this->model->tipo, 'tipo').'</td></tr>
<tr><td>Estatus</td><td>
<input type=text name=estatus value="'.$this->model->estatus.'" size=3 maxlength=1></td></tr>
</table></form>';

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar