Buongiorno a tutti, spero che il titolo renda l'idea di ciò che sto cercando di fare...
Devo creare degli slug per dei permalink ricavandoli da un form (campo Titolo) e memorizzarli in un campo di una tabella, per esempio:
Titolo: "Buongiorno a tutti"
slug: "buongiorno-a-tutti"
Tutto liscio, finchè il titolo non si ripete, quindi con un query ne verifico l'esistenza ed aggiungo un valore numerico alla stringa:
Titolo: "Buongiorno a tutti" (secondo inserimento)
slug: "buongiorno-a-tutti-1"
Ovvio che se si dovesse ripetere il titolo ancora una volta, sarebbe necessario intervenire così:
Titolo: "Buongiorno a tutti" (terzo inserimento)
slug: "buongiorno-a-tutti-2"
Ecco il problema: devo verificare che lo slug esista già nella tabella, nel caso in cui esista devo verificarlo nuovamente aggiungendo il valore numerico (incrementandolo se ne trovo ancora) finchè non lo trovo più, quindi inserirlo nella tabella.
Il ciclo più sensato sarebbe il while:
Non funziona, mi salva sempre 'buongiorno-a-tutti'.:skull:
Il query l'ho testato e funziona senza il ciclo while, e non so cos'altro testare, lo script è semplice e non c'è molto da verificare.
Di fatto non va...
Mi chiedo se c'è un bug, oppure se c'è un modo diverso per interrogare il database più volte se trovo i valori all'interno.
Grazie in anticipo
Devo creare degli slug per dei permalink ricavandoli da un form (campo Titolo) e memorizzarli in un campo di una tabella, per esempio:
Titolo: "Buongiorno a tutti"
slug: "buongiorno-a-tutti"
Tutto liscio, finchè il titolo non si ripete, quindi con un query ne verifico l'esistenza ed aggiungo un valore numerico alla stringa:
Titolo: "Buongiorno a tutti" (secondo inserimento)
slug: "buongiorno-a-tutti-1"
Ovvio che se si dovesse ripetere il titolo ancora una volta, sarebbe necessario intervenire così:
Titolo: "Buongiorno a tutti" (terzo inserimento)
slug: "buongiorno-a-tutti-2"
Ecco il problema: devo verificare che lo slug esista già nella tabella, nel caso in cui esista devo verificarlo nuovamente aggiungendo il valore numerico (incrementandolo se ne trovo ancora) finchè non lo trovo più, quindi inserirlo nella tabella.
Il ciclo più sensato sarebbe il while:
PHP:
$perma_title = 'buongiorno-a-tutti';
$slug_ok = 0;
$nr = 0;
while ($slug_ok == 1)
{
$query = "SELECT * FROM tabella WHERE perma_titolo = ".$perma_title;
$result = mysql_query($query, $db);
if ($result)
{$perma_title_temp = $perma_title.'-'.$nr;}
else
{
$perma_title = $perma_title_temp;
$slug_ok = 1;
}
$nr++;
}
Non funziona, mi salva sempre 'buongiorno-a-tutti'.:skull:
Il query l'ho testato e funziona senza il ciclo while, e non so cos'altro testare, lo script è semplice e non c'è molto da verificare.
Di fatto non va...
Mi chiedo se c'è un bug, oppure se c'è un modo diverso per interrogare il database più volte se trovo i valori all'interno.
Grazie in anticipo