Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проверка пользователя по базе данных MySQL
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Проверка пользователя по базе данных MySQL

Страниц (1): [1]
 

1. Haraikia - 15 Декабря, 2020 - 02:03:59 - перейти к сообщению
Помогите пожалуйста, никак не могу разобраться, код не работает, постоянно выводит только Купите HYDRA чтобы...
А нужно чтобы если он покупал не OVERLORD ему выводило "Купить за"
Или если при покупке OVERLORD он покупал HYDRA (это можно взять из базы), то он мог купить OVERLORD, а если не покупал, то не мог
Вот весь код:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include "../lib/configbg.php";
  3.  
  4. if (isset($_POST['group']) && isset($_POST['nickname']) && $_POST['nickname'] != '' && isset($_REQUEST['checkprice'])) {
  5.  
  6.     $promo = 0;
  7.     if (isset($_POST['promocode'])) {
  8.         $promos = mysqli_query($conDB, 'SELECT * FROM `promo` WHERE `promo`="'.$_POST['promocode'].'"');
  9.         while ($p = mysqli_fetch_assoc($promos)) {
  10.             $promo = $p['sale'];
  11.         }
  12.     }
  13.  
  14.     if (isset($_POST['group'])) {
  15.  
  16.         $groups = $_POST['group'];
  17.  
  18.         $adds = mysqli_query($conDB, 'SELECT * FROM `donate` WHERE `group`="'.$groups.'"');
  19.         while ($row = mysqli_fetch_assoc($adds)) {
  20.             $type = $row['type'];
  21.             $price = $row['price'];
  22.             $name = $row['name'];
  23.  
  24.             if ($type == 'perm') {
  25.                 $sumAdds = mysqli_query($conDB, 'SELECT * FROM `buy` WHERE `type`="perm" AND `name`="'.$_POST['nickname'].'"');
  26.                 while ($rowSum = mysqli_fetch_assoc($sumAdds)) {
  27.                     $price = $row['price'];
  28.                     $price = $row['price'] - $rowSum['sum'];
  29.  
  30.                     if ($price < 1) { $price = $row['price']; }
  31.                 }
  32.             }
  33.         }
  34.      
  35.         if ($promo != 0) {
  36.             $price = $price - (($promo * $price) / 100);
  37.         }
  38.  
  39.         $proverka = mysqli_query($conDB, 'SELECT * FROM `buy` WHERE `name` = "'.$name.'" AND `data` = "hydra"');
  40.         if(mysqli_num_rows($proverka) < 1) {
  41.             echo '<a>Приобретите HYDRA для покупки OVERLORD</a>';
  42.         }
  43.  
  44.         else {
  45.         if($groups != 'overlord');
  46.         if($price > 0) {
  47.             $url = 'https://выпилено.нафиг/pay/ключ?sum='.$price.'&account='.$_POST['nickname'].'.'.$groups.'&signature='.getFormSignature(($_POST['nickname'].'.'.$groups), 'Покупка '.$name, $price, 'ключ2').'&desc=Покупка '.$name;
  48.  
  49.             echo '<input type="submit" value="Купить за '.$price.' руб." class="btn bnt-new btn-lg btn-block">';
  50.         } else {
  51.             echo '<button type="submit" class="btn bnt-new btn-lg btn-block disabled">Слишком низкая цена</button>';
  52.             //header('Location: /');
  53.         }
  54.     }
  55. }
  56.  
  57. } else {
  58.     //echo '<button type="submit" class="btn bnt-new btn-lg btn-block disabled">Заполните данные</button>';
  59.     //echo '<button type="submit" class="btn bnt-new btn-lg btn-block disabled">'.$_POST['checkprice'].'</button>';
  60.     //header('Location: /');
  61.  
  62.     $promo = 0;
  63.     if (isset($_POST['promocode'])) {
  64.         $promos = mysqli_query($conDB, 'SELECT * FROM `promo` WHERE `promo`="'.$_POST['promocode'].'"');
  65.         while ($p = mysqli_fetch_assoc($promos)) {
  66.             $promo = $p['sale'];
  67.         }
  68.     }
  69.  
  70.     if (isset($_POST['groupsoup'])) {
  71.  
  72.         $groups = $_POST['group'];
  73.  
  74.         $adds = mysqli_query($conDB, 'SELECT * FROM `donate` WHERE `group`="'.$groups.'"');
  75.         while ($row = mysqli_fetch_assoc($adds)) {
  76.             $type = $row['type'];
  77.             $price = $row['price'];
  78.             $name = $row['name'];
  79.  
  80.             if ($type == 'perm') {
  81.                 $sumAdds = mysqli_query($conDB, 'SELECT * FROM `buy` WHERE `type`="perm" AND `name`="'.$_POST['nickname'].'"');
  82.                 while ($rowSum = mysqli_fetch_assoc($sumAdds)) {
  83.                     $price = $row['price'];
  84.                     $price = $row['price'] - $rowSum['sum'];
  85.  
  86.                     if ($price < 1) { $price = $row['price']; }
  87.                 }
  88.             }
  89.         }
  90.      
  91.         if ($promo != 0) {
  92.             $price = $price - (($promo * $price) / 100);
  93.         }
  94.  
  95.         if ($price > 0) {
  96.             header('Location: https://выпилено.нафиг/pay/ключ1?sum='.$price.'&account='.$_POST['nickname'].'.'.$groups.'&signature='.getFormSignature(($_POST['nickname'].'.'.$groups), 'Покупка "'.$name.'"', $price, 'ключ2').'&desc=Покупка "'.$name.'"');
  97.         } else {
  98.             header('Location: /');
  99.         }
  100.     }
  101. }
  102.  
  103. function getFormSignature($account, $desc, $sum, $secretKey) {
  104.     $hashStr = $account.'{up}'.$desc.'{up}'.$sum.'{up}'.$secretKey;
  105.     return hash('sha256', $hashStr);
  106. }
2. Vladimir Kheifets - 15 Декабря, 2020 - 11:32:01 - перейти к сообщению
Haraikia пишет:
Помогите пожалуйста, никак не могу разобраться, код не работает, постоянно выводит только Купите HYDRA чтобы...

Добрый день!
1. Вероятно, проблема в том, что в начале, по запросу выбирается несколько строк с $row['name']
После while переменой $name присваивается последнее из выбранных значений.
Возможно, что в следующем запросе для этого значения $name проверка не проходит.
Спойлер (Отобразить)
2.Советую Вам переосмыслить дествительно ли во всех запросах необходимо вибирать все поля таблицы
т.е писать SELECT * FROM...
Если требуется проверить наличие записи, лучше в запросе вместо * поставить 1 и добавить Limit 1
это будет работать быстрее.
3.Если запрос не работает, смотрите $query и mysqli_error.
Удачи!
3. Haraikia - 15 Декабря, 2020 - 20:53:47 - перейти к сообщению
Vladimir Kheifets пишет:
Haraikia пишет:
Помогите пожалуйста, никак не могу разобраться, код не работает, постоянно выводит только Купите HYDRA чтобы...

Добрый день!
1. Вероятно, проблема в том, что в начале, по запросу выбирается несколько строк с $row['name']
После while переменой $name присваивается последнее из выбранных значений.
Возможно, что в следующем запросе для этого значения $name проверка не проходит.
Спойлер (Отобразить)
2.Советую Вам переосмыслить дествительно ли во всех запросах необходимо вибирать все поля таблицы
т.е писать SELECT * FROM...
Если требуется проверить наличие записи, лучше в запросе вместо * поставить 1 и добавить Limit 1
это будет работать быстрее.
3.Если запрос не работает, смотрите $query и mysqli_error.
Удачи!

Спасибо!

 

Powered by ExBB FM 1.0 RC1