Foros del Web » Programando para Internet » PHP »

problema return

Estas en el tema de problema return en el foro de PHP en Foros del Web. Hola gente , como no hoy vuelvo a hacerme (como dicen por aquí) , la picha un lio y seguramente sea otro error tonto, tengo ...
  #1 (permalink)  
Antiguo 20/09/2008, 04:32
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
De acuerdo problema return

Hola gente , como no hoy vuelvo a hacerme (como dicen por aquí) , la picha un lio y seguramente sea otro error tonto, tengo este código:


Código:
function add_new_art($ref_art,$ref_pedido,$items_art) {
$connect=db_connect();
if (!$connect)
return 0;
//obtenemos todos los datos del articulo cuya referencia es ref
if (!$article=ask_art_by_ref($ref_art))
return false;

//Comprobamos que el artículo no está ya añadido a el pedido
$Ssql="SELECT * FROM pedidos_articulos
		WHERE ref='$ref_pedido'
		AND artid='".$article[artid]."' ";
		
	$result=mysql_query($Ssql);
	
	
	$num_arts = mysql_num_rows($result);

   if ($num_arts == 0)
    {		
 		$query ="insert into pedidos_articulos values
 		('','$article[artid]','$ref_pedido','$article[art_name]','$items_art','$article[art_price]','0')";
		
		if ( !$insert = mysql_query($query) )
	
		return 2;

		else
		return 1;

		}
		
else		
return 3;
}
El problema que tengo es que funciona PERFECTAMENTE , hace el insert y todo bien con la pega que siempre ,siempre devuelve 3 , el tema es que según el número que devuelva se mostrará en pantalla un mensaje u otro, pero el condenao siempre devuelve 3 , ¿alguien sabe donde estoy metiendo la pata?. He comprobado que devuelve tres haciendo un echo en la página que lo recibe.
Saludos y gracias
  #2 (permalink)  
Antiguo 20/09/2008, 07:31
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: problema return

Trata de colocar los parentesis a los if y else.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 20/09/2008, 08:02
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: problema return

Cita:
Iniciado por the_web_saint Ver Mensaje
Trata de colocar los parentesis a los if y else.

Saludos
La verdad no le veo mucho sentido , púes es lo mismo poner los { } en los if y else cuando se trata de una sola sentencia, de todas formas hr probado y el return siegue devolviendo siempre 3, es cuerioso porque el insert se produce perfectamente cuando tiene que producirse .

¡¡AHY COMO ESTOY¡¡
Me acabo de dar cuenta del error y está aquí:
Código:
$Ssql="SELECT * FROM pedidos_articulos
		WHERE ref='".$ref_pedido."'
		AND artid='".$article[artid]."' ";
El tema es que yo había puesto WHERE ref='$ref_pedido' y parece que así no funciona (me gustaría que alguien aclarase el motivo), si sirve de pista $ref_pedido es de tipo "int(10) ".
Lo que no termino de entender es si $num_arts siempre valía 1 como narices se producía el INSERT ??.

Un saludo y gracias


Un saludo y gracias

Última edición por Dundee; 20/09/2008 a las 08:20
  #4 (permalink)  
Antiguo 20/09/2008, 08:16
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: problema return

bueno y porque no usas mysql_affected_rows() en el if, asi te retornara el numero de filas retornadas.
O prueba solamente colocando esto
Cita:
if ( !mysql_query($query) )
Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #5 (permalink)  
Antiguo 20/09/2008, 08:17
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema return

Es extraño. Si te devuelve 3 es porque $num_arts no es igual a 0, pero en ese caso no debería ejecutar tu sentencia INSERT. Antes de hacer el if con $num_arts prueba imprimiendo tal variable:

Código php:
Ver original
  1. var_dump($num_arts);
Saludos,
  #6 (permalink)  
Antiguo 20/09/2008, 08:25
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: problema return

Cita:
Iniciado por okram Ver Mensaje
Es extraño. Si te devuelve 3 es porque $num_arts no es igual a 0, pero en ese caso no debería ejecutar tu sentencia INSERT. Antes de hacer el if con $num_arts prueba imprimiendo tal variable:

Código php:
Ver original
  1. var_dump($num_arts);
Saludos,
Es muy raro porque siempre devolvía 3 por lo que se supone que no entraría se tendría que ejecutar el INSERT pero si se ejectuaba, ¿raro verdad?, púes os aseguro que es así, no se porque le ha afectado que estuviera mal el campo del SELECT WHERE ref='".$ref_pedido."'. No se en que medida esto puede perjudicar a que entre o no en el if del INSERT pero ahora que lo he solucionado funciona perfectamente.
un saludo y gracias
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 10:42.