Foros del Web » Programando para Internet » PHP »

solucionar un error

Estas en el tema de solucionar un error en el foro de PHP en Foros del Web. tengo este código: <?php $bd_host = "localhost"; $bd_usuario = "root"; $bd_password = "clave"; $bd_base = "bbdd"; $con = mysql_connect($bd_host, $bd_usuario, $bd_password); mysql_select_db($bd_base, $con); //variables POST ...
  #1 (permalink)  
Antiguo 03/04/2007, 01:48
 
Fecha de Ingreso: enero-2007
Mensajes: 16
Antigüedad: 17 años, 3 meses
Puntos: 0
solucionar un error

tengo este código:

<?php

$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "clave";
$bd_base = "bbdd";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);

//variables POST
$idal=$_POST['idalimento'];
$idrec=$_POST['idreceta'];

$busqueda= mysql_query("SELECT * FROM tb_ingredientes_receta WHERE id_alimento=$idal and id_receta=$idrec",$con);

if(mysql_num_rows($busqueda)>0) {
echo "el registro está duplicado. vuelva a intentarlo";
}
else
{
$sql="INSERT INTO tb_ingredientes_receta
(id_alimento,
id_receta)
VALUES
('$idal','$idrec')";

mysql_query($sql,$con);

}

?>


todo funciona perfectamente. El insert lo hace perfectamente. Salvo cuando tiene que mostrar el mensaje de error que no lo hace. Alguien ve algo raro en el código. Es para controlar duplicados. Gracias
  #2 (permalink)  
Antiguo 03/04/2007, 02:11
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: solucionar un error

Hola,

una cuestion, por qué en la SELECT de comprobacion de duplicados no colocas los parametros $idal y $idrec entre comillas simples como lo haces en el INSERT?

Qué tipo de campos son en la tabla , texto o numeros ?

Si el INSERT te funciona ok, puede ser que sean cadenas de texto y por eso, a lo mejor, la hacer la select sin las comillas no te devuelve nada, posiblemente te este devolviendo algun error que no ves o no se muestra ...

saludos
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #3 (permalink)  
Antiguo 03/04/2007, 02:29
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: solucionar un error

hola,
Código PHP:
<?php
$bd_host 
"localhost"
$bd_usuario "root"
$bd_password "clave"
$bd_base "bbdd"
$con mysql_connect($bd_host$bd_usuario$bd_password); 
mysql_select_db($bd_base$con); 

//variables POST
$idal=$_POST['idalimento'];
$idrec=$_POST['idreceta'];
//comprueba siempre q tus consultas no tengan errores -> mysql_error!
$busquedamysql_query("SELECT * FROM tb_ingredientes_receta WHERE id_alimento=$idal and id_receta=$idrec",$con) or die(mysql_error()); 
$nregistros mysql_num_rows($busqueda);
//imprime la cantidad de registros q te de la consulta, a ver si asi encuentras q es!
echo "Numero de registros: ".$nregistros;
if(
$nregistros != 0) {
    echo 
"El registro está duplicado. vuelva a intentarlo"
} else { 
    
$sql="INSERT INTO tb_ingredientes_receta (id_alimento,id_receta) VALUES ('$idal','$idrec')";
    
mysql_query($sql,$con);


?>
saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 03/04/2007, 04:56
 
Fecha de Ingreso: enero-2007
Mensajes: 16
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: solucionar un error

gracias sergi. Podrías decirme como incluir una función javascript que mostrara una ventanita de alerta cuando el registro es duplicado?. Por favor, como lo harías?. Un saludo, espero tu respuesta.
  #5 (permalink)  
Antiguo 03/04/2007, 04:59
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: solucionar un error

hola de nuevo..
solo tienes q cambiar un poko alahora de mostrar tu mensaje:
Código PHP:
echo '<script>alert("El registro está duplicado. vuelva a intentarlo.");</script>'
saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #6 (permalink)  
Antiguo 03/04/2007, 05:06
 
Fecha de Ingreso: enero-2007
Mensajes: 16
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: solucionar un error

funciona como me comentas. Pero te cuento. Este archivo se llama registro.php. Es ejecutado desde una función de un archivo llamado ajax.js, donde se le pasan los valores. Pues bien, no sale el mensaje de alerta por ningún lado. Simplemente pulso el botón de insertar y no hace nada. Sabrías orientarme?. Gracias. Y una pregunta más. Si tengo que llamar a alguna función de ese fichero ajax.js desde registro.php, tengo que describirlo en esta página. Es decir, incorporarle al archivo registro.pnp lo siguiente:

<script language="JavaScript" type="text/javascript" src="ajax.js"></script>


gracias.
  #7 (permalink)  
Antiguo 03/04/2007, 05:22
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: solucionar un error

Hola,
si tu web esta hecha entera en ajax, como siempre usas contenedores(div), solo con que incluyas el ajax.js en la primera pagina ya habra bastante ya que todas las demás estaran contenidas dentro de esta!

en cuanto al insert... podrias preguntar en el foro de ajax a ver q te dicen.

Lo q he hecho yo algunas veces en estos casos es, en mi formulario, cuando escojen los campos, en el evento onchange llamar una funcion mediante ajax q cargue la consulta de si existe o no ese campo en mi base de datos, y q esta me devuelva un 1 si existe o bien un 0 sino existe, el cual con este valor relleno un campo hidden! entonces cuando le des al boton insert miras q numero tiene ese campo, si es 1 muestras diciendo q ya existe y si es 0 cargas tu consulta insert!

no si es la solucion mas apropiada pero a mi de momento me ha ido bien!
espero q te sirva de orientacion!

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #8 (permalink)  
Antiguo 03/04/2007, 05:29
 
Fecha de Ingreso: enero-2007
Mensajes: 16
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: solucionar un error

"Lo q he hecho yo algunas veces en estos casos es, en mi formulario, cuando escojen los campos, en el evento onchange llamar una funcion mediante ajax q cargue la consulta de si existe o no ese campo en mi base de datos, y q esta me devuelva un 1 si existe o bien un 0 sino existe, el cual con este valor relleno un campo hidden! entonces cuando le des al boton insert miras q numero tiene ese campo, si es 1 muestras diciendo q ya existe y si es 0 cargas tu consulta insert!"

no se como hacer esto que me dices.

Te comento. Yo muestro una consulta en pantalla. El usuario hace click sobre el id del registro que quiere seleccionar:

echo " <td><a style=\"text-decoration:underline;cursor:pointer;color: #CC0000; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold;\" onclick=\"pedirAlimento('".$row['id_alimento']."','$idr')\">".$row['id_alimento']."</a></td>";


cuando se hace onclick llama a una función dentro de ajax.js que hace lo siguiente:

function pedirAlimento(idalimento, idreceta){
//donde se mostrará el formulario con los datos
divFormulario = document.getElementById('formulario');
//instanciamos el objetoAjax
ajax=objetoAjax();
//uso del medotod GET
ajax.open("POST", "insertar_alimento.php");
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
//mostrar resultados en esta capa
divFormulario.innerHTML = ajax.responseText
//mostrar el formulario
divFormulario.style.display="block";
}
}
//como hacemos uso del metodo GET
//colocamos null
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//enviando los valores
ajax.send("idali="+idalimento+"&idrec="+idreceta)
}


Como puedo comprobar eso que me dices. Verificar si existe o no, antes de mandarlo a insertar_alimento.php.

Puedes orientarme?
  #9 (permalink)  
Antiguo 03/04/2007, 05:32
 
Fecha de Ingreso: enero-2007
Mensajes: 16
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: solucionar un error

yo tengo una capa que se llama: <div id="mensaje"></div>

ahí es donde me gustaría que mostrara el mensaje de error si está duplicado o el mensaje de insercion correcta.

La verdad es que tengo mucho que avanzar en todo esto. Puedes ayudarme?
  #10 (permalink)  
Antiguo 03/04/2007, 05:40
 
Fecha de Ingreso: enero-2007
Mensajes: 16
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: solucionar un error

el formulario es este:

<form name="nuevo_empleado" action="" onsubmit="enviarDatosEmpleado(); return false">

<input name="idalimento" type="hidden" value="<?php echo $idali; ?>" />
<input name="idreceta" type="hidden" value="<?php echo $idrec; ?>" />

<table width="730" border="0">
<tr>
<td WIDTH="166">Nombre_alimento</td>
<td width="462"><input disabled="disabled" name="nombre" type="text" value="<?php echo $nom; ?>" size="70" /></td>
</tr>
<tr>
<td WIDTH="166">Racion_comestible</td>
<td><input disabled="disabled" name="racion" type="text" value="<?php echo $rac; ?>" /></td>
</tr>
<tr>
<td WIDTH="166">Comestible_alimento</td>
<td><input disabled="disabled" name="comestible" type="text" value="<?php echo $com; ?>" /></td>
</tr>
<tr>
<td WIDTH="166">Grupo_alimento</td>
<td><input disabled="disabled" name="grupo" type="text" value="<?php echo $ngrup; ?>" /></td>
</tr>
</tr>
<tr>
<td WIDTH="166">Subgrupo Alimento</td>
<td><input disabled="disabled" name="subgrupo" type="text" value="<?php echo $nsubg; ?>" /></td>
</tr>
<tr>
<td WIDTH="166">Unidad_medida</td>
<td><input disabled="disabled" name="unidad" type="text" value="<?php echo $nunid; ?>" /></td>
</tr>
</table>

<p>
<input type="submit" name="Submit" value="Insertar" />
</p>
</form>
  #11 (permalink)  
Antiguo 03/04/2007, 05:42
 
Fecha de Ingreso: enero-2007
Mensajes: 16
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: solucionar un error

y esta es la funcion que se llama desde el form:

function enviarDatosEmpleado(){
//donde se mostrará lo resultados
divFormulario = document.getElementById('formulario');
//valores de los inputs
idal=document.nuevo_empleado.idalimento.value;
idrec=document.nuevo_empleado.idreceta.value;

//instanciamos el objetoAjax
ajax=objetoAjax();
//uso del medotod POST
//archivo que realizará la operacion
//registro.php
ajax.open("POST", "registro.php",true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {

pedirDatos(idrec);
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//enviando los valores
ajax.send("idalimento="+idal+"&idreceta="+idrec)
}
  #12 (permalink)  
Antiguo 03/04/2007, 05:43
 
Fecha de Ingreso: enero-2007
Mensajes: 16
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: solucionar un error

el archivo registro.php ya lo conoces sergi
  #13 (permalink)  
Antiguo 03/04/2007, 07:31
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: solucionar un error

Hola,
de donde sacas las variables siguientes?
Código PHP:
<input name="idalimento" type="hidden" value="<?php echo $idali?>" />
<input name="idreceta" type="hidden" value="<?php echo $idrec?>" />
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #14 (permalink)  
Antiguo 03/04/2007, 14:00
 
Fecha de Ingreso: enero-2007
Mensajes: 16
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: solucionar un error

viene de aqui

<?php
//Configuracion de la conexion a base de datos
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "clave";
$bd_base = "bbdd";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);


//consulta los datos del alimento por su id
$idali=$_POST['idali'];
$idrec=$_POST['idrec'];



son los valores que se envian en el post de la funcion pediralimento. los guardo en esas dos variables para hacer después las busquedas y los where.

$sql=mysql_query("SELECT * FROM tb_alimentos WHERE id_alimento=$idali",$con);

$row = mysql_fetch_array($sql);
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 05:26.