За последние 24 часа нас посетили 18514 программистов и 1708 роботов. Сейчас ищут 863 программиста ...

не сверяет логины с базой

Тема в разделе "PHP для новичков", создана пользователем Евгений_Rus31, 27 май 2011.

  1. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    Есть в базе таблица anketa в которой есть поле Nik. Почему не сверяет вводимый ник с данными в поле Nik и не выводит сообщение такой логин уже есть при обнаружении такой записи.
    Вот код:

    if (!empty($_POST["add"]))
    {
    $on_submit=true;

    if (empty($_POST["Nik"]))
    {
    echo '<center><p>Введите Ник</p></center>';
    $error=true;
    }
    else
    {
    $Nik=$_POST["Nik"];
    // Далее проверяем введенные пользователем данные
    $nick_q = mysql_query("Select Nik From anketa Where nick=".$Nik);

    // Проверка на существование в базе введенного ника
    if(mysql_affected_rows()!==0) // Если такой существует выводим :
    {
    echo '<center><p>Ник существует</p></center>';
    }
    }
    if (empty($_POST["Password"]))
    {
    echo '<center><p>Введите пароль</p></center>';
    $error=true;
    }
    else
     
  2. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    возможно потому что sql хочет чтобы varchar был в кавычках.

    $nick_q = mysql_query("Select Nik From anketa Where nick='".$Nik."'");
     
  3. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    нет не в этом дело! Я этот код отдельно написал всеравно пишет что ник существует хотя его в базе нет!!
    Вот код:
    <?php
    include "config.php"; //подключение к базе "chat"
    $Nik="ddhjjj"; // на самом деле такого ника НЕТ

    // Далее проверяем введенные пользователем данные
    $nick_q = mysql_query("Select Nik From anketa Where nick='".$Nik."'");

    // Проверка на существование в базе введенного ника
    if(mysql_affected_rows()!==0) // Если такой существует выводим :
    {
    echo '<center><p>Ник существует</p></center>';
    }

    else {
    echo '<center><p>Ник существует</p></center>'; }
    ?>
     
  4. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    Опечатка в: else {
    echo '<center><p>Ник НЕ существует</p></center>'; }
    ?>

    но не повлеяло всеравно пишет существует (
     
  5. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    Пробывал по другому методу тоже самое пишет в любом случае ник существует даже если его там нет ((((
    Вот код:
    <?php
    include "config.php";
    $Nik="ddfc";

    $sql = "SELECT Nik FROM anketa WHERE Nik='".$Nik."'";
    $result = mysql_query($sql);
    if ($result !='')
    {print "Ник существует";}
    else{
    print "Ник не существует";
    }

    ?>


    Помогите найти ошибку плс
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    if (mysql_num_rows($result) > 0)
     
  7. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    tommyangelo спс большое! Метот очень помог! Я тут тоже перекрутил и заработало правдо наверное это плохой тон и меня засмеют, но главное заработало ))))
    Вот код:

    <?php
    include "config.php";
    $Nik="dd"; // любое другое имя даст ответ: Ник не существует
    $res = mysql_query ("SELECT Nik FROM anketa WHERE Nik='".$Nik."'");
    $result = mysql_fetch_array($res);
    if (!$result)
    {print "Ник не существует";}
    else
    {
    print "Ник существует";
    }
    ?>
     
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Нормальный, особенно если выводить вместо

    else
    {
    print "Ник существует";
    }



    else
    {
    print "Найденный ник - " . $result['Nik'] ;
    }
     
  9. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    Это то да но мне это не нужно я же это для примера у меня else и дальше запист ника в БД. Я ток начинаю и у меня детский вопросик для чего нужен: mysql_query
    Кстати в tommyangelo примере если его добавить перед select не работает код! а в случае массива наоборот если убрать то работать не будет!
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    http://ua.php.net/manual/ru/function.mysql-query.php

    mysql_query - возвращает ссылку на результат выполнения запроса. И этот результат надо как-то обработать.

    Если запрос на выборку - используем mysql_fetch_array(), чтобы каждую строку результата преобразовать в массив, mysql_num_rows() чтобы узнать сколько строчек нам вернул запрос
    Если на вставку, то обрабатываем например mysql_affected_rows() - возвращает сколько строк было вставлено, обновлено или удалено.

    И т.д.

    Читаем мануалы, не ленимся)))
     
  11. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    И еще нубский вопросик! Искал в инете не нашел нигде! Как в форме вывести на экран значение переменной $nick! Хочеться чтоб возлое поля с ником-справо писалось сообщение если ник не введен- Введите ник!

    <?php
    if (empty($_POST["Nik"]))
    {
    $nick='<center><p>Введите Ник</p></center>';

    $error=true;
    }
    else

    ...........

    $t.= "<form method='post' action=''>

    <div class='centers'>
    <table align='center' width='683' border='1' cellpadding='5' cellspacing='5'>
    <tr>
    <td colspan='2' align='center'><strong> РЕГИСТРАЦИЯ </strong></td>
    </tr>
    <tr>
    <td colspan='2' align='center'><strong> При заполнении полей анкеты будьте внимательные. </strong></td>
    </tr>
    <tr>
    <td colspan='2' align='center'><strong> Обязательные поля отмечены * - звездочкой </strong></td>
    </tr>
    <tr>
    <td align='right'><span class='red'>*</span>Ник</td>
    <td align='left'><input name='Nik' type='text' value= '".htmlspecialchars($Nik,ENT_QUOTES)."' size='30' xlength='45'> </td> // В этой ячейке должно выводиться значение переменной $nick если не введен Ник
    </tr>

    ................
    </table>
    </div>
    </form>
    ";
    echo ($t);
    ?>
    Заранее спасибо!!! Пробывал в кавычках echo $nick не помогает ((
     
  12. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    а если так
    PHP:
    1. htmlspecialchars([b]$_POST['Nik'][/b],ENT_QUOTES)
    и вообще я считаю плохим тоном:
    1. в html коде использовать одинарные кавычки
    2. раз уж есть возможность оформить код, так почему бы это не сделать? Читать-то ведь гораздо удобнее.
     
  13. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    Так без одинарных ковычек тут не обойтись!! Форма занесенная в переменную работать не будет! Форму то надо взять всю в ковычки двайные а если внутри не будет одинарных то форма не работает!Если конечно полностью не убрать переменную и форму написать вне пхп кода, но это уже все переделывать надо и это совсем другая история )
     
  14. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    bkm А причем тут
    htmlspecialchars($_POST['Nik'],ENT_QUOTES)

    Если мне надо вывести переменную $nick='<center><p>Введите Ник</p></center>'; на экран после поля в форме

    <td align='left'><input name='Nik' type='text' value= '".htmlspecialchars($Nik,ENT_QUOTES)."' size='30' xlength='45'> СЮДА

    Ваш код у меня и так стоит в поле type='text' value= '".htmlspecialchars($Nik,ENT_QUOTES что б сохранялись данные если не правильно введены.
     
  15. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    проверяй чему у тебя переменные равны на выходе
     
  16. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    $_POST["Nik"] $nick и $Nik, это разные переменные, вот причём
     
  17. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
  18. Евгений_Rus31

    Евгений_Rus31 Активный пользователь

    С нами с:
    20 апр 2011
    Сообщения:
    61
    Симпатии:
    0
    bkm дак и я про то что разные переменные в $Nik у меня введенное пользователем значение а в переменной $nick это то что мне надо вывесте на экран в случае ошибки!!! Именно $nick мне надо вывести в после поля в форме. Решил я это только когда убрал переменную вообще и пхп код писал уже там где необходимо. Хотелось бы 1 вариант до конца добить )

    Вот измененный код:

    <?php
    include "../config.php";
    $Nik="";
    $Password="";
    $first_name="";
    $error=false;
    $Sex="";
    $on_submit=false;
    $Sex_m="";
    $Sex_j="";
    $Sex_x="";
    $mas_Sex=array ("m"=>"мужской","j"=>"женский","x"=>"не знаю");
    $selected=" selected='selected' ";
    if (!empty($_POST["add"]))
    {
    $on_submit=true;

    if (empty($_POST["Nik"]))
    {

    $nonick= '<font style="color:red; font-size:12pt; font-family:Arial">Введите ник </font>';
    $error=true;
    }
    else
    {
    $Nik= htmlspecialchars ($_POST["Nik"], ENT_QUOTES);
    $sql = "SELECT Nik FROM anketa WHERE Nik='".$Nik."'";
    $result = mysql_query($sql);
    if (mysql_num_rows($result) > 0)
    {
    $truenick='<font style="color:red; font-size:12pt; font-family:Arial">Такой Ник уже существует</font>';
    $error=true;
    }
    }
    if (empty($_POST["Password"]))
    {
    $nopass ='<font style="color:red; font-size:12pt; font-family:Arial">Введите пароль</font>';
    $error=true;
    }
    else
    $Password=htmlspecialchars ($_POST["Password"], ENT_QUOTES);

    if (empty($_POST["first_name"]))
    {
    $noname = '<font style="color:red; font-size:12pt; font-family:Arial">Введите Имя</font>';
    $error=true;
    }
    else
    $first_name=htmlspecialchars ($_POST["first_name"], ENT_QUOTES);

    if (empty($_POST["Sex"]) || $_POST["Sex"]=="none")
    {
    $nopol = '<font style="color:red; font-size:12pt; font-family:Arial">Введите пол</font>';
    $error=true;
    }
    else
    {
    $Sex=$_POST["Sex"];
    switch ($Sex)
    {
    case ("m"):$Sex_m=$selected;break;
    case ("j"):$Sex_j=$selected;break;
    case ("x"):$Sex_x=$selected;break;
    }
    }
    if ($Password !== $_POST['Last_pass'])
    {
    $nolastpass= '<font style="color:red; font-size:12pt; font-family:Arial">Пароли не совпадают!</font>';
    $error=true;
    }



    $last_name = htmlspecialchars ($_POST['last_name'], ENT_QUOTES);
    $E_mail = htmlspecialchars ($_POST['E_mail'], ENT_QUOTES);
    $City = htmlspecialchars ($_POST['City'], ENT_QUOTES);
    $ICQ = htmlspecialchars ($_POST['ICQ'], ENT_QUOTES);
    $Home_page = htmlspecialchars ($_POST['Home_page'], ENT_QUOTES);
    $Age = htmlspecialchars ($_POST['Age'], ENT_QUOTES);




    }

    if ($on_submit && !$error)
    {


    $sql = 'INSERT INTO anketa(Nik, Password, first_name, last_name, E_mail, City, ICQ, Home_page, Sex, Age)
    VALUES("'.$Nik.'", "'.$Password.'", "'.$first_name.'", "'.$last_name.'", "'.$E_mail.'", "'.$City.'","'.$ICQ.'","'.$Home_page.'", "'.$mas_Sex[$Sex].'", "'.$Age.'")';

    if(!mysql_query($sql))
    {
    echo '<center><p>Ошибка при добавлении данных!</p></center>';
    }


    }



    else
    {
    ?>
    <form method='post' action=''>

    <div class='centers'>
    <table align='center' width='683' border='1' cellpadding='5' cellspacing='5'>
    <tr>
    <td colspan='2' align='center'><strong> РЕГИСТРАЦИЯ </strong></td>
    </tr>
    <tr>
    <td colspan='2' align='center'><strong> При заполнении полей анкеты будьте внимательные. </strong></td>
    </tr>
    <tr>
    <td colspan='2' align='center'><strong> Обязательные поля отмечены * - звездочкой </strong></td>
    </tr>
    <tr>
    <td align='right'><span class='red'>*</span>Ник</td>
    <td align='left'><input name='Nik' type='text' value= '<? echo "$Nik"; ?>' size='30' maxlength='45'> <? echo "$nonick $truenick"; ?></td>
    </tr>
    <tr>
    <td align='right'><span class='red'>*</span>Пароль</td>
    <td><input name='Password' type='password' value='' size='20' maxlength='25'><? echo "$nopass"; ?></td>
    </tr>
    <tr>
    <td align='right'><span class='red'>*</span>Пароль(повтор)</td>
    <td><input name='Last_pass' type='password' value='' size='20' maxlength='25'><? echo "$nolastpass" ?> </td>
    </tr>
    <tr>
    <td align='right'><span class='red'>*</span>Имя</td>
    <td><input name='first_name' type='text' value='<? echo "$first_name"; ?>' size='20' maxlength='25'><? echo "$noname"; ?></td>
    </tr>
    <tr>
    <td align='right'>Фамилия</td>
    <td><input name='last_name' type='text' value='<? echo "$last_name"?>' size='20' maxlength='25'></td>
    </tr>
    <tr>
    <td align='right'>E-Mail</td>
    <td><input name='E_mail' type='text' value='<? echo "$E_mail"?>' size='20' maxlength='25'></td>
    </tr>
    <tr>
    <td align='right'>Показывать E-Mail</td>
    <td><input type='checkbox' name='see_E_mail' value=''> </td>
    </tr>
    <tr>
    <td align='right'>Город</td>
    <td><input name='City' type='text' value='<? echo "$City" ?>' size='20' maxlength='25'></td>
    </tr>
    <tr>
    <td align='right'>ICQ</td>
    <td><input name='ICQ' type='text' value='<? echo "$ICQ" ?>' size='20' maxlength='25'></td>
    </tr>
    <tr>
    <td align='right'>Домашняя страничка</td>
    <td><input name='Home_page' type='text' value='<? echo "$Home_page"?>' size='20' maxlength='25'></td>
    </tr>
    <tr>
    <td align='right'><span class='red'>*</span>Пол<? echo "$nopol"; ?></td>
    <td><select name='Sex'>
    <option value='none'>Не выбран</option>
    <option value='m' <? echo "$Sex_m"?>>Мужской</option>
    <option value='j'<? echo "$Sex_j"?>>Женский</option>
    <option value='x' <? echo "$Sex_x"?>>Не знаю</option>
    </td>
    </select>

    </tr>
    <tr>
    <td align='right'>Возраст</td>
    <td><input name='Age' type='text' value='<? echo "$Age"?>' size='3' maxlength='3'></td>
    </tr>
    <tr>
    <td align='right'>Цвет текста</td>
    <td bgcolor='orange' ><input type='radio' name='color' value='black' checked>Черный <input type='radio' name='color' value='red'><span class='red'>Красный </span><br/>
    <input type='radio' name='color' value='green'>Зеленый <input type='radio' name='color' value='blue'>Синий

    </td>
    </tr>
    <tr>
    <td align='right'><label><input type='submit' name='add' id='button' value='Создать' class='buts'></label></td>
    <td align='center'><label>
    <input type='reset' value='Сброс'>
    </label></td>
    </tr>

    </table>
    </div>
    </form>
    <?php
    }
    ?>