Foros del Web » Programando para Internet » PHP »

array vacio

Estas en el tema de array vacio en el foro de PHP en Foros del Web. Hola a todos! Me sucede una cosa muy extraña con un array: me dice que está vacío, pero contiene elementos, por lo que no me ...
  #1 (permalink)  
Antiguo 07/09/2010, 13:24
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 9 meses
Puntos: 9
array vacio

Hola a todos! Me sucede una cosa muy extraña con un array: me dice que está vacío, pero contiene elementos, por lo que no me realiza la query después.

Este es el codigo concreto del problema:

Código PHP:
//$autor =  $_POST['autor'];
//$titulo =  $_POST['titulo'];
//$tema =  $_POST['tema'];
//$clave = $_POST['clave'];
//$submit = $_POST['submit']; //// submit siempre es 'submit' si hay post




/////////// compruebo si todos los POST excepto submit estan vacios o las cadenas tienen menos de tres elementos

function checkforemptyval($array) {
  
$is_empty 0;
  
$recibido= array();
  foreach(
$array as $key => $item) {
      
$recibido[] = "$key=$item";
      if(
is_numeric($item)) {echo $item."<p>";
    } elseif ((empty(
$item))|| (strlen($item) < 3)){
      
$is_empty++;
    }
  }
  if (
$is_empty 4)
    return 
TRUE;
  else
   return 
FALSE;
 
  }
///////// ejecuto la funcion

 
if(!checkforemptyval($_POST)) {
  echo 
" post vacio o inferior a tres caracteres.<p>";
} else {
 echo 
"puedo seguir y hacer ya query<p>";
 
  
// salida array

echo "size of array = ".sizeof($recibido)."<p>"
for (
reset($recibido); list(,$item)=each($recibido); )
echo 
$item."<p>"

codigo completo



Código PHP:
<?php header("Content-Type: text/html;charset=utf-8");?>

<?php

//$autor =  $_POST['autor'];
//$titulo =  $_POST['titulo'];
//$tema =  $_POST['tema'];
//$clave = $_POST['clave'];
//$submit = $_POST['submit']; //// submit siempre es 'submit' si hay post




/////////// compruebo si todos los POST excepto submit estan vacios o las cadenas tienen menos de tres elementos

function checkforemptyval($array) {
  
$is_empty 0;
  
$recibido= array();
  foreach(
$array as $key => $item) {
      
$recibido[] = "$key=$item";
      if(
is_numeric($item)) {echo $item."<p>";
    } elseif ((empty(
$item))|| (strlen($item) < 3)){
      
$is_empty++;
    }
  }
  if (
$is_empty 4)
    return 
TRUE;
  else
   return 
FALSE;
 
  }
///////// ejecuto la funcion

 
if(!checkforemptyval($_POST)) {
  echo 
" post vacio o inferior a tres caracteres.<p>";
} else {
 echo 
"puedo seguir y hacer ya query<p>";
 
///////  salida para comprobar los elementos
//////   nunca saca nada!!!!!!!!!

  
// salida array

echo "size of array = ".sizeof($recibido)."<p>"
for (
reset($recibido); list(,$item)=each($recibido); )
echo 
$item."<p>";
  
//////  salida para comprobar que each ya avanza en el array 

for (reset($recibido); list(,$item)=each($recibido); )
  echo 
"<p>".$item."<p>"







$link=mysql_connect("localhost","root","")or die ("error en la conexion"); 
mysql_select_db("buscador",$link) or die ("no encontro base de datos"); 

//////// vuelvo a incluir el charset por si acaso

mysql_query("SET NAMES 'utf8'");
mysql_set_charset'utf8' $link );
$charset mysql_client_encoding$link );

////// compruebo el charset con una salida

echo "The current character set is: $charset <p>";

/////// primera query en funcion de haber recibido submit pero no clave

if ((isset($_POST['submit'])) and (!isset($_POST['clave']))){
    
$buscar "";

if (isset (
$autor) && !($autor == "")) {
$buscar .= " autor LIKE '%$autor%'";

}
if (isset (
$titulo) && !($titulo == "")) {
if (! (
$buscar == "")) {$buscar .= " AND "; }
$buscar .= " titulo LIKE '%$titulo%'";
}
if (isset (
$tema) && !($tema == "")) {
if (! (
$buscar == "")) {$buscar .= " AND "; }
$buscar .= " tema LIKE '%$tema%'";
}
if (!(
$buscar == "")) {
$buscar "WHERE".$buscar;
}

$buscar "SELECT * FROM libros $buscar ORDER BY  autor DESC";
$result mysql_query($buscar) or die("La siguiente consulta contiene algún error:<br>nSQL: <b>$sql</b>");

echo 
$buscar;

////// compruebo errores en la query y en la obtencion de datos vacios

if (!$result){ 
echo 
"error en la query"."<p>";
}elseif (!
mysql_num_rows($result)){ 
echo 
"error en el resultado = o";

}elseif(
mysql_num_rows($result)){ 
while (
$row mysql_fetch_array ($result)) {    

echo 
$row['autor']."<p>";  
echo 
$row['titulo']."<p>"
echo 
$row['tema']."<p>"."<p>"
}

}

///////  segunda query si la anterior no es valida.

///////  si se recibio submit y la clave

elseif ((isset($_POST['submit'])) and (isset($_POST['clave']))){

$buscar "";

if (isset (
$clave) && !($clave == ""))  {
$buscar .= " autor LIKE '%$clave%' OR titulo LIKE '%$clave%' OR tema LIKE '%$clave%'";

}
if (isset (
$autor) && !($autor == "")) {
if (! (
$buscar == "")) {$buscar .= " AND "; }
$buscar .= " autor LIKE '%$autor%'";
}
if (isset (
$titulo) && !($titulo == "")) {
if (! (
$buscar == "")) {$buscar .= " AND "; }
$buscar .= " titulo LIKE '%$titulo%'";
}
if (isset (
$tema) && !($tema == "")) {
if (! (
$buscar == "")) {$buscar .= " AND "; }
$buscar .= " tema LIKE '%$tema%'";
}
if (!(
$buscar == "")) {
$buscar "WHERE".$buscar;
}

$buscar "SELECT * FROM libros $buscar ";
$result mysql_query($buscar) or die("La siguiente consulta contiene algún error:<br>nSQL: <b>$sql</b>");

// salida query
echo $buscar."<p>";

//echo $buscar;


if (!$result){ 
echo 
"error primero"."<p>";
}elseif (!
mysql_num_rows($result)){ 
echo 
"error segundo";

}elseif(
mysql_num_rows($result)){ 
while (
$row mysql_fetch_array ($result)) {    

echo 
$row['autor']."<p>";  
echo 
$row['titulo']."<p>"
echo 
$row['tema']."<p>"."<p>"
}
}


////// cierro la funcion ejecutada al comienzo
}

?>
  #2 (permalink)  
Antiguo 07/09/2010, 15:56
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
Respuesta: array vacio

Has un print_r($_POST) para saber si tiene o no datos el arreglo $_POST.
  #3 (permalink)  
Antiguo 07/09/2010, 16:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: array vacio

la variable $recibido esta fuera de contexto, y solo existe dentro de la función... fuera no existe la variable...

te sugiero leer el manual al respecto:
http://www.php.net/manual/en/languag...bles.scope.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: vacio
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 14:59.