Foros del Web » Programando para Internet » PHP »

Undefined index

Estas en el tema de Undefined index en el foro de PHP en Foros del Web. Hola, estoy haciendo un ejercicio de PHP con phpmyadmin, no lo consigo dar de que me muestre el numero de articulos del stock por menor ...
  #1 (permalink)  
Antiguo 24/01/2014, 04:48
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 2 meses
Puntos: 0
Undefined index

Hola, estoy haciendo un ejercicio de PHP con phpmyadmin, no lo consigo dar de que me muestre el numero de articulos del stock por menor o igual a su stock minimo.
El ejercicio es:

A partir de la tabla articulos de la base de datos ventas realiza un script con tres botones para calcular y visualizar:
1. El número de artículos del stock es menor o igual a su stock mínimo.

Y mi script es este:

Código PHP:
<?php 
/*
NOM: 
Ejercicio: a partir de la tabla articulos de la base de datos ventas realiza un script que presente en pantalla tres botones para:
    1- Mostrar el número de artículos cuyo stock es menor o igual a su stock mínimo.
    2- Muestrar un listado ordenado por descripción con los campos código(codart), descripción(descrip) y precio(precio) de los artículos con precio igual     o superior a 100 euros.
    3- Poner a 0 todos los valores NULL del campo stock mínimo (stock_min).
*/
?>

        <form  method='post' action="<?php echo $_SERVER['PHP_SELF'?>">
            <fieldset>
                <legend>Procesos sobre la tabla artículos</legend>
                <p>
                    <input name="proc1" type='submit' value="Procesar" />
                    <label>Número de artículos cuyo stock es menor o igual a su stock mínimo</label>
                </p>
                <p>
                    <input name="proc2" type='submit' value="Procesar" />
                    <label>Listado de los artículos con precio igual o superior a 100 euros.</label>
                </p>
                <p>
                    <input name="proc3" type='submit' value="Procesar" />
                    <label>Inicializar a 0 los campos nulos del stock mínimo.</label>
                </p>                
            </fieldset>
        </form>

<?php
    
// Abrimos la conexión
        
$db mysql_connect('localhost''root''');            // Ajusta estos parámetros según esten definidos en tu base de datos            

    // Seleccionamos la base de datos
        
mysql_select_db('ventas'$db);                                

    
// Proceso para el primer botón 
        
if( isset($_REQUEST['proc1'])) {
        
        
$art=mysql_query("SELECT count(codart) from articulos where stock <= stock_min;",$db);
        while(
$array mysql_fetch_array($art)) 
        {
        echo 
"<tr><td>".$array['codart']."</td><td>";
        }   
            
// Insertar aquí el conjunto de instrucciones para el cálculo del primer proceso

        


    
// Proceso para el segundo botón
        
if( isset($_REQUEST['proc2'])) {                                

            
// Insertar aquí el conjunto de instrucciones para el cálculo del segundo proceso
        
        

 

    
// Proceso para el tercer botón 
        
if( isset($_REQUEST['proc3'])) {
        
            
// Insertar aquí el conjunto de instrucciones para el cálculo del tercer proceso
        
        
}
    

?>
Si veis que tiene 3 botones, es que los otros dos botones es para otros ejercicios.
El error me muestra en el firefox:

Código:
Notice: Undefined index: codart in C:\xampp\htdocs\ejercicios\2st\UT4\Ejercicio 3.php on line 42
Gracias. Saludos.
  #2 (permalink)  
Antiguo 24/01/2014, 05:00
 
Fecha de Ingreso: diciembre-2012
Mensajes: 75
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Undefined index

En principio ese error se produce pq no existe lo que esta en la linea 42 que es si el archivo esta bien copiado es:

Código PHP:
Ver original
  1. $_REQUEST['proc2']

pero si que existe

Código HTML:
Ver original
  1. <input name="proc2" type='submit' value="Procesar" />

Así que probé tu código en mi servidor y funciona perfectamente...
  #3 (permalink)  
Antiguo 24/01/2014, 05:10
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Undefined index

Cita:
Iniciado por roombah Ver Mensaje
En principio ese error se produce pq no existe lo que esta en la linea 42 que es si el archivo esta bien copiado es:

Código PHP:
Ver original
  1. $_REQUEST['proc2']

pero si que existe

Código HTML:
Ver original
  1. <input name="proc2" type='submit' value="Procesar" />

Así que probé tu código en mi servidor y funciona perfectamente...
Hola. es muy raro, que tiene que ver con proc2, cuando el problema es de la falta del indice codart :S. Le has dado al primer boton, y te muestra el numero de articulos?
  #4 (permalink)  
Antiguo 24/01/2014, 05:24
 
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid, España
Mensajes: 7
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Undefined index

Hola el problema esta en que la funcion mysql_fetch_array devuelve un array con la columna 2 veces de la siguiente forma.

array(
[0] => 3,
[count(codart)] => 3
)

tienes 3 opciones para que funcione bien.

1: cambiar el 'codart' por 'count(codart)'
2: cambiar el 'codart' por 0
y 3: la mas bonita, cambiar la consulta.
$art=mysql_query("SELECT count(codart) as codart from articulos where stock <= stock_min;",$db);

Un Saludo.
  #5 (permalink)  
Antiguo 24/01/2014, 05:26
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Undefined index

Estas usando COUNT() para mostrar el resultado pon $array[0] en vez de $array['codart']
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #6 (permalink)  
Antiguo 24/01/2014, 05:34
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Undefined index

Hola moisesacg, muchas gracias, me ha servido mucho tu respuesta, se arregló cogiendo la tercera opcion, si, es mas bonita :) jeje.

xskarx, gracias por tu ayuda, no lo he probado pero seguro que funciona igualmente.

Gracias, roombah por su respuesta.
  #7 (permalink)  
Antiguo 24/01/2014, 05:41
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Undefined index

Perdona, me sale otro error, que no sé porque, en el segundo botón de la pregunta "Listado de los artículos con precio igual o superior a 100 euros."

Y mi script es este:

Código PHP:
<?php 
/*
NOM: 
Ejercicio: a partir de la tabla articulos de la base de datos ventas realiza un script que presente en pantalla tres botones para:
    1- Mostrar el número de artículos cuyo stock es menor o igual a su stock mínimo.
    2- Muestrar un listado ordenado por descripción con los campos código(codart), descripción(descrip) y precio(precio) de los artículos con precio igual     o superior a 100 euros.
    3- Poner a 0 todos los valores NULL del campo stock mínimo (stock_min).
*/
?>

        <form  method='post' action="<?php echo $_SERVER['PHP_SELF'?>">
            <fieldset>
                <legend>Procesos sobre la tabla artículos</legend>
                <p>
                    <input name="proc1" type='submit' value="Procesar" />
                    <label>Número de artículos cuyo stock es menor o igual a su stock mínimo</label>
                </p>
                <p>
                    <input name="proc2" type='submit' value="Procesar" />
                    <label>Listado de los artículos con precio igual o superior a 100 euros.</label>
                </p>
                <p>
                    <input name="proc3" type='submit' value="Procesar" />
                    <label>Inicializar a 0 los campos nulos del stock mínimo.</label>
                </p>                
            </fieldset>
        </form>

<?php
    
// Abrimos la conexión
        
$db mysql_connect('localhost''root''');            // Ajusta estos parámetros según esten definidos en tu base de datos            

    // Seleccionamos la base de datos
        
mysql_select_db('ventas'$db);                                

    
// Proceso para el primer botón 
        
if( isset($_REQUEST['proc1'])) {
        
        
$art=mysql_query("SELECT count(codart) as codart from articulos where stock <= stock_min;",$db);
        while(
$array mysql_fetch_assoc($art)) 
        {
        echo (
"<tr><td>".$array['codart']."</td><td>"); 

        }   
            
// Insertar aquí el conjunto de instrucciones para el cálculo del primer proceso

        


    
// Proceso para el segundo botón    
    
        
if( isset($_REQUEST['proc2'])) {
        
        
$lis=mysql_query("SELECT codart, descrip, precio
            FROM articulos
            WHERE precio >=100
            ORDER BY articulos, descrip ASC"
,$db);
        while(
$array mysql_fetch_assoc($lis)) 
        {
        echo (
"<tr><td>".$array['codart,descrip,precio']."</td><td>"); 

        }  
            
// Insertar aquí el conjunto de instrucciones para el cálculo del segundo proceso
        
        

 

    
// Proceso para el tercer botón 
        
if( isset($_REQUEST['proc3'])) {
        
            
// Insertar aquí el conjunto de instrucciones para el cálculo del tercer proceso
        
        
}
    

?>
El error es el siguiente:

Código:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\ejercicios\2st\UT4\Ejercicio 3.php on line 57
Saludos.
  #8 (permalink)  
Antiguo 24/01/2014, 07:48
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Undefined index

El problema debe estar en la consulta. Ya que el error dice que mysql_fetch_assoc() espera un parametro de tipo resource el cual lo entrega mysql_query() pero esta recibiendo un booleano y mysql_query() devuelve False si se genera un error en la consulta
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #9 (permalink)  
Antiguo 24/01/2014, 10:35
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Undefined index

Gracias, xskarx, y como se arregla esto?
  #10 (permalink)  
Antiguo 24/01/2014, 10:39
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Undefined index

Cita:
Iniciado por sarlyna Ver Mensaje
Gracias, xskarx, y como se arregla esto?
Tu fallo está en esta consulta:

Código PHP:
Ver original
  1. $lis=mysql_query("SELECT codart, descrip, precio
  2.            FROM articulos
  3.            WHERE precio >=100
  4.            ORDER BY articulos, descrip ASC",$db);

Revisa tu tabla articulos, probablemente el campo "articulos" no exista.

¿No será el campo codart por el que quieres ordenar? ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #11 (permalink)  
Antiguo 24/01/2014, 11:04
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Undefined index

Cita:
Iniciado por Eleazan Ver Mensaje
Tu fallo está en esta consulta:

Código PHP:
Ver original
  1. $lis=mysql_query("SELECT codart, descrip, precio
  2.            FROM articulos
  3.            WHERE precio >=100
  4.            ORDER BY articulos, descrip ASC",$db);

Revisa tu tabla articulos, probablemente el campo "articulos" no exista.

¿No será el campo codart por el que quieres ordenar? ;)
Gracias eleazan, ahora lo miro... y la tabla articulos esta bien escrito, por que crees que funciona el primer boton? pues me furula el primer boton... mira, aqui la captura de la tabla en phpmyadmin:



Sobre la ordenacion, creo que no es el codart que queria ordenar, porque la pregunta es esta:

Mostrar un listado ordenado por descripción con los campos código(codart), descripción(descrip) y precio(precio) de los artículos con precio igual o superior a 100 euros.

Pone ordenado por descripcion..

Saludos
  #12 (permalink)  
Antiguo 24/01/2014, 12:02
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Undefined index

Bueno, sigo diciendo lo mismo...


De todas formas, te recuerdo que la sintaxis del order by de mysql es:
Código SQL:
Ver original
  1. ORDER BY <campo> [ASC|DESC] [,<campo> [ASC|DESC]]

Revisa esa cláusula, vuelve a leer mi post anterior... ¡y encontrarás la causa! ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #13 (permalink)  
Antiguo 24/01/2014, 12:44
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Undefined index

Si, eleazan, gracias, el problema era de sql, se ha arreglado con el codigo:

$lis=mysql_query("Select codart, descrip, precio
from articulos
where precio >=100
order by descrip",$db);

Antes era order by articulos, articulos no es un campo si no una tabla por eso salio ese error.

Ahora estoy con el tercer boton, intento poner un 0 de todos los valores del stock minimo, aun no lo logro, el script es el siguiente:
Código PHP:
    // Proceso para el tercer botón 
        
if( isset($_REQUEST['proc3'])) {
        
$nulo=mysql_query("select codart, descrip, precio, stock, stock_min from articulos where stock_min is null",$db);
        while(
$array mysql_fetch_assoc($nulo)) 
        {
       echo 
"<table border=1><tr><td>".$array['codart']."</td><td>".$array['descrip']."</td><td>".$array['precio']."</td><td>".$array['stock']."</td><td>".$array['stock_min']."</td></tr></table>"

        }  
            
// Insertar aquí el conjunto de instrucciones para el cálculo del tercer proceso
        
        

  #14 (permalink)  
Antiguo 24/01/2014, 14:08
 
Fecha de Ingreso: enero-2014
Mensajes: 75
Antigüedad: 10 años, 3 meses
Puntos: 11
Respuesta: Undefined index

Pero bueno, sabes hacer debug de codigo? porque me parece que no sabes hacerlo.

Tienes que aprender a debuggear para programar, no se puede programar sin saber hacer un debug del codigo.

Por otro lado, lo que quieres hacer con el boton es con una consulta update usando un where que tenga la condicion de que filas quieres cambiar.

Saludos.

Etiquetas: index, mysql, select, sql, tabla, undefined
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 03:11.