имеем код: $uid = $_POST['uid']; $result = mysql_query ("INSERT INTO priemka (uid,data_vremya,masters,type_app,type_z,marka,model,number_k,fio,imei,ser_num,complect,tsena,polomka,zametki,data2,status1,status2,status3,status4) VALUES('$uid','$vremya','$masters','$type_app','$type_z','$marka','$model','$number','$fio','$imei','$serialnumber','$complect','$stoimost','$nepoladka','$zametki','$data2','1','0','0','0')"); if ($result=='TRUE') { echo "<p align=center>Квитанция успешно подготовлена, можно приступать к печати</p></br>"; } else { echo "Что то пошло не так, повторите попытку"; } где переменная UID прилетает по $_POST['uid'] c другого скрипта. Но при обновлении страницы, в базу данных пишется такая же строка с таким же UID. Тут вот вопрос: как сделать так, чтоб после INSERT INTO шла проверка на существование такого же UID (на случай обновления страницы) в базе данных, и если он существует, то выполняем запрос UPDATE вместо INSERT INTO с примерно теми же параметрами что и INSERT. Не могу просто понять где его поставить, и как, примерно как это должно выглядеть?
Ну наверное надо сначала просканить базу, типо если в базе строке с $uid то : PHP: $scan = " ищем в базе while нужный столбец = $uid" ; If($scan){ $result = mysql_query ("UPDATE..."); } If(!$scan){ $result = mysql_query ("INSERT INTO..."); } mysql не знаю, все вольно=)
Ну примерно так: PHP: $uid = $_POST['uid']; $scan = mysql_query (" SELECT 'что то там', FROM 'откуда то там', WHERE нужный столбец = ."'".$uid."'"); if($scan->num_rows() > 0){ $result=mysql_query("UPDATE..."); }else{ $result=mysql_query("INSERT INTO..."); }; if ($result->num_rows() > 0){ echo "<p align=center>Квитанция успешно подготовлена, можно приступать к печати</p></br>"; }else { echo "Что то пошло не так, повторите попытку"; } Я говорю mysql я не знаю, но как то так.
а еще есть совмещенный синтаксис INSERT INTO t () VALUES() ON DUPLICATE KEY UPDATE .... ..... типа если уже есть - то обновим, нет - вставим, но должен быть в бд ключ уникальный по которому и будет происходить проверка
Другое решение - отметь в таблице столбец uid как PRIMARY KEY, а запрос исправить на: PHP: $result = mysql_query ("INSERT INTO priemka (uid,data_vremya,masters,type_app,type_z,marka,model,number_k,fio,imei,ser_num,complect,tsena,polomka,zametki,data2,status1,status2,status3,status4) VALUES('$uid','$vremya','$masters','$type_app','$type_z','$marka','$model','$number','$fio','$imei','$serialnumber','$complect','$stoimost','$nepoladka','$zametki','$data2','1','0','0','0') ON DUPLICATE KEY UPDATE data_vremya='$vremya', ... указать через запятую все поля которые нужно проапдейтить ... status4=0;");
он же UID, который генерируется на предыдущей странице, и прилетает в $_POST (имеет 15 значный набор цифробукв в разном регистре) --- Добавлено --- спасибо вам ребята))). Вот это настоящая помощь
1 строка - Зачем по факту дублировать данные? у тебя переменная уже существует. mysql даже в документации красным выделен УНИЧТОЖЕН. Используй mysqli num_rows() такой функции в расширении не существует. Есть mysqli_num_rows --- Добавлено --- + Все данные пришедшие с внешнего мира, должным образом должны пройти проверку, перед тем как запихивать в запрос