[PHP][MySQL] sprawdzanie rekordu w bazie


(felixik) #1

Witam, powoli rozwijam swój edytor. W tej chwili chciał zrobić sprawdzanie rekordów czy nie są już dodane. Robię to tak:

if ($akcja == "dodaj_pliki")

{

$pliki = $_POST['pliki'];

if(empty($pliki))

{

echo '';

}

$q = mysql_query("SELECT plik FROM pliki WHERE plik='$pliki'") or die(mysql_error());

$e = mysql_fetch_array($q);

if ($e[0])

{

echo '';

}

}

W bazie wygląda to tak: id plik nazwa 1 index.php index i za ciężkiego groma powyższy kod nie chce wypluć błędu jak zaznaczę jeszcze raz do dodania plik index.php a zamiast błędu wypluwa

Unknown column 'plik' in 'field list'

. Z tym, że ta kolumna istnieje. Proszę o pomoc

Z góry dziękuję


(mordesku) #2
$pliki = $_POST['pliki'];

Co do problemu z “Uknown column” to mógłbyś wrzucić tutaj dump struktury Twojej tabeli?

Czy wartość $_POST[‘pliki’] jest brana z pola typu “text” czy typu “file”, jeśli z “file” to nie możesz korzystać w tedy z tablicy $_POST tylko $_FILES?


(felixik) #3

typu text, to nie jest z formularz z uploadem


(mordesku) #4

polecam założenie indexu UNIQUE na kolumnie plik, wtedy mysql nie pozwoli dodać drugiego takiego samego rekordu rzucając stosownym błędem. Co do błędu o nieznanej kolumnie, jeśli mysql twierdzi że jej nie ma to pewnie tak jest (w linuksie duże i małe litery mają znaczenie). Sprawdź do jakiej bazy danych i tabeli się odwołujesz może podpiąłeś się do jakieś archiwalnej wersji albo coś takiego.


(felixik) #5

po zmianach lekkich mam pustą stronę

$q = mysql_query("SELECT * FROM pliki WHERE plik='$pliki'") or die(mysql_error());

(mordesku) #6

nie znając struktury danych nie potrafię Ci pomóc.


(felixik) #7

Proszę

CREATE TABLE IF NOT EXISTS `pliki` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `plik` varchar(255) NOT NULL,

  `nazwa` varchar(255) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;


--

-- Zrzut danych tabeli `pliki`

--


INSERT INTO `pliki` (`id`, `plik`, `nazwa`) VALUES

(1, 'admin.php', 'admin'),

(2, 'edytor.php', 'edytor'),

(3, 'index.php', 'index'),

(4, 'pomoc.php', 'pomoc');

(batmomobil) #8

Zrób tak jak pisał kolega: mordesku nałóż w bazie index UNIQUE na kolumnie ‘plik’,a tak bym sprawdził:

$q = mysql_query( 'SELECT * FROM pliki WHERE plik = "'.$plik.'"'); 

 if(mysql_num_rows($q) >0) { header('Location: index.php');//jeśli istnieje w bazie to: przekierowanie

            } else {jeśli nie istnieje dodaje do bazy to:zapis

(felixik) #9

niestety kod powyższy nie działa oto cały kod. Może coś pomoże

$select = mysql_query( 'SELECT * FROM pliki WHERE plik = "'.$plik.'"');

if(mysql_num_rows($select) >0)

{

echo '';

}

else

{

$usun=mysql_query("TRUNCATE $tbl_pliki") or die(mysql_error());

for ($i=0, $s = count($pliki); $i < $s; $i++)

{

$names[] = pathinfo($pliki[$i], PATHINFO_FILENAME);


$result=mysql_query("INSERT INTO $tbl_pliki (plik, nazwa) values ('$pliki[$i]', '$names[$i]')") or die(mysql_error());

}

}


if($result)

{

echo "";

}

else

{

echo "";

}

}