Autor | Zpráva | ||
---|---|---|---|
Defua Profil * |
#1 · Zasláno: 20. 8. 2014, 16:06:45
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 |
#2 · Zasláno: 20. 8. 2014, 16:48:16
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 |
#3 · Zasláno: 20. 8. 2014, 17:21:58
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 . "-%' "SELECT COUNT(id) FROM tb_clanky WHERE title = '" . $title . "' |
||
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 * |
#5 · Zasláno: 21. 8. 2014, 10:09:41
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 |
#6 · Zasláno: 21. 8. 2014, 11:01:07
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á. |
||
Časová prodleva: 10 let
|
0