Ответы пользователя по тегу MySQL
  • Как правильно составить MySQL запрос?

    Попробуйте заменить mysqli_fetch_array на mysqli_fetch_assoc . Первый имеет свойство дублировать данные.
    Ответ написан
  • Как составить SQL Запрос для фильтрации по трем таблицам?

    Можно вот так:
    SELECT s.server_name FROM mod_name m LEFT OUTER JOIN(
        SELECT m_mod, m_serv FROM server_mod
    ) q ON q.m_mod = mod_id 
    LEFT OUTER JOIN(
        SELECT server_id, server_name FROM servers
    ) s ON s.server_id = q.m_serv WHERE mod_id = 5


    sqlfiddle
    Ответ написан
    Комментировать
  • Как сделать чтоб для своей картинке выводилось свое кол-во просмотров?

    Что-то мало данных, а ещё они двоятся почему-то.
    Давай вот так попробуем делать:
    <?php
    $shablon = mysqli_query($connection, "SELECT * FROM `videos` WHERE "); 
    while($vidos = mysqli_fetch_assoc($shablon)){
    ?>
           <ul> 
                <li> 
            <div class="videos_image"> 
                <a href="shablon.php?id=<?php echo $v['id']; ?>"><img  src="/media/images/<?php echo $v['img']?>" width="250" height="180"  alt="<?php echo $v['title']?>" /></a>
                <div id="videos_image">
                  <img src="/media/views.png" id="views" />
                  <span class="videos_views"><?php echo $vidos['views'] ?></span>
                </div>
            </div> 
             <?php 
                    if (empty($videos)) die('В базе нет никаких картинок или запрос кривой'); 
                  ?> 
            <div class="videos_title"> 
              <span class="title_alt"><?php echo mb_substr($v['title'], 0, 26, 'utf-8') . '...';?> </span>
            </div>
                </li> 
              </ul> 
    <?}?>
    Ответ написан
  • Как вывести запись по определённому совпадению?

    $myrow = mysql_num_rows($result);
      if ($myrow == 1){
        $_SESSION['login'] = $myrow['login'];
        $_SESSION['id'] = $myrow['id'];
    }

    Тут ошибка. В $myrow хранится единица и следовательно $myrow['login']; и $myrow['id']; - не существуют и в сессию ничего не пишется.
    Сделайте так:
    $row = mysql_fetch_array($result);
      $myrow = mysql_num_rows($result);
    
      if ($myrow == 1){
        $_SESSION['login'] = $row['login'];
        $_SESSION['id'] = $row['id'];
    }

    Я вам вроде бы верный вариант в конце давал.
    А дальше так, как вам показали
    $sql = "SELECT * FROM `Account` WHERE `id_client` = ". (int) $_SESSION['id'];
    Ответ написан
    8 комментариев
  • Почему запрос ajax jQuery не работает?

    Так работает. Но есть замечания по коду, но это после.
    <div id="tmenu" class="ui_tmenu">hi</div>
            <form id="test" name="login" method="post">
                <div class="label"> Логин </div>
                <div class="i_a_i">
                  <input name="name" type="text" class="inp_auth">
                </div>		
                <div class="label"> Пароль </div>
                <div class="">
                  <input name="pass" type="text" class="inp_auth">
                </div>
            </form>
            <button class="btn_auth">Войти</button>
            <button class="btn_auth b_a_i">Регистрация</button>

    js я использовал больше jquery.
    $('.btn_auth').click(function(){
      document.getElementById("tmenu").innerHTML='ok';
      var msg = $('#test').serialize();
     $.ajax({
         url: "logina.php",
         method: "post",
         data: msg,
         dataType:"json",
         success:  function(data) {
             $('#tmenu').text(data.status);
              
         },
       error: function() { document.getElementById("tmenu").innerHTML='err';
              
         }
     });
    });

    php:
    require_once 'dy_functions.php';
      
      if (isset($_POST['name'])){
        $login = sanitizeString($_POST['name']);
        $pass = sanitizeString($_POST['pass']);
        
        if ($login == "" || $pass == ""){
          $error = "Данные введены не во все поля";
        }else{
          $result = queryMysql("SELECT login,pass FROM customer WHERE login='$login' AND pass='$pass'");
          if($result->num_rows == 0){
            $error = "Ошибка при вводе пары имя пользователя - пароль";
          }else{
            $_SESSION['name'] = $login;
            $_SESSION['pass'] = $pass;
            $error = "все прошло успешно";
          }
        }
        $data = array("status" => $error);
        echo json_encode($data);
      }


    А теперь замечания. Ставьте фигурные скобки на той же строчке пожалуйста, не нужно их выносить в отдельную строку и вам скажут спасибо. Второе, не используйте стандартный драйвер для работы с базой, используйте PDO. И третье, выносите кнопки за пределы формы, если работаете с ajax.
    Ответ написан
  • Не работает условие PDO mysql в ajax?

    Зачем вы дергаете данные из базы, когда вам достаточно просто посчитать сколько строк удовлетворяет условию?
    $query = $pdo->prepare('SELECT COUNT(*) FROM users WHERE login = :login AND password = :password');
    $query->execute(array(':login'=>$login, ':password' =>$password));
    if($query->fetchColumn() == 1){
       echo "wer";
      }
      else
      {
        echo "newer";
    }

    А теперь перейдем к сути вот что в итоге получилось:
    <!--Я сделал небольшую форму, для тестирования. 
    Вы ведь делаете авторизацию, значит данные будут вводится в форму -->
    <form class="aut-form" method="post">
            <input name="login" type="text" placeholder="логин">
            <input name="password" type="password" placeholder="пароль">
    </form>
    <div id="information"></div>
    <input id="load" type="submit" placeholder="отправить">

    function funcBeore () {
            $('#information').text ('Ожидаенние');
          }
          $(document).ready (function(){
            $("#load").bind("click", function(){
              var dataAjax = $('.aut-form').serialize(); // пример заточен под использование формы
              $.ajax({
                url: "check_login.php",
                type: "POST",
                data: "data=''&" + dataAjax,
                dataType: 'html',
                beforeSend: funcBeore,  
                success: function (data){
                  alert(data);
                  if(data == "wer"){
                    $('#information').text(data);
                  }
                }
              });
            });
          });

    И конечно же сервер.
    if(isset($_POST['data'])){
      $login = $_POST['login'];
      $password = $_POST['password'];
      $query = $pdo->prepare('SELECT COUNT(*) FROM users WHERE login = :login AND password = :password');
      $query->execute(array(':login'=>$login, ':password' =>$password));
    if($query->fetchColumn() == 1){
        echo "wer";
      }else{
        echo "newer";
      }
    }


    Код протестирован и прекрасно работает.
    Ответ написан
    9 комментариев
  • Как определить ряд по столбцу "b", если до этого я выводил столбец "a"?

    А разве id не принято делать уникальным и автоназначаемым? Можно же выводить и его и обращаться по уникальному идентификатору. Вообще нужно выводить уникальное значение по которому, в последующем, можно обратиться к базе данных.
    Можно сделать в виде формы:

    if(isset($_SESSION['steamid'])) {
    $stmt = $pdo->prepare('SELECT * FROM St***');
    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_LAZY))
    {
        echo '<form method ="post">'; 
        echo   '<input hidden="hidden" type="text" name="dataid" value='.$row['Steam_id'].'>';
        echo   '<input class="btn btn-default" type="submit" name="clickfornotice" value='.$row['Nickname'].'>';
        echo '</form>';
    }
    }

    При клике на кнопку, отправляете данные скрытого поля и на стороне сервера принимаете, и делаете свои дела.

    UPD
    Ещё могу предложить вариант сделать кнопку через с собственным атрибутом data- в который помещается Steam_id. При клике, js вылавливает значение атрибута и аяксом отправляет на сервер, где вы с ним уже работаете. Это позволит уменьшить саму разметку, но увеличит код js.
    Ответ написан
    2 комментария
  • Как Вывести из БД Mysql только первые символы?

    Я обычно как-то так делаю.
    $str_len = strlen($row['text']);
    if ($str_len > '30'){
    	$row['text'] = mb_substr($row['text'], 0, 30);
    $i=strlen(trim($row['text']));
    $s = false;
                while($s && $i>0) {
                    if (mb_substr($row['text'], $i-1, 1)==' ')
                        $s = true;
                    $row['text'] = mb_substr($row['text'], 0, -1);
                    $i--;
                }
    }
    Ответ написан
  • Шифрование паролей, или как узнать контрольную сумму для сравнения?

    эм.. в примере используется md5, он не расшифровывается. Всё что может сделать программист это передать пароль на сервер, где он будет зашифрован так же в md5, а после полученное значение сравнивается с тем которое есть в базе. Если такой логин и зашифрованный пароль есть, то впускают клиента, если нет то сорян.
    Однако пример морально устарел, и целесообразней вместо md5 использовать это:
    Hashing Функции
    Просто используйте PDO для подключения к mysql.
    PDO официальная документация
    Ответ написан
    Комментировать
  • Как вывести массив из функции?

    Я запустил ваш код, только без функции get_submenu.
    В базу залил 10 строк с параметром parent = none.
    Код вывел все 10 строк.
    Однако. Вы видели какой массив возвращает ваша функция? Это ужасно.
    array(10) {
      [""]=>
      array(8) {
        [0]=>
        string(1) "1"
        ["id"]=>
        string(1) "1"
        [1]=>
        string(7) "asdasdf"
        ["tittle"]=>
        string(7) "asdasdf"
        [2]=>
        string(11) "dsfdfdfdsfd"
        ["link"]=>
        string(11) "dsfdfdfdsfd"
        [3]=>
        string(4) "none"
        ["parent"]=>
        string(4) "none"
      }

    массив можно привести к нормальному виду используя mysql_fetch_assoc вместо mysql_fetch_array.
    вот результат вывода
    array(10) {
      [""]=>
      array(4) {
        ["id"]=>
        string(1) "1"
        ["tittle"]=>
        string(7) "asdasdf"
        ["link"]=>
        string(11) "dsfdfdfdsfd"
        ["parent"]=>
        string(4) "none"
      }
    Ответ написан
    5 комментариев