PHP & databáze

Wladass
Uživatelský avatar
WD Trader: 4.43/5

Příspěvky: 2134
Registrace: 13.09.2011
Zdravím,
mám tabulku s knihami a spousta z nich má duplicitní název, potřeboval bych nějakým způsobem přejmenovat tyto duplicitní záznamy, abych z nich pak mohl poskládat unikátní url.
Řekněme že v databázi book mám sloupec bookName a při :
SELECT * FROM `book` WHERE `bookName ` LIKE 'Moje nová knížka';
Na mě vyskočí třeba 5 knih, pokud si zadám celkový počet duplicitních názvů knih tak se dostanu na číslo kolem 6500 takže metoda crtl+F a rename se sem nehodí. Nějaký nápady ? :) Ideální by bylo kdyby upravený název knihy byl : Moje nová knížka,Moje nová knížka 2, Moje nová knížka 3, Moje nová knížka 4 apod protože max. počet duplicitnich názvů mám 5.

Díky za nápady.

Otakar Pěnkava

Administrátor
WD Trader: 4.6/5

Příspěvky: 2707
Registrace: 15.10.2010
Co něco na tento způsob?
Kód: Vybrat vše
$i = 1;
$sql = 'SELECT * FROM book WHERE bookName LIKE 'Moje nová knížka';
$result = mysql_query($sql);
while($row = mysql_fetch_row($result)) {
   $sql = 'UPDATE book SET bookName = "Moje nová knížka '.$i.'" WHERE bookId = ' . $row['bookId'];
   mysql_query($sql);
   $i++;
}


Jen nevím, zda jsem porozuměl správně zadání, kdyžtak upřesni a doplním. (ps: nevím, zda jsou v obyč. php ty funkce takové, píši vše v phpBB slangu, takže jsem obyč. php už dlouhou dobu nepoužil).

Ale stále nevím, proč tam nemáš sloupeček ID a podle toho netvoříš unikátní odkazy.

Wladass
Uživatelský avatar
WD Trader: 4.43/5

Příspěvky: 2134
Registrace: 13.09.2011
Jop takhle by to šlo, ale musel bych tohle pomocí LIKE dělat pro X tisíc názvů a ty manuálně brát, jedině mě napadá načíst je do pole a pak je v LIKE použít jako proměnnou.
Co se týče tvého dotazu tak samozřejmě ID s AI mám, ale nebudu pro knizky tvorit url ve tvaru domena.cz/kniha/15475/ když můžu mít krasnou domena.cz/kniha/moje-nova-knizka-2/ :)

Otakar Pěnkava

Administrátor
WD Trader: 4.6/5

Příspěvky: 2707
Registrace: 15.10.2010
Tak proč to nedáš takto:
Kód: Vybrat vše
$i = 1;
$sql = 'SELECT * FROM book WHERE bookName;
$result = mysql_query($sql);
while($row = mysql_fetch_row($result)) {
   $sql = 'UPDATE book SET bookName = "Moje nová knížka '.$i.'" WHERE bookId = ' . $row['bookId'];
   mysql_query($sql);
   $i++;
}


Sice k tomu budeš mít to číslo, ale stejně to půjde do iframu, takže bych to až tak neřešil. Jinak ten tvůj způsob je také možný, ale zase tak bych to neřešil.

Wladass
Uživatelský avatar
WD Trader: 4.43/5

Příspěvky: 2134
Registrace: 13.09.2011
No to se mi právě nechce takhle si kazit url u všech, pokud mám cca 100k záznamů a "jen" 6k jsou duplicitní názvy tak to oželím, ale nechce se mi kazit si všechny.
Teď mě napadlo řešení ze si duplicitní záznamy vyexportuju do jiný tabulky a na tu tohle aplikuju abych si nezprasil záznamy, který nejsou duplicitní. Díky.

Pro plnohodnotné využívání fóra, vč. psaní příspěvků se musíte registrovat nebo se přihlásit.
Registrovat se nebo Přihlásit se