Nunca habia visto un do ... while para la operación típica de sacar la consulta a un mysql_fetch_xxx() (solo es un comentario igualmente es válida).
Yo siempre cuento el total de registros arrojado por la consulta buscando que sea mayor q 0 para ejecutar un simple bucle while() ...
Lee los comentarios del código .. Si la consulta SQL estubiese mal .. ahí te incluí el código necesario para mostrar sus mensaje de error.
Código PHP:
<?php
$link = mysql_connect("localhost", "root", "xxx");
mysql_select_db("articles", $link);
$sql = "SELECT DATE_FORMAT(date,'%b, %Y') AS fecha_formateada, section, locate2, title, description, url FROM articles WHERE (section='hotels.php') AND (locate2='PV') ORDER BY date";
//esta es otra opcion que intente YO....
//$sql = "SELECT section, locate2, title, description, url DATE_FORMAT(date,'%b, %Y') AS fecha_formateada FROM articles WHERE (section='hotels.php') AND (locate2='PV')";
$result = mysql_query($sql, $link) or die("Hay un error en la consulta. Mysq dice: mysql_error()); // con mysql_error() muestro si hay error en SQL de la consulta.
$total_registros=mysql_num_rows($result); // Obtengo el total de registros de la consulta.
if ($total_registros > 0){ // condicional .. si hay mas de 1 registro generado en la consulta .. se muestra la tabla HTML y se ejecuta el mysql_fetch_array).
echo "<img src='../images/hotels.gif'>n";
echo "<table width='100%' border='0' cellspacing='8'>n";
while ($row = mysql_fetch_array($result)){
echo "<tr>n";
echo "<td valign='top'><div><a href='".$row["url"]."' class='links'>".$row["title"]."</a> <span class='date'>".$row["fecha_formateada"]."</span></div>n";
echo "<div class='articlestext'>".$row["description"]."</div>n";
echo "</td>n";
echo "</tr>n";
}
echo "</table>n";
} else { // si no hay registros en la consulta (0) se da este error.
echo "No hay registros para esta consulta";
}
?>
Un saludo,