Помогите с php cod'ом.

S
На сайте с 24.12.2007
Offline
85
445

Здравствуйте.

Столкнулся с проблемой.

Нужно составить пхп код, который бы исполнял такую функцию:

Если есть запись в поле БД, то выбрать ее, если нет записи - создать ее.

Пример тут - http://www.okino.org/films/view/no_reservations-id13987.html (графа - Режиссёр: Скотт Хикс)

То есть, надо, чтобы при вводе, к примеру имени режиссера, если он уже есть, то просто был выбор из списка, если нет - то создавалась страница.

[Удален]
#1

$q = "SELECT COUNT(*) FROM table WHERE name='Василий'";
$res_Q = mysql_query($q, $con);
$num = mysql_result($res_Q, 0, 0);
if ($num == 0) // нет записей
{ // создаем
$q = "INSERT INTO table (name) VALUES ('Василий')";
$res_Q = mysql_query($q, $con);
if (!$res_Q)
print mysql_errno() . " :: " . mysql_error();
}
elseif ($num > 0)
{ // выбираем
$q = "SELECT * FROM table WHERE name='Василий'";
$res_Q = mysql_query($q, $con);
while ($r = mysql_fetch_array($res_Q))
{ делаем что нужно с записью }
}

типа этого что то? )

S
На сайте с 24.12.2007
Offline
85
#2

So1, такого плана, но имя должно выбираться из поля ввода, а не указываться в самом скрипте.

a.fatman
На сайте с 15.01.2006
Offline
127
#3

So1, первую выборку SELECT COUNT можно выкинуть.

Сделать просто SELECT, если выбрано 0 рядов -- то делать INSERT.

S
На сайте с 24.12.2007
Offline
85
#4

a.fatman, я не силен в пхп. Не подскажите, как сделать правильно, чтобы не испортить БД.

[Удален]
#5
stakh:
So1, такого плана, но имя должно выбираться из поля ввода, а не указываться в самом скрипте.

Ну так AJAX и вместо Василия переменная $v... Можно и без AJAX'а...

a.fatman, можно - я сейчас просто не могу логично думать ибо пью много воды (диагноз: обезвоживание и заспиртовывание организма)

:)

So1 добавил 20.12.2008 в 14:42

stakh:
a.fatman, я не силен в пхп. Не подскажите, как сделать правильно, чтобы не испортить БД.

БД Вы не испортите - удалять же Вы ничего не собираетесь и апдейтить тоже, а если лишнего подобавляете - в phpMyAdmin можно всегда удалить - тут даже PHP знать не надо :)

LiteCat
На сайте с 03.05.2007
Offline
240
#6

Только имейте в виду, если это очень сильно нагруженный сайт, может из-за многопоточности вставить несколько записей сразу (2 потока одновременно проверят что нет записи, и одновременно вставят). Если сайт нагруженный, сделайте транзакцию.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий