MYSQL - Ha az adat már megtalálható az adatbázisban
Eddig mindig Google barátomat használtam, hasonló problémákra, de most úgy gondoltam kérek egy kis segítséget a seo fórumot látogató programozóktól::thumbup1:
Azt szeretném, hogy az űrlapom vizsgálja meg, hogy egy adat szerepel e már az adatbázisban és ha igen, akkor hibát írjon ki.
Idézet:
function cimellenor($cim) {
global ....
dologgal próbálkoztam, de összezavarodtam :csib)
le tudnátok írni, mi is kéne ide?
a kereséshez a nevek a következők:
Idézet:
"SELECT cim FROM linkek WHERE cim = '$cim'";
a hiba kiírása:
Idézet:
} else if (!cimellenor($_POST['cim'])) {
$hibauzenet = "Az oldal már szerepel az adatbázisban!";
Előre is köszönöm a segítséget!
re: MYSQL - Ha az adat már megtalálható az adatbázisban
PHP kód:
<?php
function ellenor($adat){ //nem bkv :)
$sql = mysql_query("select count(*) from linkek where cim = '$adat'");
if($sql>0){
return false; //ha van ilyen az adatbazisban
}else{
return true; //nincs meg ilyen az adatbazisban
}
}
?>
re: MYSQL - Ha az adat már megtalálható az adatbázisban
Hát Geri, ez így nem jó, mert a mysql_query true/resourceID-val vagy false-al tér vissza.
http://hu.php.net/mysql_query
Jobb konkrétan rákeresni, hogy benne van-e
Idézet:
select id from linkek where cim = '$adat'
majd:
mysql_num_rows()
és ha 0-t ad vissza akkor küldhet vissza az "ellenor" trure / false értéket.
LILI, túrj bele a manualba, olvass át minden adatbázis függvényt, de legalább egyszer nézd meg mielőtt használod.
re: MYSQL - Ha az adat már megtalálható az adatbázisban
ok, köszönöm próbálkozom!
re: MYSQL - Ha az adat már megtalálható az adatbázisban
tehát a végleges
PHP kód:
<?php
function ellenor($adat){ //nem bkv :)
$vane = mysql_fetch_row(mysql_query("select ID from linkek where cim = '".mysql_real_escape_string($adat)."' limit 1"));
if ($vane){
return true; //ha van ilyen az adatbazisban
}else{
return false; //nincs meg ilyen az adatbazisban
}
}
?>
re: MYSQL - Ha az adat már megtalálható az adatbázisban
igazatok van. :) asszem reggel nem kellene tanacsokat osztogatnom, mert nem vagyok formaban :)
re: MYSQL - Ha az adat már megtalálható az adatbázisban
Én így használom :)
PHP kód:
$van = mysql_result(msql_query("SELECT COUNT(*) FROM linkek WHERE cim = '$adat'"), 0);
Én jelenlegi tudásom szerint ez a leggyorsabb módja, hogy lekérdezd van-e ilyen adatod az adatbázisban. Persze pár száz, ezer soros táblánál semmi jelentősége, hogy melyiket használod, mert nem érezni a különbséget.
Ha meg mindenképpen mysql_num_rows-t akarsz használni akkor dobj bele egy limitet, hogy ne túrja végig az egész táblát azután, hogy megtalálta amit kerestél:
PHP kód:
$van2 = mysql_num_rows(mysql_query("SELECT id FROM linkek WHERE adat = '$adat' LIMIT 1"))
K :jolegy)
re: MYSQL - Ha az adat már megtalálható az adatbázisban
Én tömörebben írnám. Nem kell a szószaporítás. :001_smile:
Idézet:
AlBrown eredeti hozzászólása
tehát a végleges
PHP kód:
<?php
function ellenor($adat){ //nem bkv :)
return mysql_fetch_row(mysql_query("select ID from linkek where cim = '".mysql_real_escape_string($adat)."' limit 1")) !== false;
}
?>
re: MYSQL - Ha az adat már megtalálható az adatbázisban
no nálam a fenti példák nem adnak hibát akkor sem ha már létezik az adat
Idézet:
function cimellenor($cim){ //nem bkv :)
$vane = mysql_num_rows(mysql_query("SELECT azonosito FROM linkek WHERE cim = '$cim' LIMIT 1"));
if ($vane){
return true; //ha van ilyen az adatbazisban
}else{
return false; //nincs meg ilyen az adatbazisban
}
}
ez meg mindenre hibát ad:
Idézet:
function cimellenor($cim)
{
$result = mysql_query ("SELECT * FROM linkek WHERE cim = '$cim'");
if (!$result) {
die(mysql_error());
}
}
??
re: MYSQL - Ha az adat már megtalálható az adatbázisban
PHP kód:
function cimellenor($cim){ //nem bkv
$sql = mysql_query("SELECT cim FROM linkek WHERE cim = '$cim' LIMIT 1");
$result = mysql_num_rows($sql);
if ($result>0){
//echo "VAN ILYEN";
return true; //ha van ilyen az adatbazisban
}else{
//echo "NINCS ILYEN";
return false; //nincs meg ilyen az adatbazisban
}
}
probald ezzel. a hibat az okozhatta hogy az elnevezesek nalad masok. de gondolom cim nevu oszlop van a tablaban