Kezdőoldal » Számítástechnika » Programozás » Egyforma értékek tárolásának...

Egyforma értékek tárolásának gátlása az adatbázisban?

Figyelt kérdés

PHP-val és MySQL-lal gyakorlásképpen gondoltam csinálok egy kis tartalomkezelő rendszert. Eddig minden jól is ment, de most elakadtam...


Azt szeretném megvalósítani, hogy minden oldalhoz tartozzon egy "slug", ami ugye az url-ben van (pl. xy.hu/valami -> itt a slug a "valami"). Viszont ha esetleg több oldalnak is a valamit adják meg, akkor legyen valami-2, valami-3 és így tovább


Ehhez részben én írtam, részben pedig stackoverflow-ról szedtem kódot: [link]


Szóval így néz ki a funkció, ami megnézi hogy az adott slug már használatban van-e:


function slug_exist($s) {

$checkslug = $db->prepare('SELECT COUNT(*) FROM content WHERE slug = ?');

$checkslug->execute(array($s));

$slugnum = (int) $checkslug->fetchColumn();

if($slugnum !== 0) {

return false;

}

}


Így pedig a while loop, ami addig keres amíg nem talál egy szabad slugot:


$i = 1;

$baseSlug = $slug;

while(slug_exist($slug)) {

$slug = $baseSlug."-".$i++;

}


Valami mégsem jó, a while-nál megakad minden, pedig a phpcodechecker.com nem ír hibát. Mikor kiszedtem a funkción belülről a kódot és megnéztem hogy mennyit ad vissza a fetchColumn(), ott 1 volt, aminek jónak is kéne lenni. Ha valakinek van ötlete, hogy mi lehet a baj, megköszönném :)



2016. aug. 11. 19:04
 1/6 anonim ***** válasza:

Nem kéne egy return true is a függvényedbe véletlenül? :)


Vagy:

return 0 < $slugnum;

2016. aug. 11. 19:18
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

if($slugnum !== 0) {

return false;


Olvasd ezt össze a függvény nevével és rájöhetsz.

2016. aug. 11. 19:19
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:
Volt már csak true, csak false, true és false de sehogy sem ment.
2016. aug. 11. 19:21
 4/6 A kérdező kommentje:

#2: basszus, a sok variációban véletlen . De még mindig nem jó, így se:

function slug_exist($s) {

$checkslug = $db->prepare('SELECT COUNT(*) FROM nsh_content WHERE slug = ?');

$checkslug->execute(array($s));

$slugnum = (int) $checkslug->fetchColumn();

if($slugnum !== 0) {

return true;

} else {

return false;

}

}

2016. aug. 11. 19:24
 5/6 A kérdező kommentje:
Azzal ne foglalkozzatok, hogy content vagy nsh_content :)
2016. aug. 11. 19:25
 6/6 A kérdező kommentje:

Végül sikerült :) A function-on belülről lemaradt a global $db;

Köszönöm a segítséget :)

2016. aug. 11. 22:52

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!