Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/09/2014, 02:11
jovalca
 
Fecha de Ingreso: octubre-2013
Ubicación: Madrid
Mensajes: 53
Antigüedad: 10 años, 6 meses
Puntos: 1
Incrementar digito si nº registros mayor o igual y repetir funcion

Buenos Dias.

Quiero dar las gracias anticipadas a cualquier persona que pueda echarme una mano u orientarme sobre este tema.

Estoy con un proyecto, el cual, devuelve una URL corta con el siguiente código.

Código PHP:
<?php

substr
(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 05); // Donde 5 es la cantidad de digitos que cogerá cada vez.

?>
Lo que quiero hacer es que empiece a dar URLs desde 2 dígitos y vaya aumentando los digitos segun los registros que haya en la base de datos. Según he calculado con permutaciones, en total tiene 62 caracteres para recoger, con lo que con 2 dígitos habria un total de 1891 combinaciones posibles si la calculadora no falla, con 3 digitos habria 37820 combinaciones posibles. Lo que necesito es, cada vez que se solicite una URL, contar el numero de registros que hay en la tabla y si es inferior o igual a 1891 que asigne "2" al substr. y continuar así... Si los registros son de 1892 a 37820 asignar "3" al substr.

Esto lo quiero poner el práctica con lo siguiente, pero necesito saber antes si es viable, es una locura o directamente no es posible.

Combinado con lo anterior y despues de ello, necesitaria comprobar si la URL que obtendré existe o no en la base de datos. Si no existe que la guarde y si existe que vuelva a hacer la funcion hasta dar con una que no exista y pueda guardarla.

Mi mayor preocupacion es lo siguiente, dado que selecciona los caracteres aleatoriamente, si cuando por ejemplo este cerca de los 1891 registros con 2 digitos, y solo quedan 2 URLs posibles, va a estar media hora y a sobrecargar el servidor hasta dar con las 2 urls que faltan...

El código que tengo hasta ahora es este, claro esta, me faltan estas dos cosas, pero antes me gustaria saber si se puede hacer, es viable y alguna noción de como empezar.

Código PHP:
<?php

require_once("include/connect.php");

$lurl $_GET['lurl'];
$surl substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 05);
date_default_timezone_set("Europe/Madrid");
$date date("d/m/Y");
$hits "1";

if (
strlen($lurl) && filter_var($lurlFILTER_VALIDATE_URL)) {

mysql_query("INSERT INTO wst_uss (wst_lurl, wst_surl, wst_date, wst_hits) VALUES

(
'"
.addslashes($lurl)."',
'"
.$surl."',
'"
.$date."',
'"
.$hits."'
)

"
);

header('Location: shorted.php?lurl='.$lurl.'&surl='.$surl);

}

else {

header('Location: errordocs/wrong-url.php');
        
}

mysql_close();

?>
Mis nociones de PHP y mySQL son básicas, por eso os pido consejo. Esto que os digo puede hacerse? Es viable o va a hacer que se sobrecargue el servidor? Si es así hay alguna otra manera de hacerlo sin que ocurra esto?


Mil gracias de antemano.
Un Saludo.