|
|
|
| Вообщем простая форма заполнения, есть графа Char nick. Скрипт должен смериться с БД и проверить, если это имя уже зарегестрировано в БД, то тогда он пишит ошибку.
Сделал как у вас в первой версии форума.
// Выясняем не зарегистрировано ли уже это имя
$query = "select * from authors where name='".$author."';";
$ath = mysql_query($query);
if($ath)
{
$auth = mysql_fetch_array($ath);
if(strtolower($auth['name'])==strtolower($author)) links($id_forum,"К сожалению, данное имя уже зарегистрировано. Поробуйте другое.");
}
|
Но это не работает, он пишет всегда "К сожалению, данное имя уже зарегистрировано. Поробуйте другое"
Может еще какойнибуть способ? | |
|
|
|
|
|
|
|
для: Бамси
(27.03.2006 в 18:55)
| |
<?
// Выясняем не зарегистрировано ли уже это имя
$sql = mysql_query("select * from authors where (name='$author')", $db);
#проверяем количество строк с name=$author если таких нет то mysql_num_rows($sql)=0
if(mysql_num_rows($sql)!=0){
echo"К сожалению, данное имя уже зарегистрировано. Поробуйте другое.";
}else{
#проверяем длинну имени ну можно ещё рег выражения включить
if(strlen($avtor)>="4" && strlen($avtor)<="16"){
#если всё правильно то записываем в таблицу
$sql= mysql_query("INSERT INTO authors ( поля ) VALUES (переменные)", $db);
echo"Спасиба за регистрацию";
}else{
#пишем ошибку на длинну имни
echo"Имя должно бать от 4 до 16 символов";
}
}
?>
|
Незнаю насколько это правильно но я так обычно делаю | |
|
|
|
|
|
|
|
для: Paxa
(27.03.2006 в 20:29)
| |
<?
$sql = mysql_query("select * from users where (CharsNick='$CharsNick')");
#проверяем количество строк с name=$author если таких нет то mysql_num_rows($sql)=0
if(mysql_num_rows($sql)!=0)
{
$action = "";
$error = $error."<LI>Это имя уже есть в списках.\n";
}
?>
|
Теперь он добавляет всегда. Даже когда имя уже есть в списке.
В аттаче Скрипт для добавление записи, посмотрите, почему разрешает добавлять, даже когда запись уже есть. | |
|
|
|
|
|
|
|
для: Бамси
(27.03.2006 в 21:59)
| | Вы проверять-то проверяете, но выполнение - продолжаете.... даже если mysql_num_rows($sql)!=0 . | |
|
|
|
|
|
|
|
для: Shorr Kan
(28.03.2006 в 00:55)
| | не понел, но это же работает.
if (empty($_POST["CharsNick"]))
{
$action = "";
$error = $error."<LI>Вы не ввели имя вашего персонажа.\n";
}
|
| |
|
|
|
|
|
|
|
для: Бамси
(28.03.2006 в 01:26)
| | Ну не понимаю я почему не работает, помогите :) | |
|
|
|
|
|
|
|
для: Бамси
(28.03.2006 в 16:37)
| | У меня такое подозрение, что переменная CharsNick используется у Вас
$sql = mysql_query("select * from users where (CharsNick='$CharsNick')");
|
раньше чем определяется
$CharsNick = substr($_POST["CharsNick"],0,32);
|
| |
|
|
|
|
|
|
|
для: Trianon
(28.03.2006 в 17:30)
| | Вообщем вот что понял и в чем не могу разобраться, написал вот такой скрипт.
<?
// Выясняем не зарегистрировано ли уже это имя
$name = "Solker";
$link = mysql_connect("localhost", "root", "toor");
mysql_select_db("perepis", $link);
$sql = mysql_query("select * from users where CharsNick = $name");
echo "select * from users where CharsNick = '".$name."';";
print "<br>";
echo mysql_error();
#проверяем количество строк с CharsName=Solker если таких нет то mysql_num_rows($sql)=0
if(mysql_num_rows($sql)!=0){
echo "К сожалению, данное имя уже зарегистрировано. Поробуйте другое.";
}else{
echo "Это имя свободно";
}
?>
|
Вот что мне выводит скрипт:
select * from users where CharsNick = 'Solker';
Unknown column 'Solker' in 'where clause'
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\WebServer\WWW\test.php on line 11
Это имя свободно
|
Тоесть криво выполняеться запрос в SQL.
select * from users where CharsNick = 'Solker';
Не хочет выполняться не в какую, а
select * from users where CharsNick = "Solker";
Работает прекрастно.
Без кавычек кстати не работает тоже.
Дак вот мне надо что бы переменная $name отображалась с двух сторон двойными ковычками, но зделать это у меня не получаеться, т.к. он щитает кавычки частью php кода, и ввыодит сообщение о ошибки в синтаксе.
Вообщем помогите мне зделать что бы запрос выводился в виде
select * from users where CharsNick = "Solker";
А не без ковычек или с одинарными ковычками. | |
|
|
|
|
|
|
|
для: Бамси
(29.03.2006 в 04:36)
| |
$sql = mysql_query('select * from users where CharsNick ="'. $name.'"');
|
| |
|
|
|
|
|
|
|
для: Бамси
(29.03.2006 в 04:36)
| | Вот так писать нельзя:
$sql = mysql_query("select * from users where CharsNick = $name");
echo "select * from users where CharsNick = '".$name."';";
|
Вы печатаете (и разглядываете потом) одну строку, а исполнять пытаетесь совершенно другую.
Следует печатать и исполнять одну и ту же строку:
$query = "select * from users where CharsNick = '".$name."';";
$sql = mysql_query($query);
echo $query;
|
Вот тот вариант с двойными кавычками, который Вам показала elenaki:
$query = 'select * from users where CharsNick ="'. $name.'"';
|
Могу показать еще один.
$query = "select * from users where CharsNick =\"$name\"";
|
Могу показать Вам вариант с одинарными кавычками:
$query = "select * from users where CharsNick ='$name'";
|
И еще один с одинарными кавычками:
$query = 'select * from users where CharsNick =\''.$name.'\'';
|
Все эти четыре варианта - рабочие.
Работают любые кавычки - что двойные, что одинарные.
>Дак вот мне надо что бы переменная $name отображалась с
>двух сторон двойными ковычками, но зделать это у меня не
>получаеться, т.к. он щитает кавычки частью php кода, и
>ввыодит сообщение о ошибки в синтаксе.
Не надо путать кавычки обрамления строк PHP и кавычки обрамления строк MYSQL.
Последние вы должны расписать по правилам PHP как обычные символы, т.е. сменить с двойных на одинарные (или наоборот) , либо заэкранировать, если менять тип не хотите.
PHP забирает свой слой кавычек, MySQLу достается свой слой, если Вы его правильно оформили.
Теперь об отличиях двойных и одинарных кавычек. Для PHP (т.е. для наружного слоя кавычек) есть разница - В одинарных кавычках PHP не будет подставлять значения $переменных, и Вам придется сцеплять строку из кусков с помощью точек. С двойными кавычками наружного слоя в этом плане проще. Все $переменные будут подставлены.
А вот MYSQL'у совершенно пофигу, какие ему достанутся кавычки - двойные или одинарные. Он будет работать с любыми. Вообще без них он работать не будет, поскольку текст должен быть чем-то ограничен, иначе возникнет синтаксическая путаница. PHP ведь тоже без кавычек со строками грубо говоря не работает - Вы же этому не удивляетесь?
PS. Вообще-то одинарные кавычки правильно называются апострофами.
PPS. У MySQL есть еще один вид кавычек для обрамления имен таблиц и столбцов - обратные одинарные косые кавычки (кнопка на клавиатуре между Esc и Tab), которые правильно называются слабыми ударениями. Правда этот форум их корёжит, и их в здешних сообщениях можно угадывать только силой мысли. :) | |
|
|
|
|
|
|
|
для: Trianon
(29.03.2006 в 10:59)
| | Ух.. все понял большое спасибо.
select * from users where CharsNick = "Solker"
К сожалению, данное имя уже зарегистрировано. Поробуйте другое.
|
Бооольшое спасибо! :) использовал (/"). | |
|
|
|
|
|
|
|
для: Бамси
(29.03.2006 в 14:23)
| | >Бооольшое спасибо! :) использовал (/").
Большое пожалуйста. Использовать (/") Вы не смогли бы.
Вероятно, Вы использовали (\"). Потому что слэши тоже бывают разные. :-/ :-| :-\ :-) | |
|
|
|
|
|
|
|
для: Trianon
(29.03.2006 в 14:35)
| | Вообщем вот это
$sql = mysql_query("select * from users where CharsNick = \"$name\"");
:) | |
|
|
|