Buscar email y si esta se agrega a campo observaci

Desde un formulario web que posee cuatro campos nombres, email, país y observación debo buscar el email, y si es que esta el email, debo agregar una nueva observación al campo de observaciones cliObs(cliente observación)
De esta forma en el campo cliObs se van concatenando todas las observaciones nuevas que van agregando los clientes o usuarios
el código que tengo esta más abajo:
El pseudo código de esto es
Buscar email, si es que esta se agrega al campo cliObs la nueva observación, y si no esta el email registrado, se agrega el email, el país, nombres y la observación
el código que tengo hasta el momento es este,
mysql_connect('localhost', 'log', 'pass');
mysql_select_db('sip');
$consulta= 'SELECT cliMail , cliObs FROM cliente WHERE cliMail like $email';
$resultado = mysql_query($consulta);
//$array_datos = mysql_fetch_row ($resultado);
//mysql_result($resultado, 1)
echo mysql_result($resultado, 1);
$query = "INSERT INTO cliente (`cliRut`, `CliDv`, `cliFonoCelular`, `cliMail`, `CliApPaterno`, `CliApMaterno`, `CliNombres`, `CliProfActi`, `cliEstadoCivil`, `cliDireccion`, `cliComunaVilla`, `cliFonoFijo`, `CliObs`, `CliEmail2`, `cliDirNumero`, `cliCiudad`, `cliPais`, `cliAsistencia`) VALUES (NULL, NULL, NULL,'$email', NULL, NULL, '$nombre', NULL, NULL, NULL, NULL, NULL, '$Observacion', NULL, NULL, NULL, '$pais', NULL);";
$result = mysql_query($query);

2 Respuestas

Respuesta
1
Te voy a ir poniendo las cosas por parte para que tu las comprendas. Lo primero es cambiar algunas cosillas en la conexión a MySQL:
1) $link = mysql_connect('localhost', 'log', 'pass') or die(mysql_error());
La variable $link no es necesario ponerla pero yo acostumbro a hacerlo así por si luego me tengo que conectar a otro servidor MySQL desde la misma página no me de problemas. Y el die(mysql_error()) lo que hace es terminar la ejecución de la página en caso de que no se haya establecido la conexión devolviéndote el posible error de porque no PHP no se pudo conectar al servidor MySQL.
2) mysql_select_db('sip',$link) or die(mysql_error());
Nuevamente la variable $link que es el identificador devuelto por la conexión a MySQL y que tiene la misma explicación que lo anterior de porque usarla. El die(mysql_error()) también es lo mismo y si lo vez es generalizando: parar la ejecución de la página y devolver el posible error de MySQL.
3) $consulta = "SELECT COUNT(cliMail) FROM cliente WHERE cliMail='".$_POST['email']."'";
$resultado = mysql_query($consulta) or die(mysql_error());
Como ves cambie la consulta. Lo que hice fue contar la cantidad de elementos que me devolvió la consulta para ese parámetro especifico que es el email. No se si sabias que poniendo LIKE lo que hace es comparar los campos y buscar cualquier cosa que se parezca, no así si pones "=" ya que tiene que matchear todo completo.
4) $cantidad = mysql_result($resultado,0);
Ponemos en cantidad los valores contados en la consulta.
5) if ( $cantidad >= 1 ){
$sql = "UPDATE cliente SET CliObs='".$_POST['Observacion']."' WHERE cliMail='".$_POST['email']."'";
} else {
$sql = "INSERT INTO cliente (`cliRut`, `CliDv`, `cliFonoCelular`, `cliMail`, `CliApPaterno`, `CliApMaterno`, `CliNombres`, `CliProfActi`, `cliEstadoCivil`, `cliDireccion`, `cliComunaVilla`, `cliFonoFijo`, `CliObs`, `CliEmail2`, `cliDirNumero`, `cliCiudad`, `cliPais`, `cliAsistencia`) VALUES (NULL, NULL, NULL,'$email', NULL, NULL, '$nombre', NULL, NULL, NULL, NULL, NULL, '$Observacion', NULL, NULL, NULL, '$pais', NULL);";
}
Si $cantidad tiene un valor mayor o igual que 1 entonces actualizamos la tabla donde el eMail sea el pasado como parámetro e actualizando los datos del campo Observación con los que pasas como parámetros también. De lo contrario entonces lo que haces es la consulta que ya tu tenias formada anteriormente.
6) $result = mysql_query($query) or die(mysql_error());
Ejecutas la consulta
Hola me funciona casi perfect, solo me falta una cosa, cuando el email ya se encuentra lo que se hace es agregar la observación, más bien dicho, a la observación que ya esta se le agrega otra, la puse como variable ya que se la pongo en duro más arriba, no viene de un formulario
La idea es esta:
al campo CliObs=CliObs + &$observacion
lo puse como esta aquó abajo pero no resulta
$sql = "UPDATE cliente SET CliObs='".$observacion."' WHERE cliMail='".$_POST['email']."'";
Disculpa sino comprendí la pregunta desde el principio pero es que me quedaba un poco confusa. Eso que quieres lo podes hacer en el mismo UPDATE. La consulta te quedaría así entonces:
$sql = "UPDATE cliente SET CliObs= CliObs + '".$observacion."' WHERE cliMail='".$_POST['email']."'";
Ahora no se de donde salga la variable $observacion que según dices no viene de un formulario. Es por ello que la pongo tal y como dices. Proba y dime como te va.
Respuesta
1
Tengo algunas dudas al respecto si pudieras resolverlas:
¿De dónde vas a buscar el mail? ¿De la base de datos o de un campo de un formulario?
Las observaciones las vas a agregar una después de la otra o vas a crear un registro nuevo cada vez que te dan una observación nueva. Porque si es esto ultimo requieres de otra tabla para guardar las observaciones

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas