Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Открыть новую тему     Написать ответ в эту тему

zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 

Цитата:
нет смысла.

 
Но это работает

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 21:43 17-08-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как просмотреть сообщение об ошибке (mysql_errno()==1062) в разборчивой форме
 
Я пытался с "elseif", но это не работает
 
Просмотреть первое "else"
 
 

Код:
if($result){
          echo '<div class="alert alert-success alert-dismissible fade show" role="alert">
          <strong>Success!</strong> Your entry has been submitted successfully!
          <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&#215;</span>
          </button>
        </div>';
        }
        elseif (mysql_errno()==1062) {
              echo '<div class="alert alert-danger alert-dismissible fade show" role="alert">
          <strong>Error!</strong> Record present in database
          <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&#215;</span>
          </button>
        </div>';
           }

 
 

 
Оригинальный код
 
 

Код:
// Create a connection
      $conn = mysqli_connect($servername, $user, $password, $database);
      // Die if connection was not successful
      if (!$conn){
          die("Sorry we failed to connect: ". mysqli_connect_error());
      }
      else{  
        // Submit these to a database
        // Sql query to be executed  
          $sql = "INSERT INTO `contact_us` (`username`, `email`, `desc`) VALUES ('$username', '$email', '$desc')";
        $result = mysqli_query($conn, $sql);
 
        if($result){
          echo '<div class="alert alert-success alert-dismissible fade show" role="alert">
          <strong>Success!</strong> Your entry has been submitted successfully!
          <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&#215;</span>
          </button>
        </div>';
        }
        else{
            // echo "The record was not inserted successfully because of this error ---> ". mysqli_error($conn);
            echo '<div class="alert alert-danger alert-dismissible fade show" role="alert">
          <strong>Error!</strong> We are facing some technical issue and your entry ws not submitted successfully! We regret the inconvinience caused!
          <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&#215;</span>
          </button>
        </div>';
        }

 
Добавлено:
Решено
 

Код:
 
elseif (mysqli_errno($conn)==1062){
              echo '<div class="alert alert-danger alert-dismissible fade show" role="alert">
          <strong>Error!</strong> Record present in database
          <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&#215;</span>
          </button>
        </div>';
           }
 

 
Я хотел бы просмотреть сообщение об ошибке:
 
Просмотреть, какие дубликаты записей присутствуют в базе данных
 
   
 
   
 
 
 
Добавлено:
Решено
 

Код:
 
 
elseif (mysqli_errno($conn)==1062){
              echo '<div class="alert alert-danger alert-dismissible fade text-center show" role="alert">
          <strong>Error!</strong> Record present in database
          <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&#215;</span>
          </button>
        </div>';
       
        $select = mysqli_query($conn, "SELECT * FROM contact_us WHERE username = '".$_POST['username']."'");
        mysqli_num_rows($select);
            echo'<div class="alert alert-warning alert-dismissible fade text-center show" role="alert">
                  <strong>Error!</strong> This username <b style="color:blue;">' . $username . '</b> is already used!
                  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                    <span aria-hidden="true">&#215;</span>
                  </button>
                </div>';
       
        $select2 = mysqli_query($conn, "SELECT * FROM contact_us WHERE email = '".$_POST['email']."'");
        mysqli_num_rows($select2);
            echo'<div class="alert alert-warning alert-dismissible fade text-center show" role="alert">
                  <strong>Error!</strong> This email <b style="color:blue;">' . $email . '</b> is already used!
                  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                    <span aria-hidden="true">&#215;</span>
                  </button>
                </div>';
         
           }
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:54 18-08-2022 | Исправлено: zagorisback, 13:36 18-08-2022
Samovarov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
Зачем еще один запрос?
 
Если база кинула исключение, что такое имя или почта существует и они лежат у тебя в GET, то просто выведи их в сообщении
 
Вообще, обычно, сначала проверяют на уникальность, а потом пытаются добавить.
 
Ну и запрос на существование может быть менее ресурсоёмким. Используй лимиты и точное указание колонки
 
 
Типа "SELECT username FROM contact_us WHERE username = '".$_POST['username']."' limit 1"
 
 
Ну и задавать таким образом параметры в запросе, из глобальной переменной да без всякого экранирования и проверки, это быть взломанным как только кому то это надо будет.

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 15:27 18-08-2022 | Исправлено: Samovarov, 15:27 18-08-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Samovarov
 
 
Правильный код "запроса"
Результат:
 
   
 
Спасибо
 
Я разрабатываю код для загрузки данных с веб -страницы, Код работает, уже протестированный
 
Что мне нужно, и код для поиска данных с сайта, а затем загрузить его, пример названия фильма,
Из названия фильма я захожу на страницу на пленку и выгружаю данные с «анализатором»
Похожая вещь, как IMDB
Я пытаюсь понять, как сделать,  предложения приняты, Все это должно быть выполнено на PHP
 

 
 
 
 
 
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 16:49 18-08-2022 | Исправлено: zagorisback, 19:03 18-08-2022
fanmas



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Подскажите чем заменить ? в регулярном выражении в MySQL. Выражение ^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$ выдает ошибку в sql запросе, прочитал что знак ? не используется в регулярке mysql. Приводит номер телефона в нужный вид, без +, скобок, пробелов и дефисов.

Всего записей: 62 | Зарегистр. 07-07-2005 | Отправлено: 16:00 23-08-2022 | Исправлено: fanmas, 16:01 23-08-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fanmas

Цитата:
в регулярном выражении в MySQL

не нужно использовать регулярные выражения в MySQL, его задача не в этом.
вам нужно приводить к нормальному формату до ввода данных в базу.
что именно вы хотите сделать, откуда, куда, как?
https://dev.mysql.com/doc/refman/8.0/en/regexp.html
причина элементарная - у вас не будут работать индексы, а значит при каждом запросе будут перебираться все записи.

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 22:03 23-08-2022 | Исправлено: Mavrikii, 22:04 23-08-2022
fanmas



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[q][/q]
В таблице1 номер приведен к виду 79991112233, у клиентов номер телефона может быть какой угодно, пишут номера как хотят (другая таблица2). Мне нужно взять номера телефонов из таблицы2 клиентов, привести номер к виду 79991112233 и сравнить с таблицей1.

Всего записей: 62 | Зарегистр. 07-07-2005 | Отправлено: 04:04 24-08-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fanmas
вам нужно номера приводить к одному виду перед тем, как вносите в базу.
создаете доп столбец, в котором сохраните приведенный к общему виду номер, чтобы не проводить эту процедуру много раз.
просто удаляете все, что не относится к цифрам.
можете, в принципе, записать в тот же столбец, но, возможно, это неудобно.
 
UPDATE table SET number_canonical = REGEXP_REPLACE(number, '\D', '');
просто запишет в столбец number_canonical значение столбца number удалив все нецифровые значения.

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 05:21 24-08-2022
fanmas



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
UPDATE table SET number_canonical = REGEXP_REPLACE(number, '\D', '');
просто запишет в столбец number_canonical значение столбца number удалив все нецифровые значения.

Не сработало, при update  значение такое же, как и источника (было +7 (499) 111 1300, стало тоже самое)

Всего записей: 62 | Зарегистр. 07-07-2005 | Отправлено: 09:05 24-08-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fanmas

Цитата:
Не сработало, при update  значение такое же, как и источника  

ок, тогда в лоб
 
REGEXP_REPLACE(number, '[^0-9]', '')

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 09:13 24-08-2022
fanmas



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
REGEXP_REPLACE(number, '[^0-9]', '')

 
Спасибо, так сработало. Проверю в рабочем режиме.

Всего записей: 62 | Зарегистр. 07-07-2005 | Отправлено: 10:30 24-08-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня есть этот код для фильтрации данных из таблицы «DataTables»
это работает, но проблема, которая отображает двойные данные,
 
Этот и один пример поля «tags»
 

Код:
 
Tags:&nbsp;<a href="https://demosite.com/categories/fantasy.html">Fantasy</a>, <a href="https://demosite.com/categories/horror.html">Horror</a>, <a href="https://demosite.com/categories/tv-series.html">Tv Series</a>
 

 
 
Решено

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 12:32 27-08-2022 | Исправлено: zagorisback, 23:46 27-08-2022
fanmas



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет друзья. Можете объяснить floatval(str_replace(",", ".", $val));, все правильно обрабатывает кроме 0 с заяпятой, например 0.(точка)45, будет 0.45, а 0,45 будет пусто.

Всего записей: 62 | Зарегистр. 07-07-2005 | Отправлено: 07:50 30-08-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fanmas
пусто оно не может быть, потому что даже в случае записи в строке $val не числа вообще, floatval вернет 0. так что причина не тут.

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 08:35 30-08-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я должен рассчитать, сколько месяцев и дней прошло с 1 января 2022 года
 
 

Код:
 
 
$var1 = date('2022-09-01'); // этот год
$var2 =  '2022'; // TYPE YEAR, Lenght 4
 
$differ = $var2 - substr($var1, 0, 4);
 
$years = floor($differ / (365*60*60*24));  
$months = floor(($differ - $years * 365*60*60*24) / (30*60*60*24));  
$days = floor(($differ - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));  
 
printf("%d years, %d months, %d days", $years, $months, $days);  
 

 
Код не работает, Внимание, только "Год"

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 19:03 01-09-2022 | Исправлено: zagorisback, 19:43 01-09-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
используйте DateTime, зачем все это?

Код:
$date1 = new DateTime('2022-09-01');
$date2 = new DateTime('2022-01-01');
$interval = $date2->diff($date1);
echo $interval->format('%y years %m months %a days %h hours %i minutes %s seconds');

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 00:16 02-09-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
используйте DateTime, зачем все это?
 

 
Потому что это Type YEAR, Lenght 4
 

Код:
$var2 =  '2022'; // TYPE YEAR, Lenght 4
 

 
и это Type DATE
 
$var1 = date('2022-09-01'); //

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 08:02 02-09-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Потому что это Type YEAR, Lenght 4

и что? дополните строку, указав 1 января. не нужно городить костыли..
это посчитает все точнее, с учетом вискокосности и остального.

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 08:04 02-09-2022 | Исправлено: Mavrikii, 08:05 02-09-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
и что? дополните строку, указав 1 января. не нужно городить костыли..
это посчитает все точнее, с учетом вискокосности и остального.
 

 

Код:
$var2 =  '2022';  
= year  TYPE YEAR, Lenght 4
 

Код:
$var1 = date('2022-09-01'); // этот год
 = date
 
Это и другое - поля, присутствующие в базе данных

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 08:14 02-09-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Это и другое - поля, присутствующие в базе данных

и что??? вы в php считаете разницу или где? не несите чушь..

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 08:15 02-09-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru