Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Zeroql en 30 Junio 2011, 03:13 am



Título: problemas con array multidimencional
Publicado por: Zeroql en 30 Junio 2011, 03:13 am
Jejej yo de nuevo molestando por el foro, pero nose que sucede

esta matriz multidimencional funciona bien con 1 valor, cuando ingreso 3 o mas valores solo me imprime el ultimo valor, el resto me los muestra como errores de lineas, aqui un ejemplo de lo que me imprime

Citar
Notice: Undefined offset: 0 in C:\xampp\htdocs\agsiscom\oferts.php on line 46

bueno aqui el code. y no puede ser por la consulta, por k la ejecute en phpmyadmin y me dio perfectamente.

Código
  1. <?php
  2.  
  3. include ('adm/conexion.php');
  4. $link=conectarse();
  5. mysql_select_db('agsiscom',$link)or die ('Error al seleccionar la Base de Datos '.mysql_error());
  6. $rs=mysql_query("SELECT * FROM items WHERE oferta='Si' AND estado='Disponible' ORDER BY fechaoferta DESC LIMIT 6");
  7. $msg=NULL;
  8. $idx=0;
  9. if ($rs) {
  10. while ($row=mysql_fetch_assoc($rs)) {
  11. $datos=array(
  12. $idx=>array('cod'=>trim($row['codigo']),
  13. "img"=>trim($row['imgurl']),
  14.   "dc"=>trim($row['descuento']),
  15.   "title"=>trim($row['search']),
  16.   "val"=>trim($row['valor'])
  17.  )
  18. );
  19. $idx++;
  20. }
  21. } else { $msg="Actualmente no hay Ofertas de productos."; }
  22.  
  23. ?>
  24.  

bueno y aqui el code que uso para imprimirla...

Código
  1. <? if ($msg!=NULL) { echo $msg; exit(); }?>
  2. <table width="578" height="295" border="0" cellpadding="1">
  3.  <tr>
  4.    <td width="180" style="color:#00F; font-style:italic"><b><? echo $datos[0]['title']; ?></b></td>
  5.    <td width="180" style="color:#00F; font-style:italic"><b><? echo $datos[1]['title']; ?></b></td>
  6.    <td width="180" style="color:#00F; font-style:italic"><b><? echo $datos[2]['title']; ?></b></td>
  7.  </tr>
  8.  <tr>
  9.    <td height="180"><img src="<? echo $datos[0]['img']; ?>" width="180" height="180"></td>
  10.    <td height="180"><img src="<? echo $datos[1]['img']; ?>" width="180" height="180"></td>
  11.    <td height="180"><img src="<? echo $datos[2]['img']; ?>" width="180" height="180"></td>
  12.  </tr>
  13.  <tr>
  14.    <td height="76"><b><font size="-1">
  15.     Codigo: <? echo $datos[0]['cod']; ?><br/>
  16.     Valor $: <? echo $datos[0]['val']; ?><br/>
  17.        Descuento: <? echo $datos[0]['dc']; ?> %<br/></font><font color="#FF0000" style="font-style:oblique">
  18.        Precio $: <? echo ($datos[0]['val']-($datos[0]['val']*($datos[0]['dc']/100))); ?></font></b></td>
  19.    <td  height="76"><b><font size="-1">
  20.     Codigo: <? echo $datos[1]['cod']; ?><br/>
  21.     Valor $: <? echo $datos[1]['val']; ?><br/>
  22.        Descuento: <? echo $datos[1]['dc']; ?> %<br/></font><font color="#FF0000" style="font-style:oblique">
  23.     Precio $: <? echo ($datos[1]['val']-($datos[1]['val']*($datos[1]['dc']/100))); ?></font></b></td>
  24.    <td heigth="76"><b><font size="-1">
  25.     Codigo: <? echo $datos[2]['cod']; ?><br/>
  26.     Valor $: <? echo $datos[2]['val']; ?><br/>
  27.        Descuento: <? echo $datos[2]['dc']; ?> %<br/></font><font color="#FF0000" style="font-style:oblique">
  28.        Precio $: <? echo ($datos[2]['val']-($datos[2]['val']*($datos[2]['dc']/100))); ?></font></b></td>
  29.  </tr>
  30.  <tr>
  31.    <td><input type="submit" class="button3" value="Ver mas" style="float:right" onClick="showitem.php?cod='<? echo $datos[0]['codigo']?>'"><hr color="#000099" size="1px"/></td>
  32.    <td><input type="submit" class="button3" value="Ver mas" style="float:right" onClick="showitem.php?cod='<? echo $datos[1]['codigo']?>'"><hr color="#000099" size="1px"/></td>
  33.    <td><input type="submit" class="button3" value="Ver mas" style="float:right" onClick="showitem.php?cod='<? echo $datos[2]['codigo']?>'"><hr color="#000099" size="1px"/></td>
  34.  </tr>
  35. </table>
  36.  

por fa colaboracion...


Título: Re: problemas con array multidimencional
Publicado por: cassiani en 30 Junio 2011, 06:00 am
si no me equivoco, es porque en esta linea:
Código:
<td><input type="submit" class="button3" value="Ver mas" style="float:right" onClick="showitem.php?cod='
<? echo $datos[X]['codigo']?>'"><hr color="#000099" size="1px"/></td>

no existe  $datos[X]['codigo'], cambialo por  $datos[X]['cod'] y avisa como te va.

saludos!!


Título: Re: problemas con array multidimencional
Publicado por: Shell Root en 30 Junio 2011, 06:23 am
Puedes hacer uso de la función que uso en mis aplicaciones,

Código
  1. function connection($host = "127.0.0.1", $db = "dbGoogleMaps", $user = "postgres", $pass = "root"){
  2. /**
  3. * Función para conectar a la base de datos.
  4. *
  5. * @param $host  Servidor.
  6. * @param $db    Base de datos.
  7. * @param $user  Usuario.
  8. * @param $pass  Contraseña.
  9. *
  10. * @Autor Alex Jurado - Shell Root.
  11. **/
  12.  
  13. try{
  14. $cnn = new PDO("pgsql:host= '$host' port=5432 dbname='$db' user='$user' password='$pass'");
  15. $cnn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  16. return $cnn;
  17. }catch(PDOException $ex){
  18. print $ex->getMessage();
  19. return NULL;
  20. }
  21. }
  22.  
  23. function execQuery($sql, $return = TRUE){
  24. /**
  25. * Función para ejecutar una query con o sin
  26. * retorno de datos.
  27. *
  28. * @param $sql     Sentencia SQL para ejecutar.
  29. * @param $return  FALSE: Ejecución directa.
  30. *                 TRUE : Con retorno de datos.
  31. *                 ONE  : Existencia de registro.
  32. *
  33. * @Autor Alex Jurado - Shell Root.
  34. **/
  35.  
  36. $cnn = connection();
  37. try{
  38. $query = $cnn->query($sql);
  39. }catch(PDOException $ex){
  40. print $ex->getMessage();
  41. return FALSE;
  42. }
  43. if($return){
  44. while ($rows = $query->fetch(PDO::FETCH_ASSOC)){
  45. $dataReturn[] = $rows;
  46. }
  47. return $dataReturn;
  48. }elseif(!$return){
  49. return TRUE;
  50. }elseif($return == "ONE"){
  51. return ($query->fetchColumn())? TRUE : FALSE;
  52. }else{
  53. print "WTF! :D";
  54. return FALSE;
  55. }
  56. }


Título: Re: problemas con array multidimencional
Publicado por: Zeroql en 30 Junio 2011, 14:40 pm
Hola que tal a todos!

bueno acabe de arreglar el inconveniente que cassiani me ha dicho, pero el problema no va en eso
va en que la matriz solo me toma el ultimo valor.

no me toma los otros valores
  • y [1] solo me imprime el ultimo!!!

que tengo de malo!!!!


Título: Re: problemas con array multidimencional
Publicado por: cassiani en 30 Junio 2011, 16:12 pm
listo, el problema esta en como armas el array, cambia esto:

Código:
$datos=array(
$idx=>array('cod'=>trim($row['codigo']),
"img"=>trim($row['imgurl']),
  "dc"=>trim($row['descuento']),
  "title"=>trim($row['search']),
  "val"=>trim($row['valor'])
 )
);

por esto:
Código:
$datos[] = array 
(
  'cod' => trim($row['codigo']),
  'img' => trim($row['imgurl']),
  'dc'   => trim($row['descuento']),
  'title'  => trim($row['search']),
  'val'   => trim($row['valor'])
);

y avisa como te va.

siempre puedes verificar el contenido del arreglo usando un:
Código:
echo '<pre>',print_r($datos),'</pre>';


Título: Re: problemas con array multidimencional
Publicado por: Nakp en 30 Junio 2011, 16:45 pm
mmmm por que no haces algo como

Código
  1. <?php
  2. foreach ($datos as $imagen) {
  3. echo '<td height="180"><img src="'.$imagen['img'].'" width="180" height="180"></td>';
  4. } ?>

y lo mismo para los otros datos de la sig columna, asi no recorres indices inexistentes


Título: Re: problemas con array multidimencional
Publicado por: Zeroql en 30 Junio 2011, 23:30 pm
cassiani gracias, la arme asi por que era una matriz multidimencional, pero implemente tu ejercicio y me dio perfectametne.

Nakp voy a implementar tu code, la verdad yo habia pensado en esto pero para todo junto no separado...

igual gracias

les aviso como me fue?


Título: Re: problemas con array multidimencional
Publicado por: Zeroql en 1 Julio 2011, 00:03 am
OK implemente el code de Nakp y anda perfecto
gracias a todos por su colaboracion