al parecer no estas sacando nada de la base y las funciones se ejecutan llamando a nada
por eso antes de proceguir con cualquier proceso despues de una llamada a la base de datos hay que comocar
mysql_num_rows para verificar si tu consulta saco algo de la base sino somplemente no preocesar los "resultados de la llamada a la base de datos".
usa esto
Código PHP:
<?php
if (isset($_POST["tipo"])) $buscar = $_POST["tipo"];
// Cargo el contenido de connect-db.php con la conexión a la base de datos y credenciales
include('connect-db.php');
$dato='';
$header='';
// Realiza la consulta SQL donde saca el nombre de la sede
$sql ="SELECT ip,nombre,`desc`,tipo,sede FROM gestionip WHERE tipo=" . $buscar . "";
$result = mysql_query($sql);
$fields = mysql_num_fields($result);
if(mysql_num_rows($result)==0){
die("no hay datos que procesar, revisa la consulta");
}
//aquí contamos el número de fields en la tabla
for ($i = 0; $i < $fields; $i++) {
$header .= mysql_field_name($result, $i);
}
//aquí vamos tomando los nombre de los fields
$resultCat=mysql_query($sql);
while($rowCat = mysql_fetch_array($resultCat)) {
$sql="SELECT DISTINCT ip,nombre,`desc`,tipo,sede FROM gestionip WHERE tipo=" . $buscar . "";
$result = mysql_query($sql);
while($row = mysql_fetch_row($result)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$dato .= trim($line)."\n";
}
}
$dato = str_replace("\r","",$dato);
if ($dato == "") {
$dato = "\n(0) Records Found!\n";
}
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=extraction.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$dato";
?>