Foros del Web » Programando para Internet » PHP »

Problema con Notice: Undefined offset

Estas en el tema de Problema con Notice: Undefined offset en el foro de PHP en Foros del Web. Tengo un pequeño problema y no veo la solución :S Este es el código: Código PHP:      /**     * Método de búsqueda general.      *     * @ array        $search     *         [0] - Campo donde buscar    (Asociado al Where)     *         [1] - Valor aplicado al WHERE del campo     *         [2] - Order by    (Optional)     *             [2]["campo"]     - Nombre del Campo por el que será ordenado ...
  #1 (permalink)  
Antiguo 17/06/2012, 10:40
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Problema con Notice: Undefined offset

Tengo un pequeño problema y no veo la solución :S

Este es el código:

Código PHP:
    /**
    * Método de búsqueda general. 
    *
    * @ array        $search
    *         [0] - Campo donde buscar    (Asociado al Where)
    *         [1] - Valor aplicado al WHERE del campo
    *         [2] - Order by    (Optional)
    *             [2]["campo"]     - Nombre del Campo por el que será ordenado
    *             [2]["ascordesc"]- Orden ascendente o descendente
    *         [3] - Limit    (Optional)
    *             [3]["limit_start"]
    *             [3]["limit_end"]
    * @ return     mysql array
    */
    
public function showAllStock($search){
    
$this->field     $search[0];
    
$this->value     $search[1];
    
    
$this->orderby    $search[2];
        
$this->order_field     $this->orderby["campo"];
        
$this->order_kind     $this->orderby["ascordesc"];
    
    
$this->limit    $search[3];
        
$this->limit_start     $this->limit["start"];
        
$this->limit_end     $this->limit["end"];
        
    
$this->sentencia "SELECT * FROM stock";
    
$this->sentencia .= (isset($this->field$this->value)) ? " WHERE " $this->field " = " $this->value "";
    
$this->sentencia .= (isset($this->orderby) && is_array($this->orderby)) ? " ORDER BY " .  $this->order_field " " $this->order_kind  $this->orderby "";
    
$this->sentencia .= (!empty($this->limit)) ? " LIMIT " $this->limit_start ", " $this->limit_end $this->limit ""
    
    return 
mysql_query($this->sentencia);
    
//return $this->sentencia;
    
    

Error:

Notice: Undefined offset: 3 in /var/www/Proyecto-FP2/funciones.php on line 685

Y la línea 685 es:
Código PHP:
$this->orderby    $search[2]; 
Tengo otro método que llama a este y es el que utilizo en ese momento del error.
El método es el siguiente:

Código PHP:
    public function stockWithoutLocation(){
    
$search = array("nLocation"0, array("campo" => "nID""ascordesc" => "DESC"));
    return 
$this->showAllStock($search);
    } 
Alguna sugerencia de lo que puede estar pasando?

Gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #2 (permalink)  
Antiguo 17/06/2012, 10:56
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con Notice: Undefined offset

He visto que el problema es que cuando pongo la sentencia y por ejemplo la parte asociada al limit no la especifico, es decir, si pongo esto:

Código PHP:
Ver original
  1. $search = array("nLocation", 0, array("campo" => "nID", "ascordesc" => "DESC"), array("start" => "", "end" => ""));
  2.     return $this->showAllStock($search);

El error no sale, pero si omito

Código PHP:
Ver original
  1. array("start" => "", "end" => "")

Sale el error ese, bueno, el aviso. Hay alguna forma de hacer que no tenga en cuenta esa parte si no se introduce ningún valor?

Gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #3 (permalink)  
Antiguo 17/06/2012, 11:19
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 15 años, 7 meses
Puntos: 31
Respuesta: Problema con Notice: Undefined offset

inténtalo con isset()

Código PHP:
$this->orderby    = isset($search[2]) ? $search[2] : ""
__________________
╬-----╬
║☺₧☻║
╬-----╬
  #4 (permalink)  
Antiguo 17/06/2012, 11:28
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con Notice: Undefined offset

Cita:
Iniciado por thezzin Ver Mensaje
inténtalo con isset()

Código PHP:
$this->orderby    = isset($search[2]) ? $search[2] : ""
Antes de preguntás probé el isset y no funciona :( porque si lo pongo entiende que el array no ha sido definido y salta el aviso

Gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #5 (permalink)  
Antiguo 17/06/2012, 11:31
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 15 años, 7 meses
Puntos: 31
Respuesta: Problema con Notice: Undefined offset

pero que te da error or no hace nada
__________________
╬-----╬
║☺₧☻║
╬-----╬
  #6 (permalink)  
Antiguo 17/06/2012, 11:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con Notice: Undefined offset

Jask:

No puedo creer que siendo tan evidente no lo veas.

Cita:
Notice: Undefined offset: 3 in /var/www/Proyecto-FP2/funciones.php on line 685
OK, tu dices que la linea es:
Código PHP:
$this->orderby    $search[2]; 
Pero yo no lo creo, porque ahí el índice (offset) empleado es el 2, y no el 3 como dice el error.

¿Donde está el índice 3?
Código PHP:
$this->limit    = isset($search[3]) ? $search[3] : ''
Me pregunto si será por eso.

PDTA: a veces hace falta un poquito de sentido común para entender lo que se ve.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 17/06/2012, 11:46
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con Notice: Undefined offset

Cita:
Iniciado por pateketrueke Ver Mensaje
Jask:

No puedo creer que siendo tan evidente no lo veas.



OK, tu dices que la linea es:
Código PHP:
$this->orderby    $search[2]; 
Pero yo no lo creo, porque ahí el índice (offset) empleado es el 2, y no el 3 como dice el error.

¿Donde está el índice 3?
Código PHP:
$this->limit    = isset($search[3]) ? $search[3] : ''
Me pregunto si será por eso.

PDTA: a veces hace falta un poquito de sentido común para entender lo que se ve.
Si, a ver, me expliqué un poco mal. Yo lo que quiero es que si no pongo ese índice (el 3) aún así salgan los valores y no lo tenga en cuenta porque ese método lo puedo usar para muchas cosas y en muchas ocasiones no necesito usar el LIMIT

Gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #8 (permalink)  
Antiguo 17/06/2012, 11:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con Notice: Undefined offset

¿Puedes explicarlo con seudo-código?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 17/06/2012, 13:39
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con Notice: Undefined offset

MM lo intentaré jeje

Veamos, tengo una función a la cual le paso X nº de parámetros, algunos opcionales y otros obligatorios. Si yo quiero que cuando no paso nada a los opcionales no los tenga en cuenta.. como podría hacer?

los dos primeros argumentos (a continuación) son obligatorios) el tercero no
Código PHP:
Ver original
  1. $arg = array("primero", "segundo");
  2.  
  3. function muestratodo($arg){
  4.  if(isset($arg[0])){ echo "Devuelve valor; }
  5. if(isset($arg[1])){ echo "Devuelve el segundo valor; }
  6.  if(isset($arg[2])){ echo "Da un resultado"; }else{ "Como no se le pasó ningún valor no lo tiene en cuenta";)
  7. }
  8. }
En este caso estaría esperando el 3º parámetro para dar una u otra opción. Como en el array "existe" ese tercero y al no pasárselo devuelve el Notice. Si pruebo a poner el if del 3º parámetro con un !empty también me da el error. El problema no es comprobar si tiene contenido o no ese parámetro si no que el array diga bueno no me pasa ese valor pues no compruebo nada del 3º parámetro y me olvido, pero no, como está definido intrínsecamente el maldito array debe comprobarlo xD

No sé si quedó muy claro, si no pues me gustaría saber otra manera de pasar valores a una función en la cual unos sean obligatorios y otros opcionales. Con strings es fácil porque defines 2 o 3 y si no se define uno no pasa nada, se comprueba con una IF y listo, pero con un array (en el caso de que le quieras pasar X números de valores) parece que ya los define por lo que obligatoriamente le tienes que pasar un valor, ya sea un string, un int o nada ("")

Se entiende un poco mejor?

Gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #10 (permalink)  
Antiguo 17/06/2012, 14:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con Notice: Undefined offset

Creo que te estás ahogando por nada.

Código PHP:
if (isset($argv[2])) {
  
// entonces uso $argv[2]

El punto es que ni siquiera necesitas el else si no lo vas a usar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: Ninguno
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:55.