ayuda en php

Hola que tal Buenas tardes

les pido su ayuda por favor para resolver un pequeño (o mas bien gran) problema que tengo; he creado en php un formulario el cual trata de una evaluacion, lo que sucede es que al enviar la informacion esta no se guarda en la base de datos de MySql. les paso el codigo, porque ya de plano no me ubico con exactitud ya que tiene un buen tiempo que me aleje del php.

este es el codigo del formulario para la evaluacion:

<?php require_once('Connections/con1.php'); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Evaluacion de servicio</title>
<style type="text/css">
.a {
color: #FFE00;
}
body {
background-color: #FFE410;
}
</style>
</head>

<body background>



<p>
<h1>
<label> <img src="5.gif" width="99" height="105" />la tiendita</label>
<img src="5.gif" width="99" height="105" /></h1>
</form>

<h2><label><b>Evaluacion de almacenes</b></label>

</h2>

<p>
<label>Favor de realizar la evaluacion del almacen que le brinda el servicio a su tienda. La forma de calificacion es la siguiente: </label></p>

<p>
<label> - Calificacion minima: 1 punto</label></p>

<p>
<label>- Calificacion Maxima: 10 puntos
</label>
</p>


<form action="insertar_datos.php" method="post" name="form1">

<p>Por favor seleccione la tienda a la que pertenece y el almacen al que va a

evaluar.</p>
<p>Fecha:
<label for="fecha"></label>
<input name="fecha" type="text" id="fecha" value="2012/mes/dia" size="15" />
* Favor de colocarlo en numeros (ej. 2012/10/30)</p>
<label for="tienda">Tienda: </label>
<select name="tienda" id="tienda">
<option value=" "> </option>
<option value="tienda1">tienda1</option>
<option value="tienda2">tienda2</option>
<option value="tienda3">tienda3</option>
<option value="tienda4">tienda4</option>
<option value="tienda5">tienda5</option>
<option value="tienda6">tienda6</option>
</select>
<p>
<label for="almacen">Almacen: </label>
<select name="almacen" id="almacen">
<option value=" "> </option>
<option value="almacen1">almacen1</option>
<option value="almacen2">almacen2</option>
<option value="almacen3">almacen3</option>
<option value="almacen4">almacen4</option>
<option value="almacen5">almacen5</option>
</select>
</p>
<p>Los aspectos a evaluar son los siguientes:</p>
<p>
<label for="cumplimiento">Cumplimiento: </label>
<select name="cumplimiento" id="cumplimiento">
<option value=" "> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<label for="exactitud">exactitud:</label>
<select name="exactitud" id="exactitud">
<option> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<label for="atencion">Atencion: </label>
<select name="atencion" id="atencion">
<option value=" "> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<label for="pedidos">Pedidos Extras: </label>
<select name="pedidos" id="pedidos">
<option value=" "> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<label for="transportacion">Transportacion: </label>
<select name="transportacion" id="transportacion">
<option value=" "> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<input type="submit" value="Enviar Evaluacion" />
</p>
</form>
<p>&nbsp;</p>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>

este el otro archivo que debe de procesar la informacion: insertar_datos.php

<?
$dbhost="miservidor";

$dbusuario="fulano";

$dbpassword="XXXX";

$db="evaluacion";

$conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);

mysql_select_db($db, $conexion);

$tienda = $_POST["tienda"];
$almacen = $_POST["almacen"];
$cumplimiento = $_POST["cumplimiento"];
$exactitud = $_POST["exactitud"];
$atencion = $_POST["atencion"];
$pedidos = $_POST["pedidos"];
$transportacion = $_POST["transportacion"];
$fecha = $_POST["fecha"];

if($tienda==NULL|$almacen==NULL|$cumplimiento==NULL|$exactitud==NULL|$atencion==NULL|$pedidos==NULL|$transportacion==NULL|$fecha==NULL) {
echo "mensaje=UNO O MAS CAMPOS ESTAN VACÍOS";
}else{
mysql_query("INSERT INTO evaluacion (tienda,almacen,cumplimiento,exactitud,atencion,pedidos,transportacion,fecha) VALUES ('$tienda','$almacen','$cumplimiento','$exactitud','$atencion','$pedidos','$transportacion','$fecha')",$conexion);
echo "mensaje=USUARIO REGISTRADO";
mysql_close($conexion);
}
?>


ahora al ejecutar aparentemente funciona pero no envia informacion, espero que me puedan ayudar :D
Hola:

Primero hay que saber si ocurre algún error, así que tendrás que modificar el archivo que procesa los datos para que quede así:

<?php
  $dbhost="miservidor"; 
  $dbusuario="fulano"; 
  $dbpassword="XXXX";
  $db="evaluacion";
  $conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);

  if( $conexion === false ) {
    echo "mensaje=No se pudo conectar a la base de datos";
    exit;
  }

  if( mysql_select_db($db, $conexion ) === false ) {
    echo "mensaje=No se pudo seleccionar la base de datos";
    exit;
  }

  $tienda	 = $_POST["tienda"];
  $almacen = $_POST["almacen"];
  $cumplimiento	= $_POST["cumplimiento"];
  $exactitud	 = $_POST["exactitud"];
  $atencion	 = $_POST["atencion"];
  $pedidos	 = $_POST["pedidos"];
  $transportacion	= $_POST["transportacion"];
  $fecha = $_POST["fecha"];

  if($tienda==NULL|$almacen==NULL|$cumplimiento==NUL L|$exactitud==NULL|$atencion==NULL|$pedidos==NULL| $transportacion==NULL|$fecha==NULL) {
    echo "mensaje=UNO O MAS CAMPOS ESTAN VACÍOS";
  } else {
    $query = "INSERT INTO evaluacion (tienda,almacen,cumplimiento,exactitud,atencion,pe didos,transportacion,fecha) VALUES ('$tienda','$almacen','$cumplimiento','$exactitud','$atencion','$pedidos','$transportacion','$fecha' )";
    if( mysql_query( $query, $conexion ) === true ) {
      $aff = mysql_affected_rows( $conexion );

      if( $aff > 0 )
        echo "mensaje=USUARIO REGISTRADO";
      else
        echo "mensaje=No se pudo registrar al usuario";
    } else {
      echo "mensaje=Ocurrió un error al ejecutar la consulta: " . mysql_error( $conexion );
    }
  }

  // Descomenta la siguiente línea para mostrar cualquier posible error:
  //echo "mensaje=" . mysql_error( $conexion );
  mysql_close($conexion);
?>

Ejecuta nuevamente el código y publica los errores o mensajes que aparezcan. Si no aparece ningún error, entonces asegúrate de que los datos llegan al formulario agregando esto al comienzo del script que procesa los datos:

print_r( $_POST );

Esa función mostrará todo el contenido del array $_POST.

Suerte :D.
hola! gracias por tu pronta ayuda skaparate !!!! funciono sin problemas asi como envio la informacion a mi server (victoria de skaparate!! :D )

solo una pregunta, en la siguiente parte:

"mensaje=USUARIO REGISTRADO";

se puede cambiar para que vaya a una pagina X, no? de la siguiente manera:

if( $aff > 0 )
echo "finalizar.php";

te agradezco mucho tu ayuda asi como te pido disculpas por las preguntas tontas que hago :P
Sí, se puede, aunque como lo has hecho no es la forma :P (como ya te has dado cuenta...). Esta es la forma:

if( $aff > 0 )
  header( 'Location: finalizar.php' );

header es una función que debe aparecer antes que cualquier mensaje, o sea, si por algún motivo se muestra un echo antes de header, PHP generará un error y el archivo terminará su ejecución (es porque es una función que envía cabeceras y por ende debe ser lo primero que se envíe al servidor). finalizar.php también puede ser una URL como http://comocreartuweb.com/ o una ruta ../../archivo.algo.
Gracias por el dato, ya lo he probado y funciona; otras dos preguntitas: es posible configurarlo para guardar la informacion un server de SQL? y la segunda,la fecha, en dreamweaver me percate que se puede ingresar la fecha, la cual cambia en automatico, esa fecha la puedo utilizar para que se guarde en mi base de datos?

Disculpa por tanto interrogatorio jejeje es que es muy dificil encontrar personas que tengan un gran conocimiento de php :)
es posible configurarlo para guardar la informacion un server de SQL?

Eso es lo que hace el script actualmente, no entiendo la pregunta :P.

la fecha, en dreamweaver me percate que se puede ingresar la fecha, la cual cambia en automatico, esa fecha la puedo utilizar para que se guarde en mi base de datos?

¿A que te refieres a que se cambie automático? Creo que lo que quieres es simplemente guardar la fecha, siendo así, la función que necesitas es date:

$fecha = date( 'Y/m/d' ); // El formato sería: YYYY/MM/DD, año de 4 dígitos y mes y día de 2 (con 0 antepuesto de ser necesario)

Esa será la fecha del servidor y probablemente no tengas problemas, pero te en cuenta que pueden haber diferencias de varias horas dependiendo de la ubicación del servidor, por ende puede que la fecha en un servidor de Canadá no sea la misma que en un servidor de España.
skaparate escribió:Eso es lo que hace el script actualmente, no entiendo la pregunta :P.
.

Respuesta: A que si necesito realizar algun cambio en el codigo para conectarlo a una base de datos en SQL server 2003 :) ya que el codigo actualmente conecta a una base de datos en MySql.

skaparate escribió:¿A que te refieres a que se cambie automático? Creo que lo que quieres es simplemente guardar la fecha, siendo así, la función que necesitas es date:

$fecha = date( 'Y/m/d' ); // El formato sería: YYYY/MM/DD, año de 4 dígitos y mes y día de 2 (con 0 antepuesto de ser necesario)

Esa será la fecha del servidor y probablemente no tengas problemas, pero te en cuenta que pueden haber diferencias de varias horas dependiendo de la ubicación del servidor, por ende puede que la fecha en un servidor de Canadá no sea la misma que en un servidor de España.


Respuesta: Probare con el codigo, y ntp el servidor es en una sola zona geografica :D el codigo debe de ir en el php que hace la insercion o en el formulario?
A que si necesito realizar algun cambio en el codigo para conectarlo a una base de datos en SQL server 2003 :) ya que el codigo actualmente conecta a una base de datos en MySql.

Aaaaah, ahora entiendo. Sí, tendrías que modificar todo el código y aprender sobre cómo utilizar las funciones para MS SQL Server. Lamentablemente no te puedo ayudar en eso porque nunca he utilizando un servidor con Microsoft (y no te lo aconsejo tampoco; un buen servidor siempre usará Linux).

el codigo debe de ir en el php que hace la insercion o en el formulario?

En el script que hace la inserción.
Que tal compañero programador! pues la verdad funciono a la perfeccion tu apoyo con este tema, ahora vengo con otro detalle jeje motivos de seguridad :D

en este caso, el codigo para envio de datos debe de validar antes de enviar los datos (tabla de usuarios que estoy creando) asi como no permitir que se guarde un registro identico al anterior por ejemplo con referencia en el almacen nada mas:

tienda1, Almacen1, 10,10,10,10,2012,10,11
tienda1,almacen1,10,10,10,10,10,

Crees poder ayudarme :)
Si utilizas PHPMyAdmin, entonces cambia la codificación de caracteres de la base de datos por algunacosa_ci. Todas las codificaciones que terminan en ci significan Case Insensitive, o sea, no distinguen entre mayúsculas y minúsculas (si eliges este método, entonces te convendría vaciar todas las tablas y comenzar desde cero). Con este método, si se encuentran valores iguales, entonces MySQL debería mostrar un error, así que asegúrate de capturarlo (con try... catch).

La otra forma es simplemente esta:

if( strtolower( $valor1 ) === strtolower( $valor2 ) )
  echo "Hmmm, no, no se pueden ingresar valores iguales o el valor ya está guardado en la BD";

Obviamente cambiar la codificación es más simple, pues solo modificarás la base de datos, en cambio con la segunda opción tienes que leer los valores de la base de datos, luego compararlos y por último, si es que no son iguales, guardarlos, sino descartarlos y mostrar un mensaje.

Ojalá te sirva.

Saludos.
:O

Gracias por la respuesta, con respecto a las variables sensitivas no hay problema porque todo esta en listados, y lo unico que escriben es la fecha (por el momento, cosa que quitare en poco tiempo).

voy a probar y te cuento que pasa vale?
:D
Gracias por el apoyo
hola que tal!!!!

Pues ya lo probe pero no funciono ( o yo lo puse mal XD )

<?php
$dbhost="localhost";
$dbusuario="root";
$dbpassword="";
$db="evaluacion";
$conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);

if( $conexion === false ) {
echo "mensaje=No se pudo conectar a la base de datos";
exit;
}

if( mysql_select_db($db, $conexion ) === false ) {
echo "mensaje=No se pudo seleccionar la base de datos";
exit;
}

$tienda = $_POST["tienda"];
$almacen = $_POST["almacen"];
$cumplimiento = $_POST["cumplimiento"];
$exactitud = $_POST["exactitud"];
$atencion = $_POST["atencion"];
$pedidos = $_POST["pedidos"];
$transportacion = $_POST["transportacion"];
$fecha = $_POST["fecha"];


if( strtolower( $tienda ) === strtolower( $almacen ) )
echo "Lo sentimos ya tienes evaluado este almacen, por favor de al boton regresar";

if($tienda==NULL|$almacen==NULL|$cumplimiento==NULL|$exactitud==NULL|$atencion==NULL|$pedidos==NULL| $transportacion==NULL|$fecha==NULL) {
echo "mensaje=UNO O MAS CAMPOS ESTAN VACÍOS";
} else {
$query = "INSERT INTO evaluacion (tienda,almacen,cumplimiento,exactitud,atencion,pedidos,transportacion,fecha) VALUES ('$tienda','$almacen','$cumplimiento','$exactitud','$atencion','$pedidos','$transportacion','$fecha' )";
if( mysql_query( $query, $conexion ) === true ) {
$aff = mysql_affected_rows( $conexion );

if( $aff > 0 )
header( 'Location: finalizar.php' );
else
echo "mensaje=No se pudo registrar su evaluacion";
} else {
echo "mensaje=Ocurrió un error al ejecutar la consulta: " . mysql_error( $conexion );
}
}

// Descomenta la siguiente línea para mostrar cualquier posible error:
//echo "mensaje=" . mysql_error( $conexion );
mysql_close($conexion);
?>



me echas una manita?
¿Por qué no funcionó?

Otra cosa:

// 1ª
$tienda == NULL | $almacen == null

no es lo mismo que

// 2ª
$tienda == NULL || $almacen == null

La primer expresión es un operador de bits, el cual da como resultado 1 si el lado izquierdo o el derecho están activos (1), pero no ambos lado de la expresión. La segunda expresión es una operación de comparación que sí comprueba si $tienda o $almacen son iguales a null. Si bien en este caso funciona, pueden haber otros casos en los que no obtendrás el resultado esperado, así que ten cuidado.

Aquí hay más información sobre los operadores de bits.
No se, registree dos veces con el mismo almacen y la misma tienda, guardo la informacion como tal y yo D:
Jajajaja, no me di cuenta XD:

// Aquí el resto del código...

if( strtolower( $tienda ) !== strtolower( $almacen ) ) {
  if($tienda==NULL|$almacen==NULL|$cumplimiento==NUL L|$exactitud==NULL|$atencion==NULL|$pedidos==NULL| $transportacion==NULL|$fecha==NULL) { 
    echo "mensaje=UNO O MAS CAMPOS ESTAN VACÍOS"; 
  } else { 
    $query = "INSERT INTO evaluacion (tienda,almacen,cumplimiento,exactitud,atencion,pe didos,transportacion,fecha) VALUES ('$tienda','$almacen','$cumplimiento','$exactitud' ,'$atencion','$pedidos','$transportacion','$fecha' )"; 
    if( mysql_query( $query, $conexion ) === true ) { 
      $aff = mysql_affected_rows( $conexion ); 

      if( $aff > 0 ) 
        header( 'Location: finalizar.php' );
      else
        echo "mensaje=No se pudo registrar su evaluacion"; 
    } else { 
      echo "mensaje=Ocurrió un error al ejecutar la consulta: " . mysql_error( $conexion ); 
    } 
  }
} else {
  echo "Lo sentimos ya tienes evaluado este almacen, por favor de al boton regresar";
}
XD lol XD

no te preocupes :D probare tu codigo y vere que onda :D
Hola mi estimado colega!

Pues he probado tu codigo pero no funciono, envia la informacion a la base de datos; creo que hay un detalle al principio del codigo, no estoy muy seguro con respecto a los dos IFs del principio.
Hola Mi estimado skaparate! he revisado la funcion que estas utilizando y veo que no es la que necesito! XD ya que me conviertes el $almacen y el $tienda en minusculas! lo que en realidad debe hacer el codigo es que los valores con referencia a la tienda y almacen, no se repita el almacen. (todos los valores se guardan en letra mayuscula), te muestro en un ejemplo que debe pasar:

registro 1: tienda1, almacen1,x,x,x,x,x,x
registro 2: tienda1, almacen2,x,x,x,x,x,x
registro 3: tienda1, almacen1,x,x,x,x,x,x
registro 4: tienda1, almacen3,x,x,x,x,x,x

Espero y me logres entender.
Entonces debes rehacer la base de datos, de tal forma que la clave primaria (PRIMARY KEY) de la tienda solo pueda existir una sola vez por almacén.

tienda1 -> almacen1
           -> almacen2
           -> almacen3
           -> almacen1 // Error; ya existe.

La relación es muchos a muchos, por ende debe existir una tabla intermedia con los id del almacén y la tienda como clave primaria (PRIMARY KEY):

Tienda                 Tienda_Almacen                                Almacen
id PRIMARY KEY     tienda_id                                         id PRIMARY KEY
nombre                almacen_id                                      otros_datos
productos            PRIMARY KEY (tienda_id, almacen_id)
etc.

Por si acaso, lo anterior son ejemplos de tablas SQL.

Saludos.
Saludos skaparate! he hecho lo que me comentaste de poner como campos principales a almacen y tienda; pero lo que sucede es que despues otra tienda intenta evaluar un almacen este ya no puede evaluarlo; entonces deberia crear una tabla nueva en la que guarde especificamente el almacen y la tienda, despues hacer un query hacia esa tienda y hacer una comparacion para asi evitar que la tienda no vuelva a evaluar dicho almacen.

ahora, ya cree la tablita pero mi tope ahora es el query que debe realizar para buscar los datos y luego compararlos, pero me marca un error en dreamweaver(esta marcado en color negro, lo que yo realice, el error esta en color rojo):

$tienda = $_POST["tienda"];
$almacen = $_POST["almacen"];
$cumplimiento = $_POST["cumplimiento"];
$exactitud = $_POST["exactitud"];
$atencion = $_POST["atencion"];
$pedidos = $_POST["pedidos"];
$transportacion = $_POST["transportacion"];
$fecha = $_POST["fecha"];

$query1= ("select 'tienda','almacen' from calificacion where $tienda = 'tienda' and $almacen= 'almacen'");

if (($tienda),($almacen) !== ($query1) ) {

if($tienda==NULL|$almacen==NULL|$cumplimiento==NULL|$exactitud==NULL|$atencion==NULL|$pedidos==NULL| $transportacion==NULL|$fecha==NULL) {
Saludos de nuevo! despues de unos dias, estuve trabajando en un codigo de entrada de usuario y contraseña; y me percate que el metodo de validacion me funcionaba asi que me pregunte: porque no usarlo en el codigo de mi evaluacion; asi que puse manos a la obra pero me manda un mensaje de error cuando envio la informacion, pero apesar de ello se envia a la base de datos.

el siguiente error es el siguiente:

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\pruebas\evaluacion2.1.php:137) in C:\wamp\www\pruebas\evaluacion2.php on line 41
Hola :)

Eso significa que estas utilizando alguna función que envía cabeceras al navegador después de haber mostrado algo. Un ejemplo de estas funciones son: session_start(), set_cookie() y header(); ninguna de ellas puede aparecer después de un echo, print, print_r, var_dump, etc. (a no ser de que estén "condicionadas" - if... else - o se utilice un buffer de salida - ob_start()).

Revisa el código (o publícalo) :).
Muy bien, son los siguientes:

el primero, se llama validar:

<?php
$dbhost="server";
$dbusuario="usuario";
$dbpassword="XXXX";
$db="evaluacion";
$conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);
$tabla = 'evaluacion';
$columna1 = 'num_registro';
$columna2 = 'tienda';
$columna3 = 'almacen';

$conexion = mysql_connect($dbhost, $dbusuario, $dbpassword)
or die("No se ha podido conectar con el servidor");
mysql_select_db($db,$conexion) or
die("No se ha podido seleccionar la base de datos");

$tienda = $_POST["tienda"];
$almacen = $_POST["almacen"];

$sql = mysql_query("SELECT * FROM $tabla WHERE $columna2='".$_POST['tienda']."'");
$sql = mysql_query("SELECT * FROM $tabla WHERE $columna3='".$_POST['almacen']."'");
$busqueda = mysql_num_rows($sql);

?>


luego el codigo de la evaluacion:


<head>
<title>Evaluacion de servicio</title>
<style type="text/css">
.a {
color: #FFE00;
}
body {
background-color: #FFE410;
}
</style>
</head>

<body background>

<?php include ("verificar.php"); ?>

<p>
<h1>
<label> <img src="b.gif" width="99" height="105" />Tiendas SA de CV</label>
<img src="b.gif" width="99" height="105" /></h1>
</form>

<h2><label><b>Evaluacion de almacenes</b></label>

</h2>

<p>
<label>Favor de realizar la evaluacion del almacen que le brinda el servicio a su tienda. La forma de calificacion es la siguiente: </label></p>

<p>
<label> - Calificacion minima: 1 punto</label></p>

<p>
<label>- Calificacion Maxima: 10 puntos
</label>
</p>


<form action="evaluacion2.php" method="post" name="form1">

<p>Por favor seleccione la tienda a la que pertenece y el almacen al que va a

evaluar.</p>
<p>Fecha:
<label for="fecha"></label>
<input name="fecha" type="text" id="fecha" size="15" /><b>* Favor de colocarlo en numeros (ej. 2012/10/30)</b></p>
<label for="tienda">Tienda: </label>
<select name="tienda" id="tienda">
<option value=" "> </option>
<option value="tienda">tienda</option>
<option value="tienda">tienda</option>
</select>
<p>
<label for="almacen">Almacen: </label>
<select name="almacen" id="almacen">
<option value=" "> </option>
<option value="almacen1">almacen1</option>
<option value="almacen2">almacen2</option>
</select>
</p>
<p>Los aspectos a evaluar son los siguientes:</p>
<p>
<label for="cumplimiento">Cumplimiento: </label>
<select name="cumplimiento" id="cumplimiento">
<option value=" "> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<label for="exactitud">exactitud:</label>
<select name="exactitud" id="exactitud">
<option> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<label for="atencion">Atencion: </label>
<select name="atencion" id="atencion">
<option value=" "> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<label for="pedidos">Pedidos Extras: </label>
<select name="pedidos" id="pedidos">
<option value=" "> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<label for="transportacion">Transportacion: </label>
<select name="transportacion" id="transportacion">
<option value=" "> </option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<input type="submit" value="Enviar Evaluacion" />
</p>
</form>
<p>&nbsp;</p>
</body>
</html>

el tercer archivo llamado evaluacion2.php :

<?php
include ("evaluacion2.1.php");

if($busqueda>0){

$dbhost="server";
$dbusuario="usuario";
$dbpassword="XXX";
$db="evaluacion";
$conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);

if( $conexion === false ) {
echo "mensaje=No se pudo conectar a la base de datos";
exit;
}

if( mysql_select_db($db, $conexion ) === false ) {
echo "mensaje=No se pudo seleccionar la base de datos";
exit;
}

$tienda = $_POST["tienda"];
$almacen = $_POST["almacen"];
$cumplimiento = $_POST["cumplimiento"];
$exactitud = $_POST["exactitud"];
$atencion = $_POST["atencion"];
$pedidos = $_POST["pedidos"];
$transportacion = $_POST["transportacion"];
$fecha = $_POST["fecha"];

if($tienda==NULL|$almacen==NULL|$cumplimiento==NULL|$exactitud==NULL|$atencion==NULL|$pedidos==NULL| $transportacion==NULL|$fecha==NULL) {
echo "mensaje=UNO O MAS CAMPOS ESTAN VACÍOS";
} else {
$query = "INSERT INTO evaluacion (tienda,almacen,cumplimiento,exactitud,atencion,pedidos,transportacion,fecha) VALUES ('$tienda','$almacen','$cumplimiento','$exactitud','$atencion','$pedidos','$transportacion','$fecha' )";
if( mysql_query( $query, $conexion ) === true ) {
$aff = mysql_affected_rows( $conexion );

if( $aff > 0 )
header( 'Location: finalizar.php' );
else
echo "mensaje=No se pudo registrar su evaluacion";
} else {
echo "mensaje=Ocurrió un error al ejecutar la consulta: " . mysql_error( $conexion );
}
}

mysql_close($conexion);

} ?>



Y el ultimo que es finalizar.php (ese no lo pongo es solo una pagina final;
El problema es:

if( $aff > 0 )
  header( 'Location: finalizar.php' );

y el error comienza en el archivo evaluacion2.1.php. Revisa ese archivo y asegúrate de que no se ejecuta ningún echo antes de las líneas anteriores.