Foros del Web » Programando para Internet » PHP »

Reindexar

Estas en el tema de Reindexar en el foro de PHP en Foros del Web. Hola Tengo este rotador de banners que bajé de la web y le hice algunas pequeñas modif.: Código PHP: mysql_error (); srand ((double) microtime ()* ...
  #1 (permalink)  
Antiguo 05/01/2006, 13:05
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 20 años, 2 meses
Puntos: 1
Reindexar

Hola
Tengo este rotador de banners que bajé de la web y le hice algunas pequeñas modif.:
Código PHP:
mysql_error();
srand((double)microtime()*1000000);
$cantidad="SELECT COUNT(*) FROM banner_rotating";
$cantidad mysql_query($cantidad,$con);
list(
$vhay)=mysql_fetch_array($cantidad);
$ver RAND(1,$vhay);

$sql="SELECT id AS ID, titulo AS DESCRIPTION, url_banner AS URL_BANNER, mostrado AS IMPRESSIONS, numbermax AS LIMIT_ALLOW, username AS USERNAME FROM banner_rotating WHERE id='$ver' ";
$result mysql_query($sql$con);
if (
$rowmysql_fetch_array($result)) {
//list($v_id,$v_descriptionbanner,$vurl_site,$v_url_banner,$vmostrado,$vclick,$vlimit,$vusername)=mysql_fetch_array($registro);
$lim=$row["numbermax"];
if (
$lim="") {
$vid=$row["ID"];
$desc=$row["DESCRIPTION"];
$ban=$row["URL_BANNER"];
$show=$row["IMPRESSIONS"];

$banner .= $desc ;
$vmostrado $show 1;

$actual "UPDATE banner_rotating SET mostrado = '$vmostrado' WHERE id = '$vid'";
$registro mysql_query($actual,$con);
print 
$ban;
}
}
$lim=$row["numbermax"];
if (
$lim<$row["IMPRESSIONS"]) {
$vid=$row["ID"];
$desc=$row["DESCRIPTION"];
$ban=$row["URL_BANNER"];
$show=$row["IMPRESSIONS"];

$banner .= $desc ;
$vmostrado $show 1;

$actual "UPDATE banner_rotating SET mostrado = '$vmostrado' WHERE id = '$vid'";
$registro mysql_query($actual,$con);
print 
$ban;
}
?> 
El problema es que cuando borro un banner ya el índice no es correlativo y el rotador no muestra nada.
Necesito reindexar pero no sé cómo. He visto algunos post donde hablan de OPTIMIZE pero no logro hacerlo con eso.
Alguna ayuda por favor
Muchas gracias
  #2 (permalink)  
Antiguo 05/01/2006, 13:33
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
En vez de elegir un ID random con PHP se puede hacer directo con MySQL

Código PHP:
$sql="SELECT id AS ID, titulo AS DESCRIPTION, url_banner AS URL_BANNER, mostrado AS IMPRESSIONS, numbermax AS LIMIT_ALLOW, username AS USERNAME FROM banner_rotating ORDER BY rand() LIMIT 0,1 ";
$result mysql_query($sql$con);
if (
$rowmysql_fetch_array($result)) {
//list($v_id,$v_descriptionbanner,$vurl_site,$v_url_banner,$vmostrado,$vclick,$vlimit,$vusername)=mysql_fetch_array($registro);
$lim=$row["numbermax"];
if (
$lim="") {
$vid=$row["ID"];
$desc=$row["DESCRIPTION"];
$ban=$row["URL_BANNER"];
$show=$row["IMPRESSIONS"];

$banner .= $desc ;
$vmostrado $show 1;

$actual "UPDATE banner_rotating SET mostrado = '$vmostrado' WHERE id = '$vid'";
$registro mysql_query($actual,$con);
print 
$ban;
}
}
$lim=$row["numbermax"];
if (
$lim<$row["IMPRESSIONS"]) {
$vid=$row["ID"];
$desc=$row["DESCRIPTION"];
$ban=$row["URL_BANNER"];
$show=$row["IMPRESSIONS"];

$banner .= $desc ;
$vmostrado $show 1;

$actual "UPDATE banner_rotating SET mostrado = '$vmostrado' WHERE id = '$vid'";
$registro mysql_query($actual,$con);
print 
$ban;
}
?> 
  #3 (permalink)  
Antiguo 05/01/2006, 13:49
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 20 años, 2 meses
Puntos: 1
Gracias Seppo, grandioso !
Me queda un problema:
cuando quiero borrar banners no borra el que elijo sino el anterior
y no entiendo por qué
Código PHP:
if ($_POST['b_delete']) {
$sqldel "SELECT * FROM banner_rotating";
$resultdel mysql_query($sqldel); //Seleccionamos todos los banners de la tabla
$delete mysql_query("DELETE FROM banner_rotating where id = '$id'"); //Borramos el banner seleccionado

si cuando usaba el otro método funcionaba bien
Se te ocurre algo ?
  #4 (permalink)  
Antiguo 05/01/2006, 14:09
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
ése código debería eliminar el banner cuyo id es $id... pero para corregirlo deberías mostrar de donde sale la variable $id para encontrar el error...
  #5 (permalink)  
Antiguo 05/01/2006, 14:28
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 20 años, 2 meses
Puntos: 1
Sí entiendo, por más que lo miro no encuentro el error.
Tengo una tabla html que me muestra el contenido de la tabla banners con la opción de agregar y borrar banners. Eso lo manejo con:
Código PHP:
<?

//$password=$_GET['pass'];
$descrip=$_POST['b_descr'];
$func=$_POST['func'];
$username=$_POST['b_username'];
$url=$_POST['b_html'];
$limit=$_POST['b_limit'];

mysql_select_db($bd_base,$con); //Conectamos a la base d datos.

$sql "SELECT * FROM banner_rotating ORDER BY id asc";
$result mysql_query($sql); //Seleccionamos todos los banners de la tabla

if ($limit==0) {
  
$limit="";
}
$mostrado="0";


?>
<html>
<body>
<table border=1 cellpadding=0 cellspacing=0 width=60% align="center">
<tr><td align="center" bgcolor='WHEAT'><small><b>Id</b></td>
<td align="center" bgcolor='WHEAT'><small><b>Description</b></td>
<td align="center" bgcolor='WHEAT'><small><b>Impressions</b></td>
<td align="center" bgcolor='WHEAT'><small><b>Limit</b></td>
<td align="center" bgcolor='WHEAT'><small><b>Left</b></td>
<td align="center" bgcolor='WHEAT'><small><b>Username</b></td>
<td align="center" bgcolor='WHEAT'><small><b>Delete</b></td></tr>
<?
while($row mysql_fetch_array($result)) {
  if (
$row['numbermax']>0) {
  
$left=$row['numbermax']-$row['mostrado'];
}
$limit=$row['numbermax'];
if (
$row['numbermax']=="") {
  
$left="--";
  
$limit="Unlimited";
}
$alt=="alt1" $alt="alt2" $alt="alt1"# Cambia el color
$imgdel="images2/del.gif";
$id=$row["id"];
echo
"
<tr class='$alt'>
<td><small>$row[id]</td>
<td><small>$row[titulo]</td>
<td align='center'><small>$row[mostrado]</td>
<td align='center'><small>$limit</td>
<td align='center'><small>$left</td>
<td align='center'><small>$row[username]</td>
<td align='center'><small><form action='admin.php?pass=<?=$password?>' method='post'><input type=hidden name='func' value='$func'><input type=hidden name='b_delete' value='delete'><input type=hidden name='id' value='$id'><input type='image' src='$imgdel' name='a' align='center' border='0'></font></TD></td>
</tr>"
;
?>

</table>
<?
}
Puse un echo por ahí para ver que está tomando... y yo pido borrar el id 12 y está recibiendo el id 17 que ni siquiera existe
Muchísimas gracias Seppo.
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:46.