Autor Zpráva
Defua
Profil *
Ahoj,

vkládám do databáze články (nadpis, url z nadpisu, obsah článku, datum) a potřeboval bych ošetřit situaci pokud mám dva stejné názvy článků, aby se v URL z nadpisu přidalo "-1" nebo "-2".

Moje situace:
Nadpis článku: Testovací článek -> vytvořím z něj URL "testovaci-clanek" a zapíšu do db
Nadpis článku 2: Testovací článek-> vytvořím z něj URL "testovaci-clanek" jenomže článek mi už v db existuje, takže potřebuju udělat "testovaci-clanek-1".

Můj kód je zde ale nevím jak to do něj napasovat:
            $query = mysql_query("SELECT id_clanek FROM tb_clanky WHERE url = '" . $url . "' ORDER by id_clanek DESC") or die (mysql_error());
            $queryCount = mysql_num_rows($query);

            if($queryCount > 0) {
                echo "shoda";
                $url = $url . "-1";
            } else {
                echo "napsal jsem unikátní článek";
                 $url = $url;
            }

Víceméně problém mýho kódu je, že pokud naleznu "testovaci-clanek" udělám z něj "testovaci-clanek-1" ale pokud tam už také existuje potřebuju z něj udělat "testovaci-clanek-2".

Moc děkuji za každé posunutí!
Taps
Profil
Defua:
do tabulky přidej id s vlastnosti auto_increment. To ti zaručí unikátnost každého řádku. Pak stačí kdy jen ke článku jako další parametr přidáš id
Johny.5
Profil
Buď to řešení s ID a nebo:

Zjistím počet článků, když je větší než 0, doplním číslo na konec...

"SELECT COUNT(id) FROM tb_clanky WHERE url LIKE '" . $url . "-%'
Tohle ale najde pro URL clanek jako duplicitní i článek s URL clanek-druhy

"SELECT COUNT(id) FROM tb_clanky WHERE title = '" . $title . "'
Tady zase může být rozdíl v diakritice, jiném počtu mezer apod. a už to taky nenajde..
ProbablyYes
Profil
Pokud jsou vkládány jen články testovaci-clanek a je nutné za nimi přidávat -1,-2 atp. - tj. nedojde k vložení článku se jménem testovaci-clanek-1 (ten by se totiž změnil na testovaci-clanek-1-1 a ne testovaci-clanek-2), stačí jen (snad) -
$queryCount=mysql_result(mysql_query("SELECT COUNT(id_clanek) FROM `tb_clanky` where `url` LIKE '%".$url."%'   "),0);
// Vybere počet řádků v tabulce, které obsahují "cokoli"."$url"."cokoli"
if($queryCount>0){
echo "shoda";
$url = $url . "-$queryCount";
// Přidá počet nalezených "duplikací" za aktuální url.
}else{
echo "napsal jsem unikátní článek";
}
Defua
Profil *
Nakonec jsem to vyřešil s přidáním IDčka do názvu článku. Řešení od Johny.5 přes SELECT COUNT(id) mi nepřijde úplně vhodné jelikož, pokud se mi vytvoří v databázi díry například tím, že smažu nějaký záznam, už mi pak příslušné IDčko nesedí k aktuálnímu článku.

Díky za rady!
Johny.5
Profil
Defua:
Řešení od Johny.5 přes SELECT COUNT(id) mi nepřijde úplně vhodné jelikož, pokud se mi vytvoří v databázi díry například tím, že smažu nějaký záznam, už mi pak příslušné IDčko nesedí k aktuálnímu článku.
To ano. Já jsem tedy zvyklý obecně záznamy nemazat, jen skrývat nějakým příznakem, pak tento problém odpadá.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0