Foros del Web » Programando para Internet » PHP »

Que falta para k funcione Where In

Estas en el tema de Que falta para k funcione Where In en el foro de PHP en Foros del Web. Hola amigos estoy ya varios dias de encontrar cual es la solucion para este codigo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código php: Ver original <!-- $arrId = implode ...

  #1 (permalink)  
Antiguo 24/11/2008, 16:29
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Pregunta Que falta para k funcione Where In

Hola amigos estoy ya varios dias de encontrar cual es la solucion para este codigo:
Código php:
Ver original
  1. <!-- $arrId=implode(", ",$_POST["id"]);
  2. $qry=mysql_query("SELECT precio FROM catalogo WHERE id IN(".$arrId.")");
  3. while($row=mysql_fetch_array($qry))
  4. {
  5.     foreach($cantidad as $clave => $valor)
  6.     {
  7.     $carro[md5($id[$clave])]=array (
  8.         'identificador'=>md5($id[$clave]),
  9.         'id'=>$id[$clave],
  10.         'cantidad'=>$valor,
  11.         'precio' => $row['precio']       /////AQUI ME CREA EN EL ARRAY CARRO PARA TODOS LOS PRODUCTOS EL MISMO PRECIO (55.00)
  12.     );
  13.     }
  14. }-->
pero el problema esta en que me ingresa al array el primer precio de cualquier listado que forme, x ejm:
id producto precio
-------------------------
01 producto 1 55.00 /////me crea el array solo con este precio
02 producto 2 10.00
03 producto 3 20.00
04 producto 4 30.00
05 producto 5 40.00

Agradesco sus colaboraciones
  #2 (permalink)  
Antiguo 24/11/2008, 17:38
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Por favor si podrian orientarme que es lo que esta pasando en este codigo, repito que en el array carro me estan generando items de los productos pero todos estos con el mismo precio (PARA EL EJEMPLO TODOS TIENEN 55.00 u.m.)...
en alguna parte esta mal el codigo??????????...gracias
  #3 (permalink)  
Antiguo 24/11/2008, 18:16
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Por favor si podrian orientarme...gracias
  #4 (permalink)  
Antiguo 24/11/2008, 18:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Que falta para k funcione Where In

es obvio, ya que estas recorriendo $cantidad N veces ... y esas N veces, usas el mismo $row['precio']

te sugiero, uses print_r para debuggear todos tus arrays ... con esa info. haces tu analisis, y en base a ese analisis el diseño de tu codigo

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/11/2008, 18:23
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Gracias por la respuesta, intentare analizarlo y ayudarme con el print_r...espero me puedan ayudar ...gracias otra vez
  #6 (permalink)  
Antiguo 25/11/2008, 07:09
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Buen dia amigos, yo sigo con esto espero me puedan ayudar y finalizarlo...

bien en lo referente a la sugerencia lineas arriba, una consultita : esas N veces, usas el mismo $row['precio']...doy vueltas y vueltas y no la atino asi k preguntare y como hago que al recorrer $cantidad N veces esas N veces use diferentes $row['precio']?
Gracias de antemano
  #7 (permalink)  
Antiguo 25/11/2008, 08:14
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

A ver:
Código php:
Ver original
  1. <!-- while($row=mysql_fetch_array($qry))
  2. {
  3. print_r($row);-->

y esto es el print_r:
Array ( [0] => 155.00 [precio] => 155.00 ) Array ( [0] => 50.00 [precio] => 50.00 )

ojo k el print_r($arrId) es: 03502, 04900 //precio p' 03502=155.00 y p' 04900=50.00

Agradesco de antemano lo que me puedan brindar.
  #8 (permalink)  
Antiguo 25/11/2008, 08:31
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Que falta para k funcione Where In

2 preguntas.. cual es la salida de la consulta.. y $cantidad que tipo de informacion contiene.. ???
  #9 (permalink)  
Antiguo 25/11/2008, 08:40
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Gracias erlingfiallos por tu respuesta,
bien a tus preguntas:
1. con while:
Array ( [0] => 55.00 [precio] => 55.00 ) Array ( [0] => 50.00 [precio] => 50.00 )
sin while:
Array ( [0] => 55.00 [precio] => 55.00 )
2. la variable cantidad son las cantidades k el usuario a digitado para solicitar sus productos

Gracias otra vez por la respuesta k me puedas brindar...
  #10 (permalink)  
Antiguo 25/11/2008, 08:41
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Disculpe obvie...En la respuesta del numeral 1 la consulta es a print_r($row)
  #11 (permalink)  
Antiguo 25/11/2008, 09:39
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Que falta para k funcione Where In

me refiero a que quiero conocer la salida que tiene $cantidad y luego el query (SELECT precio FROM catalogo WHERE id IN(".$arrId.")")

me dices que son las cantidades digitadas.. pero quisiera ver la estructura del arreglo.. para entender mejor y poder ayudarte

y luego puedes imprimir el resultado del SELECT precio FROM catalogo WHERE id IN(".$arrId.")" y llevarlo a phpMyAdmin para ver que resultado tiene..
  #12 (permalink)  
Antiguo 25/11/2008, 10:58
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Bien a lo solicitado,
1. esto imprime la variable cantidad:
Array ( [0] => 40 [1] => 60 )
2. luego puedes imprimir el resultado del SELECT precio FROM catalogo WHERE id IN(".$arrId.")" y llevarlo a phpMyAdmin para ver que resultado tiene?...esto no entiendo

Gracias
  #13 (permalink)  
Antiguo 25/11/2008, 11:12
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Quizas pueda servir esto:
1. el array se forma recogiendo las cantidades digitadas por el usuario:
Código php:
Ver original
  1. <!-- $cantidad=$_POST["cantidad"];-->

2. el print del resultado del select es $qry, tonces el print en pantalla:
Resource id #8...disculpa si esto no es lo k pedias

Gracias de antemano
  #14 (permalink)  
Antiguo 25/11/2008, 11:15
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Que falta para k funcione Where In

Sii.. quiero que me digas cual es el resultado de esa consulta.. si la consulta la escribes en phpMyAdmin.. aparece el resultado.. eso es lo que pido.. y tambien.. que es $id.. que hace.. de donde sale..
  #15 (permalink)  
Antiguo 25/11/2008, 11:24
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Bien al respecto:
1. en phpMyAdmin al realizar la consulta esto es lo k sale:
- Su query-SQL ha sido ejecutado con exito
- SQL-query :
SELECT precio FROM catalogo WHERE id IN(".$arrId.") LIMIT 0, 30
//esto es lo diferente en la ventana cuando inicie
2. $id son los codigos de los productos que digito el usuario (respectivamente)
y sale de esto:
Código php:
Ver original
  1. <!-- $id=$_POST["id"];-->

Espero sea esto??
  #16 (permalink)  
Antiguo 25/11/2008, 11:38
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

-Y este es el print de $id:
Array ( [0] => 03502 [1] => 04900 )

-Ademas esto imprime $cantidad:
Array ( [0] => 40 [1] => 60 )

ojo k la clave de $cantidad siempre es igual a la clave de $id.
  #17 (permalink)  
Antiguo 25/11/2008, 12:50
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Que falta para k funcione Where In

Podrias explicar un poco mejor que haces con el while y el foreach.. porque no comprendo bien para que los utilizas
  #18 (permalink)  
Antiguo 25/11/2008, 13:10
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Bien tengo la tabla catalogo:
id producto precio
----------------------------
00100 producto 1 10.00
00200 producto 2 20.00
00300 producto 3 30.00
00400 producto 4 40.00
03502 producto x 155.00
00500 producto 5 50.00
04900 producto y 50.00

ahora el codigo sirve para agregar al array carro ($carro) el precio para cada producto (de clave primaria id):

//////////$carro/////////////
id precio cantidad digitada
-----------------------------------------
03502 155.00 40
04900 50.00 60

Gracias
  #19 (permalink)  
Antiguo 25/11/2008, 13:19
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Que falta para k funcione Where In

Es que me esta costando entender que tienes y que necesitas.. pero pasa lo siguiente.. tu dices que el valor del precio se repite para todas.. pero se repite porque se estan sobreescribiendo los valores del arreglo.. puedes hacer una prueba haciendo lo siguiente..

Reemplaza esto
Código PHP:
$carro[md5($id[$clave])]=array (...) 
por esto
Código PHP:
$carro[]=array (...) 
  #20 (permalink)  
Antiguo 25/11/2008, 13:38
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Lo modificado sale una pagina en blanco.

A ver te menciono k tengo un php vercarrito.php

Código php:
Ver original
  1. <!-- <form name="" method="post" action="agregacarrito2.php" id=">
  2.    <tr>
  3.       <td align="center"><?php echo $v['id'] ?></td>
  4.     <?php
  5.     $qry2=mysql_query("select medicamento,presentacion,concentracion,formaFarmaceutica,precio from catalogo where id='".$v['id']."'");
  6.     if($row2=mysql_fetch_assoc($qry2))
  7.     {
  8.     ?>
  9.       <td><?php echo $row2['medicamento'] ?></td>
  10.       <td align="center"><?php echo $row2['presentacion'] ?></td>
  11.       <td align="center"><?php echo $row2['concentracion'] ?></td>
  12.       <td align="center"><?php echo $row2['formaFarmaceutica'] ?></td>
  13.       <td align="right"><?php echo $row2['precio'] ?></td>
  14.       <td align="center">
  15.         <input type="text" name="cantidad[]" id="cantidad" value="<?php echo $v['cantidad'] ?>">
  16.         <input name="id[]" type="hidden" id="id" value="<?php echo $v['id'] ?>"></td>
  17.     <?php
  18.     }
  19.     ?>
  20.    </tr>
  21.   <?php }?>
  22. </table>
  23. <table width="80%" align="center" cellpadding="5" cellspacing="2" border="0">
  24.   <tr valign="middle">
  25.     <td align="center"><input type="submit" name="input_submit" value="Borrar"></td>
  26.     <td align="center"><input type="submit" name="input_submit" value="Actualizar"></td>
  27.   </tr>
  28. </table>
  29. </form>-->

y envia los $id y $cantidad al php agregacarrito2.php para generar el array carro($carro)

Espero esto sirva
  #21 (permalink)  
Antiguo 25/11/2008, 13:51
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Que falta para k funcione Where In

No puede ser que no obtengas respuesta.. si le quitas la clave a $carro[...] se agregar los valores bien a ese arreglo.. y ahi es donde te das cuenta de que estas reescribiendo informacion.

Código PHP:
while($row mysql_fetch_array($queryMYSQL_ASSOC)) {
    foreach (
$cantidad as $clave => $valor) {
        
$carro[] = array (
            
'identificador'=>md5($id[$clave]),
            
'id'=>$id[$clave],
            
'cantidad'=>$valor,
            
'precio' => $row['precio']
        );
    }
}
    
echo 
"<pre>";
print_r($carro);
echo 
"</pre>"
  #22 (permalink)  
Antiguo 25/11/2008, 14:34
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Segun el print, se visualiza k se esta triplicando el listado al modificar en:
$carro[]=array (...)
  #23 (permalink)  
Antiguo 25/11/2008, 18:06
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Disculpen por si las molestias puedo ocasionar...pero para esto si k se necesita conocimientos un poco avanzados por k de veras k no la doy...

he intentado modificarlo el codigo original pero veo k me estoy enredando yo mismo , asi k acudo a uds por favor me puedan ayudar...gracias
  #24 (permalink)  
Antiguo 25/11/2008, 18:26
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Que falta para k funcione Where In

Cuando vas a poner las cantidades $carro ya existe ?
  #25 (permalink)  
Antiguo 25/11/2008, 18:31
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Que falta para k funcione Where In

y porque $cantidad y $id son arreglos.. ??
  #26 (permalink)  
Antiguo 25/11/2008, 18:38
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Oka erlingfiallos,
1. esto es cuando se genera al inicio el array carro ($carro)...solo se selecciono 2 productos para el ejemplo (ojo k aqui no hay digitacion de cantidades):
Código php:
Ver original
  1. <!-- Array ( [18c8f62754ea20dcdc9ee292db1b46fd] => Array (
  2.        [identificador] => 18c8f62754ea20dcdc9ee292db1b46fd
  3.        [id] => 03502
  4.        [cantidad] => )
  5. [d94e65339cd57f39391de2391cd9d0be] => Array (
  6.         [identificador] => d94e65339cd57f39391de2391cd9d0be
  7.         [id] => 04900
  8.         [cantidad] => )
  9. ) -->


2. el usuario digito 40 y 60 en las cantidades solicitadas para los productos de codigo(03502 y 04900 respectivamente)...
Código php:
Ver original
  1. <!-- Array ( [18c8f62754ea20dcdc9ee292db1b46fd] => Array (
  2.              [identificador] => 18c8f62754ea20dcdc9ee292db1b46fd
  3.              [id] => 03502 [cantidad] =>
  4. )
  5. [d94e65339cd57f39391de2391cd9d0be] => Array (
  6.              [identificador] => d94e65339cd57f39391de2391cd9d0be
  7.              [id] => 04900
  8.              [cantidad] =>
  9. )
  10. [0] => Array (
  11.              [identificador] => 18c8f62754ea20dcdc9ee292db1b46fd
  12.              [id] => 03502
  13.              [cantidad] => 40
  14.              [precio] => 55.00
  15. )
  16. [1] => Array (
  17.              [identificador] => 18c8f62754ea20dcdc9ee292db1b46fd
  18.              [id] => 03502
  19.              [cantidad] => 40
  20.              [precio] => 50.00 )
  21. ) -->
  #27 (permalink)  
Antiguo 25/11/2008, 18:40
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

No visualize este ultimo msj tuyo, pero ahi va la rpta que postee lineas arriba:

-Y este es el print de $id:
Array ( [0] => 03502 [1] => 04900 )

-Ademas esto imprime $cantidad:
Array ( [0] => 40 [1] => 60 )

ojo k la clave de $cantidad siempre es igual a la clave de $id.
  #28 (permalink)  
Antiguo 25/11/2008, 18:57
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Ojo erlingfiallos, que el print es como me mencionastes:

Reemplaza esto

Código PHP:
$carro[md5($id[$clave])]=array (...)

por esto

Código PHP:
$carro[]=array (...)
  #29 (permalink)  
Antiguo 25/11/2008, 19:17
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Que falta para k funcione Where In

vamos por el ultimo intento del dia.. ya nos tardamos demasiado en esto.. entonces cambiaremos algunas cosas.. entre las modificaciones agregaras una variable que he llamado $arr.. ahi se almacenaran los resultados de la consulta..

Pero creo que me tardo mucho en explicar.. mejor copy+paste y ve como funciona.. no me gusta mucho como se ve el codigo.. pero esta funcional.. esta un poco rara tu implementacion de carrito de compras.. pero bueno.. a probar y luego me dices como te fue..

Código PHP:
$qry=mysql_query("SELECT id, precio FROM catalogo WHERE id IN(".$arrId.")");
$arr = array();
while (
$row mysql_fetch_array($qryMYSQL_ASSOC)) {
        
array_push($arr, array($row['id'] => $row['precio']));
}

for (
$i=0$i<count($id); $i++) {
    
$carro[md5($id[$i])] = array (
        
'identificador'=>md5($id[$i]),
        
'id'=>$id[$i],
        
'cantidad'=>$cantidad[$i],
        
'precio' => $arr[$i][$id[$i]]
    );
}
    
echo 
"<pre>";
print_r($carro);
echo 
"</pre>"
  #30 (permalink)  
Antiguo 25/11/2008, 19:35
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Que falta para k funcione Where In

Funciona erlingfiallos, estare revisando el codigo y muchas gracias por las molestias ... y como dices creo k ya por hoy esta bueno
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 11:58.