Hola de nuevo.
Creo que lo he logrado con do-while... Pero no se si esta bien ordenado el código, entre otras cosas, porque me salta un error en el "else" despues de usar "while". No se si es correcto usarlo así, en el manual de php.net no he encontrado ningun ejemplo para usar ese con do-while. Puede alguien, por favor, echarle un vistazo a este código?
Código PHP:
<?php
require_once("include/connect.php");
$lurl = $_GET['lurl']; // URL original
date_default_timezone_set("Europe/Madrid");
$date = date("d/m/Y");
$hits = "1";
function getsurl() {
$range = "0"; // Asigno rango "0"
$regcountquery = "SELECT count(*) FROM wst_uss"; // Cuento los registros de la tabla
$regcountresult = mysql_query($regcountquery);
$regcountshow = mysql_fetch_array($regcountresult);
$regcount = $regcountshow[0];
if ($regcount <= "5") { $range = "2"; } // Segun los registros, selecciono rango para X o Y dígitos
if ($regcount >= "6" && $regcount <= "10") { $range = "3"; }
if ($regcount >= "11" && $regcount <= "20") { $range = "4"; }
$surl = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, $range); // Obtengo "surl"
$existquery = "SELECT wst_surl FROM wst_uss WHERE wst_surl='$surl'";
$existqueryresult = mysql_query($existquery); // Compruebo si la "surl" generada existe o no
$exist = mysql_num_rows($existqueryresult);
}
if (strlen($lurl) && filter_var($lurl, FILTER_VALIDATE_URL)) { // Si la URL original es válida
do { // Ejecuto la función...
getsurl();
} while ($exist > 0 ); // ...mientras "surl" exista en la DB
else { // Si no existe...
mysql_query("INSERT INTO wst_uss (wst_lurl, wst_surl, wst_date, wst_hits) VALUES
(
'".addslashes($lurl)."', // ...inserto en la DB
'".$surl."',
'".$date."',
'".$hits."'
)
");
header('Location: shorted.php?lurl='.$lurl.'&surl='.$surl); // Redirijo a pagina "Completado"
}
else { // Si la URL original no es válida...
header('Location: errordocs/wrong-url.php'); // ...redirijo a la pagina "Error"
}
mysql_free_result($regcountresult);
mysql_free_result($existqueryresult);
mysql_close();
?>
Muchas Gracias.
Un Saludo.