Foros del Web » Programando para Internet » PHP »

me da el siguiente error al ejecutar este codigo con array

Estas en el tema de me da el siguiente error al ejecutar este codigo con array en el foro de PHP en Foros del Web. el codigo es: Código PHP: <?php $id  = array (  '1' ,  '2' ,  '3' ); $db  =  mysql_pconnect  (  "xxxx" ,  "xxxx" ,  "xxxx"  ); mysql_select_db  ...
  #1 (permalink)  
Antiguo 27/09/2006, 06:25
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
me da el siguiente error al ejecutar este codigo con array

el codigo es:

Código PHP:
<?php
$id 
= array ( '1''2''3');
$db mysql_pconnect "xxxx""xxxx""xxxx" );
mysql_select_db 'pruebas1' );

for ( 
$e 0$e count $id ); $e++ )
{
$consulta "SELECT precio, cuota FROM tblArticulos WHERE id_index = '".$id[$e]."'";
$result mysql_query $consulta );
$numeroderesult mysql_num_rows $result );

for ( 
$i 0$i $numeroderesult$e++ )
{
$fila mysql_fetch_array $result );
echo 
"ID de artículo: ".$fila['id_articulo']."<br/>";
echo 
"Precio de artículo: ".$fila['precio_articulo']."<br/>";
echo 
"Cantidad de cuotas: ".$fila['ctdcuota']."<p>";
}
}
?>
el error que me devuelve es:

mysql_num_rows(): supplied argument is not a valid MySQL result resource, gracias desde ya
  #2 (permalink)  
Antiguo 27/09/2006, 06:35
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
el error ese esta solucionado, tenia mal un nombre de campo

Pero lo que me pasa ahora es que entra en un loop (ciclo sin fin) y no termina nunca, que puede ser (no me doy cuenta?????)
  #3 (permalink)  
Antiguo 27/09/2006, 07:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
No sé para que usas el for() .. (se puede emplear, si .. pero no es lo común). Usa un While() aprovechandote de que las funciones "_fetch_" de PHP lo que hacen es ir entregando un registro del resultado hasta que no exista más, dado esa condición entregan un "false".

Código PHP:
$numeroderesult mysql_num_rows $result ); 
if (
$numeroderesult 0){
  while (
$fila=mysql_fetch_array($result)){ 
      echo 
"ID de artículo: ".$fila['id_articulo']."<br/>"
      echo 
"Precio de artículo: ".$fila['precio_articulo']."<br/>"
      echo 
"Cantidad de cuotas: ".$fila['ctdcuota']."<p>"
    } 
} else {
   echo 
"No hay resultados";

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 27/09/2006, 07:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Para lo que pretendes hacer con el Array .. tienes en SQL la instrucción "IN(lista de valores)" así no usas el bucle for() que empleas:


Código PHP:
$lista_ids="1,2,3,4,5"// le pasas los "id's" como un string separados por comas.
$consulta "SELECT precio, cuota FROM tblArticulos WHERE id_index IN(".$lista_ids.")" 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 27/09/2006, 07:44
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
no mira te explico mejor

Los ID los grabo en un vector id_array que vengo propagando por sesion, ahora estaba haciendo una prueba pero la verdad que no me sale nada ahora eso si recorre solo tres veces debido al array de tres elementos que utilizo de ejemplo

el codigo me quedo asi ahora (pero hay algo que no anda bien)

Código PHP:
<?php
$id 
= array ( '1''2''3');
$db mysql_pconnect "xxxx""xxxx""xxxx" );
mysql_select_db 'hartley_pruebas1' );

for ( 
$e 0$e count $id ); $e++ )
{
$consulta "SELECT precio, cuotas FROM tblArticulos WHERE id_index = '".$id[$e]."'";
$result mysql_query $consulta );

$numeroderesult mysql_num_rows $result ); 
if (
$numeroderesult 0){
  while (
$fila=mysql_fetch_array($result)){ 
      echo 
"ID de artículo: ".$fila['id_articulo']."<br/>"
      echo 
"Precio de artículo: ".$fila['precio_articulo']."<br/>"
      echo 
"Cantidad de cuotas: ".$fila['ctdcuota']."<p>"
    } 
} else {
   echo 
"No hay resultados";
}  
}
?>
  #6 (permalink)  
Antiguo 27/09/2006, 07:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Pero te dice "tres veces": [/i]No hay resultados[/i]

O qué exactamente?

Yo lo que veo ahora que me fijo más es que en tu consulta SQL haces referencia a ciertos campos (columnas) de tu resultado:
SELECT precio, cuotas ....

Pero al pretender acceder al resultado, usas otros nombres y campos que en la consulta SQL no se especifican:

id_articulo,precio_articulo,ctdcuota

Incluye esos campos en la sentencia SQL. O usa el comodin "*" que hace referencia a "todos" los campos de esa tabla.

El tema de la sentencia "IN()" de SQL puedes emplearla aun cuanto tengas un array aplicando un implode() a tu array:

Código PHP:
$id = array ( '1''2''3'); 
$lista_ids=implode(',',$id);
$consulta "SELECT * FROM tblArticulos WHERE id_index IN(".$lista_ids.")";

echo 
"SQL a ejecutar: ".$consulta."<br>";

// etc .. 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 27/09/2006, 08:00
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
Con respecto a lo que dices de la consulta esta bien

Se ve que agarre otro codigo y era eso (perdon por mi falta de concentracion), pero lo que no puedo lograr es como pasar por la sesion un array que ya viene de otra pagina, el archivo que me genera la seccion y me agrega los productos es select.php (si queres te lo paso)
  #8 (permalink)  
Antiguo 27/09/2006, 08:58
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
ya aprovecho porque no me doy cuenta para grabar esos datos

que se encuentran en la tabla a una tabla (de una base) por ejemplo compras (ya manejo como manipular bases, lo que pasa que no me imagino como hacerlo desde una tabla de la pagina)
  #9 (permalink)  
Antiguo 27/09/2006, 09:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por jprolando Ver Mensaje
Se ve que agarre otro codigo y era eso (perdon por mi falta de concentracion), pero lo que no puedo lograr es como pasar por la sesion un array que ya viene de otra pagina, el archivo que me genera la seccion y me agrega los productos es select.php (si queres te lo paso)
Si no expones el código que usas es complicado hacerse una idea de lo que quieres hacer. NO sé como generas tu ese "array" en tu "página" (no será script?)

En principio .. como no sé donde lo generas o de donde llega ese "array". En su base sería:

Código PHP:
session_start();
$_SESSION['tu_array'] = $array
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 27/09/2006, 09:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por jprolando Ver Mensaje
que se encuentran en la tabla a una tabla (de una base) por ejemplo compras (ya manejo como manipular bases, lo que pasa que no me imagino como hacerlo desde una tabla de la pagina)
No entendí nada .. por favor, detalla tus consultas, aporta datos sobre el problema, código .. estructura de tus tablas .. en fin; con más antecedentes, mejores serán las respuestas que te podamos dar.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 27/09/2006, 11:24
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
mira el codigo es este te comento lo que quiero hacer en el mismo codigo

el codigo seria este:

Código PHP:
<?php
$id 
= array ( '1''2''3''4''5''6''7''8''9''10'); //array de prueba
$db mysql_pconnect "xxxx""xxxx""xxxx" );
mysql_select_db 'hartley_pruebas1' );

for ( 
$e 0$e count $id ); $e++ )
{
$consulta "SELECT precio, cuotas FROM tblArticulos WHERE id_index = '".$id[$e]."'";
$result mysql_query $consulta );
//estos son los datos que quiero para a una tabla de una base de datos
//los que se cargan en esta tabla
$numeroderesult mysql_num_rows $result ); 
if (
$numeroderesult 0){
  while (
$fila=mysql_fetch_array($result)){ 
      echo 
"ID de artículo: ".$fila['id_index']."<br/>"
      echo 
"Precio de artículo: ".$fila['precio']."<br/>"
      echo 
"Cantidad de cuotas: ".$fila['cuotas']."<p>"
    } 
} else {
   echo 
"No hay resultados";
}  
}
?>
La tabla tiene la misma estructura que los datos (id_index - precio - cantidad y algunos campos mas, pero que no importan porque teniendo la idea de estos ya me manejo como hacerlos para los otros), el nombre es tblcompras
Con respecto a la sesion del array lo pruebo y te comento luego, gracias por los aportes
  #12 (permalink)  
Antiguo 27/09/2006, 11:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Yo insisto que deberías usar IN() como te he comentado ya y así poder usar el código del "while()" como te presento.

Si vas a usar un bucle (for) para ver esos "ID's" que van en elementos en un array entonces no se justifica el uso de "While()" como los ejemplos que te dejé, se supone que bajo "id=$id[$e]" .. sólo obtienes un registro, así que sobra el "while()".

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 27/09/2006, 12:28
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
si en eso estamos de acuerdo, voy a probarlo lo de in

Pero lo que no me doy cuenta esos datos que estan en la pagina en la tabla, como introducirlos en una tabla de la base de datos (deberia utilizar insert hacia la tabla pero no me doy mañas de como hacerlo).
  #14 (permalink)  
Antiguo 27/09/2006, 12:38
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
PUES NO ESTOY MUY SEGURO PERO CREO QUE SERIA ALGO PARECIDO A ESTO:

<?php
$id = array ( '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'); //array de prueba
$db = mysql_pconnect ( "xxxx", "xxxx", "xxxx" );
mysql_select_db ( 'hartley_pruebas1' );

for ( $e = 0; $e < count ( $id ); $e++ )
{
$consulta = "SELECT precio, cuotas FROM tblArticulos WHERE id_index = '".$id[$e]."'";
$result = mysql_query ( $consulta );
//estos son los datos que quiero para a una tabla de una base de datos
//los que se cargan en esta tabla
$numeroderesult = mysql_num_rows ( $result );
if ($numeroderesult > 0)
{
$fila = mysql_fetch_array ( $result ) );
echo "ID de artículo: ".$fila['id_index']."<br/>";
echo "Precio de artículo: ".$fila['precio']."<br/>";
echo "Cantidad de cuotas: ".$fila['cuotas']."<p>";

$datos = "'".$fila['id_index']."','".$fila['precio']."','".$fila['cuotas']."'";
$consulta = "INSERT INTO nombre_de_la_tabla VALUES ( $datos )";
$result = mysql_query ( $consulta );
}
else
{
echo "No hay resultados";
}
}
?>

SUERTE
  #15 (permalink)  
Antiguo 27/09/2006, 13:24
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 8 meses
Puntos: 0
tu sabes que lo probe y no me levanta los datos

pero no te preocupes voy a darle algunas vueltas al codigo para ver y cualquier cosa estamos en contacto, igual muchas gracias por la ayuda, todo va sumando para mejorar,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:13.