Foros del Web » Programando para Internet » PHP »

Mostrar todo el contenido de un array

Estas en el tema de Mostrar todo el contenido de un array en el foro de PHP en Foros del Web. Vereis tengo un problema, el caso es que cuando muestro con un echo el contenido de un array, me lo muestra sin problemas, pero cuando ...
  #1 (permalink)  
Antiguo 16/07/2014, 23:19
 
Fecha de Ingreso: julio-2014
Ubicación: Valencia
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Mostrar todo el contenido de un array

Vereis tengo un problema, el caso es que cuando muestro con un echo el contenido de un array, me lo muestra sin problemas, pero cuando lo uso para ir dibujando la tabla, se me salta los dos primeros indices, y si tengo 10 indices, solo me dibuja 8, empezando por el 2, os muestro el código:

Código:
 
?>
  <div class="box">
           <label class="labtitol">Editor Analitica</label><BR> 
           <div class="listtabl" style="width: 95%">	
               <?php 
		$analiticanum = $_SESSION['consultanal'];
               //con la linea de $conconsulta recuperamos la analitica que queremos consultar
               // ahora recuperamos los datos de la analitica
		$datosAnalitica = mysql_query ("select * FROM datos_analitica where PK_ANALITICAS_FK=$analiticanum");
               //
               
		
              
                // Creamos un array con los elementos de descripcion de la tabla de conceptos y lo almacenamos en typesa
                $analiticasconcep = mysql_query("select DESCRIPCION_CONCEPTOS_ANALITICA FROM conceptos_analitica ");
                $typesa = array();     
                   while(($row2 =  mysql_fetch_assoc($analiticasconcep))) {
                    $typesa[] = $row2['DESCRIPCION_CONCEPTOS_ANALITICA'];
                    //comprobamos que vamos mostrando todos los $row2 correctos en la tabla
                    echo $row2['DESCRIPCION_CONCEPTOS_ANALITICA'];
//EDITO AHORA
 ob_flush();
       flush();
        sleep(0.02);
                   
                    }
                    $listaDatos = mysql_num_rows($datosAnalitica);
               //si la analitica no tiene datos mosrar el aviso  
		if (!$listaDatos){ echo "No hay datos";    } ?>
               <!-- Dibujamos la tabla con el contenido de la misma en un formulario para poder editar todos sus campos-->
                
               <FORM ACTION="/../NewClinica/inserVal/insertanali.php" METHOD=POST>
                <table width="510" border="0" cellspacing="4" cellpadding="4" class="SampleClass"> 
        	<tr><th width="260px">Descripcion</th><th width="8px">Valor</th><th width="12px">Unidades</th><th width="12px">Valor Ref.</th></tr>
                <!-- almacenamos todos los datos de la analitica correspondiente y vamos a pintar la tabla -->
                    <?php   while($tnbestrow2 = mysql_fetch_assoc($datosAnalitica)){ 
                         //almacenamos el indice correspondiente, para mostrar el concepto de $tpyesa según -->
//EDITO Y AÑADO -1
                             $conceptoindice =$tnbestrow2['PK_CONCEPTOS_ANALITICA_FK'] -1 ; 
                            echo "<tr><td>" . $typesa[$conceptoindice] . "</td>"
                        . "<td>" .'<input type="text" name="anvalor[]" size="12"  value=' . $tnbestrow2['VALOR'] . '>'."</td>"
                        . "<td>" .'<input type="text" name="anuni[]" size="12"  value=' .$tnbestrow2['UNIDADES'].'>'."</td>"
                        . "<td>" .'<input type="text" name="anvalorref[]" size="12"  value=' .$tnbestrow2['VALOR REFERENCIA'].'>'."</td></tr>";  //$row['index'] the index here is a field name
		     //. $typesa[($tnbestrow2['PK_CONCEPTOS_ANALITICA_FK'])] .
        }   echo "</table>"; 
        
       
        ?>
                 <INPUT TYPE=SUBMIT VALUE="Actualizar">
            <input type='hidden' name='insertmianal' value="/../NewClinica/consul/consulAnal.php?id=<?php echo $_SESSION['perfil'] ?>" />
         </form>
    
        </div>
           </div>  
                    
            </div>
Básicamente parecido lo tengo con otras tablas y funciona el uso de while y el vector del array, pero con esta que se basa en el array de otra tabla no.

Última edición por mrpacogp; 16/07/2014 a las 23:32
  #2 (permalink)  
Antiguo 16/07/2014, 23:35
 
Fecha de Ingreso: julio-2014
Ubicación: Valencia
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Mostrar todo el contenido de un array

Bueno, pues acabo de editar y creo que tengo la solucion.
En el primer while para almacenar en $tpyesa los conceptos de las analíticas, he usado :
ob_flush();
flush();
sleep(0.02);

Luego, en el indice $conceptoindice =$tnbestrow2['PK_CONCEPTOS_ANALITICA_FK'] -1 ;
añado menos -1 , soy así de burro, para que empieze desde el indice correcto.

Estoy comprobando los resultados obtenidos con la web, con el programa antiguo y estoy recuperando todos los datos correctamente.

Es la forma correcta de hacer las cosas?
  #3 (permalink)  
Antiguo 17/07/2014, 04:00
 
Fecha de Ingreso: julio-2014
Ubicación: Valencia
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Mostrar todo el contenido de un array

Como puedo insertar/actualizar los datos de esa tabla, incluso siendo null los valores?
  #4 (permalink)  
Antiguo 17/07/2014, 11:17
 
Fecha de Ingreso: julio-2014
Ubicación: Valencia
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Mostrar todo el contenido de un array

Ya practicamente lo tengo pero me quedo atascado y no veo el error:

Código PHP:
$updatehiscli mysql_connect ('localhost','user','pass','db');
mysql_select_db ('db') or die ("joder");
    
$conteo =count($anrow);
for(
$i=0$i<$conteo$i++){
          
         
$anrow          =  $_POST['anrow'][$i];     
         
$anvalref       =   $int = (is_numeric($_POST['anvalorref'][$i]) ? (int)$_POST['anvalorref'][$i] : "");
         
$anvaluni       =   $int = (is_numeric($_POST['anuni'][$i]) ? (int)$_POST['anuni'][$i] : "");
         
$anvalor        =   $int = (is_numeric($_POST['anvalor'][$i]) ? (int)$_POST['anvalor'][$i] : "");
         echo 
"Fila: $anrow; Val: $anvalor; ValRef: $anvalref; Uni: $anvaluni<br />\n";
         
mysql_query("UPDATE datos_analitica SET "
        
"VALOR                 = $anvalor,"
        
"'VALOR REFERENCIA'    = $anvalref,"
        
"UNIDADES              = $anvaluni  WHERE PK_DATOS_ANALITICA=$anrow"
        
        or die(
mysql_error());
}
          } 
El error es:
Código PHP:
Fila193809Val3ValRef3Uni3
You have an error in your SQL syntax
check the manual that corresponds to your MySQL server version for the right syntax to use near ''VALOR REFERENCIA' = 3,UNIDADES = 3 WHERE PK_DATOS_ANALITICA=19' at line 1 
Como podéis ver, hago un echo para ver que cojo bien los datos de la primera fila, pero me parece raro: PK_DATOS_ANALITICA=19, cuando debería ser 193809 y ambos usan el mismo valor $anrow[i], tal vez por usarlo una vez?
Pero solo me falta ese detalle.
  #5 (permalink)  
Antiguo 17/07/2014, 11:25
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Mostrar todo el contenido de un array

Código SQL:
Ver original
  1. "'VALOR REFERENCIA'    = $anvalref,"

VALOR_REFERENCIA no debe de llevar comillas simples
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 17/07/2014, 14:02
 
Fecha de Ingreso: julio-2014
Ubicación: Valencia
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Mostrar todo el contenido de un array

Tenía dos fallos:
'VALOR REFERENCIA' -> `VALOR REFERENCIA´
Todo por usar una puta tabla con dos nombres.

Y luego
$int = (is_numeric($_POST['anvalor'][$i]) ? (int)$_POST['anvalor'][$i] : "");
Meter NULL al final
$int = (is_numeric($_POST['anvalor'][$i]) ? (int)$_POST['anvalor'][$i] : "NULL");

Gracias.... :D!

Etiquetas: contenido, formulario, mysql, select, tabla, todo
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 12:02.