Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Выборка данных из таблицы mysql (http://forum.oszone.net/showthread.php?t=265955)

vinbongun 11-08-2013 10:52 2199804

Выборка данных из таблицы mysql
 
Здравствуйте, уважаемые завсегдатые этого форума.
Есть сайт квест игры Zomby day. Для участия нужна регистрация участников( самая примитивная). И когда человек регистрируется, на e-mail, а так же SMS отправляется номер участника. Номер это id. Только есть одна проблема.
Как извлечь id из базы и вставить в ссылку.
PHP код:

<?php 
header
('Content-Type: text/html; charset=utf-8'); 
require_once 
'lib/Zelenin/smsru.php'
$sms = new Zeleninsmsrublah blah blah ); 
//заносим введенный пользователем логин в переменную $surname, если он пустой, то уничтожаем переменную 
if (isset($_POST['surname'])) { $surname $_POST['surname']; if ($surname == '') { unset($surname);} }  
if (isset(
$_POST['name'])) { $name $_POST['name']; if ($name == '') { unset($name);} }  
if (isset(
$_POST['last_name'])) { $last_name=$_POST['last_name']; if ($last_name =='') { unset($last_name);} } 
if (isset(
$_POST['tel'])) { $tel=$_POST['tel']; if ($tel =='') { unset($tel);} } 
if (isset(
$_POST['mail'])) { $mail=$_POST['mail']; if ($mail =='') { unset($mail);} } 

//$email=$_POST[email]; //ТУт полЬзоВатель вВел ЕМАил 
//$name=$_POST[name]; //Тут польЗоватеЛь написал имя 
//$perference=$_POST[perference]; // ТУт Что то ещё =) 
//$q="insert into apple values('$n','$name','$email','$perference')"; 

if (empty($surname) or empty($name) or empty($last_name) or empty($tel) or empty($mail)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт 

exit (
"Вы ввели не всю информацию, венитесь назад и заполните все поля!"); 

//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести 
$surname stripslashes($surname); 
$surname htmlspecialchars($surname); 

$last_name stripslashes($last_name); 
$last_name htmlspecialchars($last_name); 

$name stripslashes($name); 
$name htmlspecialchars($name); 

//$tel = stripslashes($tel); 
//$tel = htmlspecialchars($tel); 

$mail stripslashes($mail); 
$mail htmlspecialchars($mail); 

//удаляем лишние пробелы 
$surname trim($surname); 
$name trim($name); 
$last_name trim($last_name); 
//$tel = trim($tel); 
$mail trim($mail); 


// подключаемся к базе 
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь  

//проверка на существование пользователя с таким же логином 
//$result = mysql_query("SELECT id FROM users WHERE surname='$surname'",$db); 
//$myrow = mysql_fetch_array($result); 
//if (!empty($myrow['id'])) { 
//exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин."); 
//} 

// если такого нет, то сохраняем данные 
$result2 mysql_query ("INSERT INTO users (surname,name,last_name,tel,mail) VALUES('$surname','$name','$_lastname','$tel','$mail')"); 

// Проверяем, есть ли ошибки 
if ($result2=='TRUE'

echo 
"Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>"


else { 
echo 
"Ошибка! Вы не зарегистрированы."
     } 

// вот тут мне и нужна помощь 


$result mysql_query("SELECT tel FROM users WHERE tel = $tel",$db); //извлекаем из базы все данные о пользователе с введенным логином 
$myrow mysql_fetch_array($result);      


//$sms->sms_send( $tel, 'Ваш номер:'.$id1.'. Ждем вас:)' ); 



$result mysql_query("SELECT tel FROM users "); 
echo 
"$result"
echo 
"nghfgd"
echo 
$result->insert_id
?>


Tonny_Bennet 12-08-2013 10:42 2200207

Цитата:

Цитата vinbongun
Номер это id. Только есть одна проблема.
Как извлечь id из базы и вставить в ссылку. »


Вас интересует ID добавленной записи?

Вы вставили в базу данные: INSERT INTO users (surname,name,last_name,tel,mail) VALUES('$surname','$name','$_lastname','$tel','$mail')" возьмите и сделайте селект по всем введённым полям - по идее должен вывалиться нужный вам ID. Но если вы не сделали ни одно из этих полей ключевым то никто не запрещает ещё раз создать пользователя с такими данными. Задумайтесь над этим.

Ещё в SQL есть запрос, возвращающий последний созданный индекс. Но опять же нужно будет продумать механизм транзакции чтобы не вернуть другой, только что созданный ID.

vinbongun 13-08-2013 06:34 2200628

Спасибо Tonny_Bennet, что ответили на мой вопрос.
Только я очень плохо разбираюсь с sql запросами. И поэтому не особо понял, что нужно сделать.
Не могли бы Вы помочь. Нужно что бы когда человек регистрировался, ему отсылалось сообщение с его id. За это отвечает такая строка:
PHP код:

$sms->sms_send$tel'Ваш номер:'.$id1.'. Ждем вас:)' ); 

И вот как то нужно передать id человека в сообщение. Подскажите пожалуйста как?

Tonny_Bennet 13-08-2013 10:15 2200664

vinbongun, на php не писал уже несколько лет. Специфика вашей базы мне неизвестна... так что пишу как бы я это делал.

У вас должно быть установлено соединение с базой, и должна быть переменная возвращающая то-ли ID этого соединения то ли ещё что-то подобное. Т.к. вы можете одновеременно из скрипта соединяться и отправлять запросы в разные базы в каждом запросе нужно указать эту ссылку. У меня это переменная $link.

Код:

define(database,"base_of_web_site");// База данных
$link = mysql_connect(db_ip_port, login, password) or die("Не могу соединиться");
mysql_select_db(database, $link);
mysql_query("SET NAMES 'cp1251'"); // выбираем кодировку


Дальше всё просто: текст запроса, команда запроса(текст, ссылка на подключение к базе, преобразование результата ответа в массив.

Код:

$query= "SELECT * FROM users WHERE surname=".$surname." AND name=".$name." AND last_name=".$_lastname." AND tel=".$tel." AND mail=".$mail.";"

$result = mysql_query($query, $link);
$row = mysql_fetch_array($result)
    //Нужный вам ID ниже.

        $id=$row['id']

В тексте запроса мог ошибиться с расстановкой кавычек.

Habetdin 13-08-2013 13:51 2200755

vinbongun, попробуйте так:
PHP код:

$result mysql_query("SELECT id,tel FROM users WHERE tel = $tel",$db);
$myrow mysql_fetch_array($result);

$sms->sms_send$myrow['tel'], 'Ваш номер:'.$myrow['id'].'. Ждем вас:)' ); 


PHP код:

$result mysql_query("SELECT tel FROM users WHERE tel = $tel",$db);
//извлекаем из базы все данные о пользователе с введенным логином 

Неверно. Если нужно всё - вместо SELECT tel пишем SELECT *, а в вашем коде извлекается лишь значение поля tel ;)
(странный вообще запрос - «мне нужен tel юзера с tel=%tel»)

vinbongun 13-08-2013 17:02 2200856

Ребят. Большое спасибо за помощь. Но я ничего не понимаю :cry:.
Помогите пжл написать уже действующий код. Возможно нужно переписать так как Вам удобно. Лишь бы это работало.
Заранее благодарен :angel:

Habetdin 13-08-2013 23:36 2201081

vinbongun, вставьте в свой код после "// вот тут мне и нужна помощь" код из поста #5, и проверьте.
PHP код:

// правда строку с отправкой SMS:
$sms->sms_send$myrow['tel'], 'Ваш номер:'.$myrow['id'].'. Ждем вас:)' ); 
// лучше заменить на тестовое сообщение:
echo 'SMS to '.$myrow['tel'].': Ваш номер:'.$myrow['id'].'. Ждем вас:)'


vinbongun 14-08-2013 06:23 2201152

Большое спасибо Вам за помощь. Я Вам так благодарен :teeth:.
Чем могу отблагодарить?


Время: 21:15.

Время: 21:15.
© OSzone.net 2001-