problemas con array multidimencional

Iniciado por Zeroql, 30 Junio 2011, 03:13 AM

0 Miembros y 1 Visitante están viendo este tema.

Zeroql

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

CitarNotice: 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 (php) [Seleccionar]

<?php

include ('adm/conexion.php');
$link=conectarse();
mysql_select_db('agsiscom',$link)or die ('Error al seleccionar la Base de Datos '.mysql_error());
$rs=mysql_query("SELECT * FROM items WHERE oferta='Si' AND estado='Disponible' ORDER BY fechaoferta DESC LIMIT 6");
$msg=NULL;
$idx=0;
if (
$rs) {
while ($row=mysql_fetch_assoc($rs)) {
$datos=array(
$idx=>array('cod'=>trim($row['codigo']),
"img"=>trim($row['imgurl']),
   "dc"=>trim($row['descuento']),
   "title"=>trim($row['search']),
   "val"=>trim($row['valor'])
  )
);
$idx++;
}
} else { 
$msg="Actualmente no hay Ofertas de productos."; }

?>



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

Código (php) [Seleccionar]

<? if ($msg!=NULL) { echo $msg; exit(); }?>
<table width="578" height="295" border="0" cellpadding="1">
  <tr>
    <td width="180" style="color:#00F; font-style:italic"><b><? echo $datos[0]['title']; ?></b></td>
    <td width="180" style="color:#00F; font-style:italic"><b><? echo $datos[1]['title']; ?></b></td>
    <td width="180" style="color:#00F; font-style:italic"><b><? echo $datos[2]['title']; ?></b></td>
  </tr>
  <tr>
    <td height="180"><img src="<? echo $datos[0]['img']; ?>" width="180" height="180"></td>
    <td height="180"><img src="<? echo $datos[1]['img']; ?>" width="180" height="180"></td>
    <td height="180"><img src="<? echo $datos[2]['img']; ?>" width="180" height="180"></td>
  </tr>
  <tr>
    <td height="76"><b><font size="-1">
    Codigo: <? echo $datos[0]['cod']; ?><br/>
    Valor $: <? echo $datos[0]['val']; ?><br/>
        Descuento: <? echo $datos[0]['dc']; ?> %<br/></font><font color="#FF0000" style="font-style:oblique">
        Precio $: <? echo ($datos[0]['val']-($datos[0]['val']*($datos[0]['dc']/100))); ?></font></b></td>
    <td  height="76"><b><font size="-1">
    Codigo: <? echo $datos[1]['cod']; ?><br/>
    Valor $: <? echo $datos[1]['val']; ?><br/>
        Descuento: <? echo $datos[1]['dc']; ?> %<br/></font><font color="#FF0000" style="font-style:oblique">
    Precio $: <? echo ($datos[1]['val']-($datos[1]['val']*($datos[1]['dc']/100))); ?></font></b></td>
    <td heigth="76"><b><font size="-1">
    Codigo: <? echo $datos[2]['cod']; ?><br/>
    Valor $: <? echo $datos[2]['val']; ?><br/>
        Descuento: <? echo $datos[2]['dc']; ?> %<br/></font><font color="#FF0000" style="font-style:oblique">
        Precio $: <? echo ($datos[2]['val']-($datos[2]['val']*($datos[2]['dc']/100))); ?></font></b></td>
  </tr>
  <tr>
    <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>
    <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>
    <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>
  </tr>
</table>


por fa colaboracion...
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


cassiani

#1
si no me equivoco, es porque en esta linea:
<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!!

Shell Root

Puedes hacer uso de la función que uso en mis aplicaciones,

Código (php) [Seleccionar]
function connection($host = "127.0.0.1", $db = "dbGoogleMaps", $user = "postgres", $pass = "root"){
/**
* Función para conectar a la base de datos.
*
* @param $host  Servidor.
* @param $db    Base de datos.
* @param $user  Usuario.
* @param $pass  Contraseña.
*
* @Autor Alex Jurado - Shell Root.
**/

try{
$cnn = new PDO("pgsql:host= '$host' port=5432 dbname='$db' user='$user' password='$pass'");
$cnn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
return $cnn;
}catch(PDOException $ex){
print $ex->getMessage();
return NULL;
}
}

function execQuery($sql, $return = TRUE){
/**
* Función para ejecutar una query con o sin
* retorno de datos.
*
* @param $sql     Sentencia SQL para ejecutar.
* @param $return  FALSE: Ejecución directa.
*                 TRUE : Con retorno de datos.
*                 ONE  : Existencia de registro.
*
* @Autor Alex Jurado - Shell Root.
**/

$cnn = connection();
try{
$query = $cnn->query($sql);
}catch(PDOException $ex){
print $ex->getMessage();
return FALSE;
}
if($return){
while ($rows = $query->fetch(PDO::FETCH_ASSOC)){
$dataReturn[] = $rows;
}
return $dataReturn;
}elseif(!$return){
return TRUE;
}elseif($return == "ONE"){
return ($query->fetchColumn())? TRUE : FALSE;
}else{
print "WTF! :D";
return FALSE;
}
}

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Zeroql

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!!!!
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


cassiani

listo, el problema esta en como armas el array, cambia esto:

$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:

$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:
echo '<pre>',print_r($datos),'</pre>';

Nakp

mmmm por que no haces algo como

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


y lo mismo para los otros datos de la sig columna, asi no recorres indices inexistentes
Ojo por ojo, y el mundo acabará ciego.

Zeroql

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?
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


Zeroql

OK implemente el code de Nakp y anda perfecto
gracias a todos por su colaboracion
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#