Foros del Web » Programando para Internet » PHP »

ayuda con un pequeño problema

Estas en el tema de ayuda con un pequeño problema en el foro de PHP en Foros del Web. muy buenas. tengo una consulta a una base de datos que me muestra resultados y me los pagina. el código que utilizo es el siguiente: ...
  #1 (permalink)  
Antiguo 12/11/2006, 11:22
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
ayuda con un pequeño problema

muy buenas. tengo una consulta a una base de datos que me muestra resultados y me los pagina. el código que utilizo es el siguiente:

(el código para paginar es el de paginator adaptado)
/////////////////////////////
<?php
$con = mysql_connect("localhost", "usuario", "admin") or die (mysql_error());
mysql_select_db("bd",$con) or die (mysql_error());



//Sentencia sql (sin limit)
$_pagi_sql = "SELECT * FROM tabla ORDER BY id DESC";


$cols = 1;


$_pagi_cuantos = 4;

include("paginator.php");



?>


<?
$_pagi_nav_num_enlaces = 12;

$_pagi_mostrar_errores = false;

$_pagi_conteo_alternativo = true;

$_pagi_propagar = array("id");

$filas = 4;


?> <?php

for ($i = 0; $i <= $filas; $i++)

{
echo "<tr>";
for ($j=0; $j < $cols ; $j++)
{

$row = mysql_fetch_array($_pagi_result);
if ($row["texto"] == "")
{
echo ""; }
else
{
?>

<?
echo ('<TD>'.$row["nombre"].'</td>');
echo ('<td>'.$row["apellidos"].'</td></tr>');


}

}



?></TR> <tr><td><DIV ALIGN="center"><?
}
echo"<p>".$_pagi_navegacion."</p>";



?></DIV>
//////////////////////////////
el tema está en que quiero que cuando en la base de datos no haya ningún registro, aparezca algún mensaje como "actualmente no existen registros" o algo así. he visto algo parecido en el foro pero no soy capaz de aplicarlo en mi caso. podéis ayudarme? es urgente. gracias.
  #2 (permalink)  
Antiguo 12/11/2006, 11:35
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 19 años, 5 meses
Puntos: 1
Que tal, lo que quieres hacer ya esta en esta linea
if ($row["texto"] == "")
{
echo ""; }
en echo""; coloca el mensaje que quieres que aparezca. Espero que te sirva... Saludos
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #3 (permalink)  
Antiguo 12/11/2006, 11:49
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
gracias por tu ayuda, pero si opto por esa opción, como he definido que debe haber 4 filas, me aparecen 4 veces la expresión que quiero poner y no únicamente una como yo quiero.

creo que la solución va más por contar si existe un registro en la base de datos o no, no un sólo campo como es lo que hace la anterior. en fin, no sé si me explico. a ver si me podéis ayudar. la solución que tu me planteas es factible pero ya te digo que necesito los resultados en 4 filas y me pone 4 veces la expresión que quiero que aparezca. x ejemplo así:

no hay registros
no hay registros
no hay registros
no hay registros

ayuda, por favor...
  #4 (permalink)  
Antiguo 13/11/2006, 01:14
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
por favor, necesito vuestra ayuda.... echadme una manita...
  #5 (permalink)  
Antiguo 13/11/2006, 03:08
 
Fecha de Ingreso: noviembre-2006
Mensajes: 8
Antigüedad: 17 años, 5 meses
Puntos: 0
Hola estibaliz,
if ($row["texto"] == "")
{
echo "";
//mete aqui un contador de vacios.
}
else
{
?>
////////////El contador de arriba es igual a todas las fila que este, entonces pon que no hay registro.
  #6 (permalink)  
Antiguo 13/11/2006, 03:23
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
ante todo, gracias joxean por responderme. ahora bien. estoy ya tan ofuscada que no soy capaz de reaccionar. dices que meta un contador de vacios.... pero cómo? si es que lo hago y no me va... no sé si por las ' o por las " pero el caso es que no me va ninguna solución. a la más que llego es a la ya citada

no hay registros
no hay registros
no hay registros
no hay registros

y sale cuatro veces. pero no soy capaz. me puedes explicar como hago lo que me dices, por favor.... estoy aprendiendo y no hay forma de tirar para adelante.... y ya te digo que ahora estoy bloqueada con el tema... te lo agradeceria mucho...
  #7 (permalink)  
Antiguo 13/11/2006, 03:30
 
Fecha de Ingreso: noviembre-2006
Mensajes: 8
Antigüedad: 17 años, 5 meses
Puntos: 0
$vacios=0;
for ($i = 0; $i <= $filas; $i++)

{

echo "<tr>";
for ($j=0; $j < $cols ; $j++)
{

$row = mysql_fetch_array($_pagi_result);
if ($row["texto"] == "")
{
echo "";
$vacios++;
}
else
{
?>

<?
echo ('<TD>'.$row["nombre"].'</td>');
echo ('<td>'.$row["apellidos"].'</td></tr>');
}

}
if ($vacios==$cols)
{
echo"no hay registros en el BD.";
}
//no se si te respondo con esto.
  #8 (permalink)  
Antiguo 13/11/2006, 03:31
 
Fecha de Ingreso: noviembre-2006
Mensajes: 8
Antigüedad: 17 años, 5 meses
Puntos: 0
if($vacios==$cols)
no sino que if($vacios==$filas)
  #9 (permalink)  
Antiguo 13/11/2006, 03:38
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
vaya... estoy sorprendida... gracias por todo... un saludo y muchísimas gracias.....
  #10 (permalink)  
Antiguo 13/11/2006, 10:02
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
mi gozo en un pozo. llevo toda la mañana intentándolo con la solución que me propone joxean y resulta que, efectivamente, si no hay registros en la base de datos, me da el mensaje, pero el caso está en que ahora, cuando hay registros en la base de datos, me muestra los registros que le pido en la consulta y además el mensaje de "no hay registros en la base de datos". qué hago mal? ayuda por favor....
  #11 (permalink)  
Antiguo 13/11/2006, 10:09
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 19 años, 5 meses
Puntos: 1
Que tal yo haria la comprobacion asi
$vacios=0;
for ($i = 0; $i <= $filas; $i++)

{

echo "<tr>";
for ($j=0; $j < $cols ; $j++)
{

$row = mysql_fetch_array($_pagi_result);
if (mysql_affected_rows()==0) //has tu comprobacion asi verificando que no traiga ningun resultado
{
echo "";
$vacios++;
}
else
{
?>

<?
echo ('<TD>'.$row["nombre"].'</td>');
echo ('<td>'.$row["apellidos"].'</td></tr>');
}

}
if ($vacios==$cols)
{
echo"no hay registros en el BD.";
}
creo que asi te deberia funcionar. Espero te sirva ... Saludos
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #12 (permalink)  
Antiguo 13/11/2006, 13:54
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
hola de nuevo. bien. la solución que me da jmqc efectivamente me evita que me aparezca el "no hay registros" cuando subo alguna imagen. el problema es que ahora, cuando subo una imagen, me aparece la imagen y luego cuatro veces más la misma imagen. y esto sucede con la modificación que sugiere jmqc. alguien sabe realmente como solucionar el problema? lo único que quiero es que, si no hay registros en la base de datos, aparezca el mensaje "no hay registros". que jaleo... de cualquier modo gracias a todos por vuestra ayuda, pero por favor, ayudadme a encontrarle solución a esto... gracias...
  #13 (permalink)  
Antiguo 14/11/2006, 03:11
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
por favor, alguien que me eche una manilla...
  #14 (permalink)  
Antiguo 14/11/2006, 05:03
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
por dios, no hay nadie que pueda echarme una manita? por favor os lo pido...
  #15 (permalink)  
Antiguo 14/11/2006, 06:05
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
por favor....

nadie? venga, enrollaros un poquillo, seguro que es una tontería pero estoy super agobiada con el tema...
  #16 (permalink)  
Antiguo 14/11/2006, 07:13
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
llevo toda la mañana dándole vueltas al tema y nada, que no soy capaz. por favor, ya no sé como rogaroslo... hay alguien que pueda al menos plantearse qué es lo que me sucede? por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor,
  #17 (permalink)  
Antiguo 14/11/2006, 13:50
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
pero por dios, es que nadie me va a echar un cable? cluster, jmpg, .... ayudadme, por favor...
  #18 (permalink)  
Antiguo 14/11/2006, 16:49
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Pregunta

Cita:
Iniciado por estibaliz2006 Ver Mensaje
muy buenas. tengo una consulta a una base de datos que me muestra resultados y me los pagina. el código que utilizo es el siguiente:

(el código para paginar es el de paginator adaptado)
/////////////////////////////
<?php
$con = mysql_connect("localhost", "usuario", "admin") or die (mysql_error());
mysql_select_db("bd",$con) or die (mysql_error());



//Sentencia sql (sin limit)
$_pagi_sql = "SELECT * FROM tabla ORDER BY id DESC";


$cols = 1;


$_pagi_cuantos = 4;

include("paginator.php");



?>


<?
$_pagi_nav_num_enlaces = 12;

$_pagi_mostrar_errores = false;

$_pagi_conteo_alternativo = true;

$_pagi_propagar = array("id");

$filas = 4;


?> <?php

for ($i = 0; $i <= $filas; $i++)

{
echo "<tr>";
for ($j=0; $j < $cols ; $j++)
{

$row = mysql_fetch_array($_pagi_result);
if ($row["texto"] == "")
{
echo ""; }
else
{
?>

<?
echo ('<TD>'.$row["nombre"].'</td>');
echo ('<td>'.$row["apellidos"].'</td></tr>');


}

}



?></TR> <tr><td><DIV ALIGN="center"><?
}
echo"<p>".$_pagi_navegacion."</p>";



?></DIV>
//////////////////////////////
el tema está en que quiero que cuando en la base de datos no haya ningún registro, aparezca algún mensaje como "actualmente no existen registros" o algo así. he visto algo parecido en el foro pero no soy capaz de aplicarlo en mi caso. podéis ayudarme? es urgente. gracias.
a ver estibaliz2006 que paginador estas usando el de jpinedo?
yo resolvi eso de esta manera

yo tengo una tabla de encuestas utilizo el paginador por cuestiones obvias

<?
$cambio="f";
$conexion =mysql_connect($host,$user_host,$pas_host) or die("Error al realizar la conexion al servidor");
mysql_select_db($base_host,$conexion ) or die("Error al realizar la seleccion de la base de datos");
//$result= "SELECT * FROM $USUARIOS ORDER BY WEB_APELLIDOS";
//SELECT * FROM videos
if($buscando==null)
{
$_pagi_sql="SELECT * FROM $WEB_ENCUESTAS ORDER BY ENC_ID DESC";
//echo "vacio";
}
else
{
//$_pagi_sql = "SELECT * FROM $USUARIOS ORDER BY WEB_APELLIDOS";
$_pagi_sql="SELECT * FROM $WEB_ENCUESTAS WHERE ENC_ID LIKE '%$buscando%' OR ENC_TITULO LIKE '%$buscando%' ORDER BY ENC_ID DESC";
$buscado_pagi=$buscando;
//echo $buscando;
}
//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos = $mostrar;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

$afectados = mysql_num_rows($_pagi_result);
if($afectados!=0)
{

while ($row = mysql_fetch_array($_pagi_result))
{

if($cambio=="f")
{
echo '<tr class="textlista">';
echo '<td bgcolor="#E1E8FF" ><div align="left">';
echo '&nbsp;';
echo '</div></td>';

echo '<td bgcolor="#E1E8FF" ><div align="left">';
echo $row[0];
echo '</div></td>';
echo '<td bgcolor="#E1E8FF" ><div align="left">';
echo $row[1];
echo '</div></td>';
echo '<td bgcolor="#E1E8FF">';
echo "&nbsp;";
echo '</td>';
echo '<td bgcolor="#E1E8FF">';
echo "&nbsp;";
echo '</td>';
echo '<td bgcolor="#E1E8FF"><div align="center">';

if($navegador=="Internet Explorer")
{
echo "<a href="."javascript:changecontent('Div3','encuesta_ update.php?id_encu=$row[0]')".">";
}
else
{
echo "<a href=javascript:editarencuesta('".$row[0]."')>";
}
echo '<img src="Imagenes/edit.gif" width="16" height="16" border="0" title="Editar registro"></a></div>';
echo '</td>';

echo '<td bgcolor="#E1E8FF"><div align="center">';
echo '<a href="encuesta_borrar.php?del_clave='.$row[0].'" onClick="return confirm('."'¿Est&aacute;s seguro de borrar la encuesta con la clave ".$row[0]."?')".';" >';
echo '<img src="Imagenes/del.gif" width="16" height="16" border="0" title="Eliminar registro">';
echo '</a></div></td>';

echo '<td bgcolor="#E1E8FF" ><div align="center">';
//echo "&nbsp;";
if($row[2]=="s")
{
echo '<img src="Imagenes/si.gif" width="16" height="16" border="0">';
}
else
{
if($row[2]=="n")
{
echo '<img src="Imagenes/nop.gif" width="16" height="16" border="0">';
}
}
echo '</div></td>';

echo '<td bgcolor="#E1E8FF" ><div align="center">';
echo "&nbsp;";
echo '</div></td>';

echo '<td bgcolor="#E1E8FF" ><div align="center">';
echo '&nbsp;';
echo '</div></td>';

echo '</tr>';
$cambio="v";
}
else
{
echo '<tr class="textlista">';
echo '<td bgcolor="#F5F7FD" ><div align="left">';
echo '&nbsp;';
echo '</div></td>';

echo '<td bgcolor="#F5F7FD" ><div align="left">';
echo $row[0];
echo '</div></td>';
echo '<td bgcolor="#F5F7FD" ><div align="left">';
echo $row[1];
echo '</div></td>';
echo '<td bgcolor="#F5F7FD">';
echo "&nbsp;";
echo '</td>';
echo '<td bgcolor="#F5F7FD">';
echo "&nbsp;";
echo '</td>';
echo '<td bgcolor="#F5F7FD"><div align="center">';

if($navegador=="Internet Explorer")
{
echo "<a href="."javascript:changecontent('Div3','encuesta_ update.php?id_encu=$row[0]')".">";
}
else
{
echo "<a href=javascript:editarencuesta('".$row[0]."')>";
}
echo '<img src="Imagenes/edit.gif" width="16" height="16" border="0" title="Editar registro"></a></div>';
echo '</td>';

echo '<td bgcolor="#F5F7FD"><div align="center">';
echo '<a href="encuesta_borrar.php?del_clave='.$row[0].'" onClick="return confirm('."'¿Est&aacute;s seguro de borrar la encuesta con la clave ".$row[0]."?')".';" >';
echo '<img src="Imagenes/del.gif" width="16" height="16" border="0" title="Eliminar registro">';
echo '</a></div></td>';

echo '<td bgcolor="#F5F7FD" ><div align="center">';
//echo "&nbsp;";
if($row[2]=="s")
{
echo '<img src="Imagenes/si.gif" width="16" height="16" border="0">';
}
else
{
if($row[2]=="n")
{
echo '<img src="Imagenes/nop.gif" width="16" height="16" border="0">';
}
}
echo '</div></td>';

echo '<td bgcolor="#F5F7FD" ><div align="center">';
echo "&nbsp;";
echo '</div></td>';

echo '<td bgcolor="#F5F7FD" ><div align="center">';
echo '&nbsp;';
echo '</div></td>';

echo '</tr>';
$cambio="f";
}

}

}
else
{
if($_POST['userbuscado']!=null)
{
echo '<tr class="textlista">';
echo '<td colspan="10" bgcolor="#E1E8FF" >';
echo 'Clave no existente';
echo '</td>';
echo '</tr>';
}
else
{
echo '<tr class="textlista">';
echo '<td colspan="10" bgcolor="#E1E8FF" >';
echo 'En este momento no hay encuestas creadas';
echo '</td>';
echo '</tr>';
}
}
mysql_close ($conexion);
?>

no se si esto te pueda servir saludos

espero tus comentarios
__________________
gerardo
  #19 (permalink)  
Antiguo 14/11/2006, 22:53
 
Fecha de Ingreso: febrero-2004
Mensajes: 34
Antigüedad: 20 años, 2 meses
Puntos: 0
Saludos,

La cuestion es tan facil, pero tan facil..... hay una funcion de PHP que se llama count -- Cuenta los elementos de una matriz o propiedades de un objeto

Si le das un count a tu matriz (lo que regresa tu fecth_Array) te dice cuantos elementos tienes, pones un if antes de ejecutar tu codigo donde compruebes eso... y al final el else con tu mensaje de no hay registros... como vez es algo de simple logica de programacion.

Entiendo la necesidad de sacar el trabajo, pero como dice el dicho Ayudate a ti mismo, hay infinidad de tutoriales en la web sobre esos temas y sin animo de ofender es algo muy basico... ya hiciste la parte mas dificil (aunque parece copy paste del ejemplo del paginator de desarrollo web) como se te complica la condicional. Animo!!
__________________
Mis Blogs www.desdegdl.com
- www.vivirguadalajara.com
  #20 (permalink)  
Antiguo 15/11/2006, 01:55
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Pregunta

vamos a ver. antes de nada, gracias a todos. otra cosita... el tema no está en 'ayudate a tí mismo' como dice el amigo anterior, pues me da la sensación de que la impresión que estoy dando es que estoy esperando tranquilamente, sin tratar de hacer nada, a que me lo den hecho. no es eso. yo estoy probando con la función mysql_num_rows()

if(mysql_num_rows($_pagi_sql)==0)
echo ('<tr><TD colspan=4 class=text3 ALIGN=center>no registros</td></tr>');
else

el problema es qué demonios estoy haciendo mal. me explico: si pongo esto al principio, después de la consulta, es decir, después de
$_pagi_sql = "SELECT * FROM tabla";
soluciono el problema en parte. por qué en parte? pues porque si no hay registros, sí que me aparece el mensaje "no hay registros"; pero cuando hay algún registro insertado, me sigue dando este mensaje, y después, además, el registro. con lo cual, estoy diciendo que no hay registros y además, estoy mostrando el registro que hay.

eso si lo pongo ahí. si por el contrario lo situo más abajo, el problema es que me da el ya conocido "no hay registros" cuatro veces, y no una única vez.

para esto es para lo que yo estoy pidiendo ayuda. para saber qué narices estoy haciendo mal para que el tema no vaya...
simplemente es eso... como decía el último amigo, esto es lo básico de lo básico.... desgraciadamente no tengo los conocimientos (al menos aún) que parece ser que tienes tú y no te mosquees por esto... pero hay veces que a las que nos iniciamos en esto cualquier cosilla, por pequeña que sea, parece un mundo imposible de superar (aunque como digo, a los ojos de alguien experto parezca la más absoluta ridiculez), y te bloqueas y no sabes como actuar... eso es todo (que no es poco) sólo pido ayuda en eso... pero por favor, no tratéis de ridiculizar a las que estamos medio empezando... nadie nace sabiendo (o sí?)...
  #21 (permalink)  
Antiguo 15/11/2006, 05:37
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Pregunta

alguna idea después del anterior mensaje?
  #22 (permalink)  
Antiguo 15/11/2006, 07:33
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
nadie? alguna idea para solucionarlo?
  #23 (permalink)  
Antiguo 15/11/2006, 13:00
 
Fecha de Ingreso: febrero-2004
Mensajes: 34
Antigüedad: 20 años, 2 meses
Puntos: 0
Espero te sirva... tienes que evaluar la condicion de no hay resultados antes de hacer los ciclos for... si no tienes resultados para que te metes a los ciclos.

Este es mi version del codigo... espero que te sirva...

Código:
<?php
	$con = mysql_connect("localhost", "usuario", "admin") or die (mysql_error());
	mysql_select_db("bd",$con) or die (mysql_error());
	
	//Sentencia sql (sin limit)
	$_pagi_sql = "SELECT * FROM tabla ORDER BY id DESC";
	$cols = 1;
	$_pagi_cuantos = 4;
	include("paginator.php");
	
	$_pagi_nav_num_enlaces = 12;
	$_pagi_mostrar_errores = false;
	$_pagi_conteo_alternativo = true;
	$_pagi_propagar = array("id");
	$filas = 4;
?>
	<table>
<?PHP
// AQUI DEBE IR LA CONDICION QUE COMPRUEBA EL RESULTADO DE $_pagi_result
if(@mysql_num_rows($_pagi_result)) {
	for ($i = 0; $i <= $filas; $i++)
	{
		echo "<tr>";
		for ($j=0; $j < $cols ; $j++)
		{
			$row = mysql_fetch_array($_pagi_result);
		echo ('<TD>'.$row["nombre"].'</td>');
		echo ('<td>'.$row["apellidos"].'</td></tr>');
	
	}
	
	?>
		</TR> 
		<tr><td><DIV ALIGN="center">
	<?PHP
		echo"<p>".$_pagi_navegacion."</p>";
	?>
		</td></tr>
<?PHP 
	}//TERMINA EL IF CUANDO SI TENEMOS INFO
	else
	{
		//AQUI TU MENSAJE DE NO INFO
	}


?>
	</table>
__________________
Mis Blogs www.desdegdl.com
- www.vivirguadalajara.com
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 20:36.