J'ai un formulaire d'ajout de message pour ajouter un nouveau message. J'ai pris le titre du message comme post_url ou slug. Je veux post_url unique.
Voici ce que j'ai fait jusqu'à présent -

$post_name = $this->input->post('post_title');
function clean($post_name) {
    $name = trim($post_name);
    $post_name = str_replace(' ', '-', $name);
    return preg_replace('/[^A-Za-z0-9\-]/', '', $post_name);
}

$post_url = clean($post_name);
$query = mysql_query("select post_url from sa_posts where post_url like '" . $post_url . "%'");
while ($r = mysql_fetch_assoc($query)) {
    $slugs[] = $r['post_url'];
    if (mysql_num_rows($query) !== 0 && in_array($post_url, $slugs)) {
        $max = 0;
        while (in_array(($post_url . '-' . ++$max), $slugs)) ;
        $post_url .= '-' . $max;
    }
}
echo "Slug " . $post_url;

Je reçois une sortie comme -

post-url

post-url-1

post-url-1-1

post-url-1-1-1

Mais je veux une sortie comme -

post-url

post-url-1

post-url-2

post-url-3

Quel est le problème dans mon code?
S'il vous plaît, aidez-moi.
Merci.

0
Dbb 17 janv. 2017 à 16:25

2 réponses

Meilleure réponse

Modifiez votre code de la manière suivante

$post_url = clean($post_name);
$post_url1 = $post_url;
$query = mysql_query("select post_url from sa_posts where post_url like '" . $post_url . "%'");
while ($r = mysql_fetch_assoc($query)) {
    $slugs[] = $r['post_url'];
    if (mysql_num_rows($query) !== 0 && in_array($post_url, $slugs)) {
        $max = 0;
        $post_url = $post_url1;
        while (in_array(($post_url . '-' . ++$max), $slugs)) ;
        $post_url .= '-' . $max;
    }
}
echo "Slug " . $post_url;
2
coder 17 janv. 2017 à 13:49
function UniqueSlugGenerator($p){
    include("conn.php");
    $RowCou=0;
    $slug = preg_replace('/[^a-z0-9]/', '-', strtolower(trim(strip_tags($p))));
    $qq = mysqli_query($conn,"select Slug from ser_posts where Slug like '$slug%'") or die(mysqli_error($conn));
    $RowCou = mysqli_num_rows($qq);
    return ($RowCou > 0) ? $slug.'-'.(++$RowCou) : $slug;
}
3
Akın Köker 20 mars 2017 à 20:32