Foros del Web » Programando para Internet » PHP »

Tipo de datos en array

Estas en el tema de Tipo de datos en array en el foro de PHP en Foros del Web. Hola nuevamente: Estoy extrayendo desde mi BD en MySQL, desde una tabla extraigo un campo que es del tipo "Float" y de otra tabla extraigo ...
  #1 (permalink)  
Antiguo 12/11/2003, 22:14
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
Tipo de datos en array

Hola nuevamente:

Estoy extrayendo desde mi BD en MySQL, desde una tabla extraigo un campo que es del tipo "Float" y de otra tabla extraigo un campo que es del tipo "Int".
Luego, con esos dos valores, hago una multiplicacion y su resultado deseo almacenarlo en un arreglo.
Todo esto esta dentro de un ciclo while que recorre las tablas. El arreglo lo genero asi
Código PHP:
$array_sus_notas[]=0
supongo que queda vacio.
Luego, una vez echa la multiplicacion, entrego los valores al arreglo
Código PHP:
$cont_sus_notas=0;
while(
$row=mysql_fetch_array($consulta))
{
$su_nota=((mysql_result($consulta,0,"nota"))*((mysql_result($consulta,0,"ponderacion"))
$array_sus_notas[$cont_sus_notas]=$su_nota;//Linea 146
$cont_sus_notas=$cont_sus_notas +1;

pero cuando ejecuto todo me arroja el sgte error :
[PHP]
Warning: Cannot use a scalar value as an array in /var/www/https/evcdesarrollo/evaluaciones/ver_todas.php on line 146
[PHP]

Supongo que tengo que definir antes el arreglo para que pueda almacenar otro tipo de datos, ya que el resultado de la multiplicacion puede ser un valor no entero (por ejemplo 50,65)

O es otro el problema ?

Gracias y Salu2
__________________
AK.T.I.V.E.tm Live, Never DIE
  #2 (permalink)  
Antiguo 12/11/2003, 23:17
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Hay un par de cosas que veo en tu código:

Primero: Si ya está utilizando mysql_fetch_array(), entonces ya no utilices mysql_result()...

Segundo: No es necesario ese contador, basta con poner los corchetes vacíos.. y así el array "autoincrementa" sus índices.

Tu code debería ser así:
Código PHP:
while($row=mysql_fetch_array($consulta))
{
   
$su_nota=($row["nota"] * $row["ponderacion"]);
   
$array_sus_notas[]=$su_nota;

Así... sin inicializar el array, ni el contador... prueba y nos cuentas.

Saludos

Última edición por jpinedo; 12/11/2003 a las 23:19
  #3 (permalink)  
Antiguo 13/11/2003, 03:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Se te olvido el ; al final de la linea 145. Y estabas utilizando mal el mysql_result(), ya que siempre estabas cogiendo los valores del primer registro (el 0 es el numero de registro).

Usa el codigo de jpinedo, es mas claro.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 13/11/2003, 05:57
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
Resulta que, haciendo todas las modificaciones, igual me envia el warning.
Yo creo que el problema esta en la definicion del array, o se le puede entregar cualquier tipo de dato (char, date, float, int, etc) en cualquier momento sin tener que definir previamente el array ?



Salu2
__________________
AK.T.I.V.E.tm Live, Never DIE
  #5 (permalink)  
Antiguo 13/11/2003, 06:10
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Mira, ese error he conseguido que me de con:
Código PHP:
$pp=0;
$pp[2]=4
Es decir, porque asigne a la variable un valor "escalar" (un numero). Revisa todas las asignaciones que haces a $array_sus_notas. Si tienes alguna tipo $array_sus_notas=123, entonces ese es el fallo.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 13/11/2003, 06:42
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
Disculpa, pero no te entiendo muy bien a lo que te refieres. Supongo que es a la cantidad de numeros que tendra en cada posicion, o no?

Gracias

salu2
__________________
AK.T.I.V.E.tm Live, Never DIE
  #7 (permalink)  
Antiguo 13/11/2003, 06:51
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
No. Me refiero a que revises si has asignado un numero a la variable sin los corchetes, transformando el array en un numero normal. Mira que no se te haya olvidado [] en ningun sitio.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 13/11/2003, 07:59
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
El asunto es el sgte: Tengo una lista de alumnos, y por cada alumno guardo su nota en un arreglo y las voy imprimiendo.
Tenia un $array_sus_notas[]=0; para limpiar el arreglo por cada alumno, pero parece que no se hace asi.

Ahora me arroja otro Warning

Warning: Wrong parameter count for mysql_query() in /var/www/https/evcdesarrollo/evaluaciones/ver_todas.php on line 112

Aca esta el codigo
Código PHP:
$consultar_evaluaciones=mysql_query("select id_eval,id_curso from evaluaciones where id_curso='".$curso."'");
$contar_evaluaciones=mysql_num_rows($consultar_evaluaciones);
$buscar_user=mysql_query("select courses,users,admin from wp where users='".$user."' AND courses='".$curso."'AND admin=1;"); 
if (mysql_num_rows($buscar_user)>0)
{ //es admin del curso
    while ($row=mysql_fetch_array($listado_general))
    {   
        $validar=0;
        $id_usuario=$row["id"];?>
        <tr>
        <? $cont_sus_notas=0;
           
$buscar_alum=mysql_query("select id,firstname,surname from users where id='".$id_usuario."'");
        for(
$i=0;$i<$contar_evaluaciones;$i++)
        {
        
$sumar=0;
        
$buscar_notas=mysql_query("select * from notas,evaluaciones where notas.id_alum='".$id_usuario."' 
        and notas.id_eval='"
.$id_evals[$i]."' and evaluaciones.id_eval='".$id_evals[$i]."'");
        if(
mysql_num_rows($buscar_notas)>0)
        {  
            
                if (
$validar==0)
                { 
?> 
                    <td class="contenido" align="center"><div align="center"><? echo mysql_result($buscar_alum,0,"surname")." ";echo mysql_result($buscar_alum,0,"firstname"); $validar=1; echo "</div>";echo "</td>";
                } 
                
$nota=mysql_query($buscar_notas,0,"nota");//Linea 112
                
$su_nota=(mysql_result($buscar_notas,0,"nota"))*(mysql_result($buscar_notas,0,"ponderacion"));
                
$cont_sus_notas=$cont_sus_notas+1;
                
$array_sus_notas[$cont_sus_notas]=$su_nota;?>
                <td class="contenido" align="center"><div align="center"><? echo $su_nota;?></div></td> 
     <? }
        else
        { 
?>
        
  <td align="center" class="contenido">pend</td>
     <? }
    }
    
    
    for(
$k=0;$k<$contar_evaluaciones;$k++){
            
$sumar=$array_sus_notas[$k]+$sumar;}?>
    <td class="contenido" align="center"><? echo $sumar;?></td>
  </tr>
<? }
}
Ojala sepan cual es el problema

Salu2
__________________
AK.T.I.V.E.tm Live, Never DIE
  #9 (permalink)  
Antiguo 13/11/2003, 08:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Ese error es porque creo que querias poner mysql_result(), no mysql_query().

¿No usas en ningun otro sitio $array_sus_notas? Porque hay parece todo correcto.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 13/11/2003, 09:36
 
Fecha de Ingreso: julio-2002
Ubicación: Rancagua - Chile
Mensajes: 494
Antigüedad: 21 años, 9 meses
Puntos: 0
Tienes razon, era eso.

Solo utilizo el array en este archivo .php

Gracias por toda su valiosa ayuda.

Salu2
__________________
AK.T.I.V.E.tm Live, Never DIE
  #11 (permalink)  
Antiguo 20/04/2007, 09:22
 
Fecha de Ingreso: abril-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Re: Tipo de datos en array

El Problema se sucita porque en ciertas versiones de PHP4 es necesario declarar el arreglo formalmente.

En mi caso esta linea provocaba error:

$_SESSION["securityManager"]["timestamp"] = time();

Para solucionarlo:


if(!is_array($_SESSION["securityManager"]))
$_SESSION["securityManager"] = Array();

$_SESSION["securityManager"]["timestamp"] = time();
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 01:29.