Войти

Показать полную графическую версию : Выборка данных из таблицы mysql


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


<?php
header('Content-Type: text/html; charset=utf-8');
require_once 'lib/Zelenin/smsru.php';
$sms = new Zeleninsmsru( blah 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
Номер это 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
Спасибо Tonny_Bennet, что ответили на мой вопрос.
Только я очень плохо разбираюсь с sql запросами. И поэтому не особо понял, что нужно сделать.
Не могли бы Вы помочь. Нужно что бы когда человек регистрировался, ему отсылалось сообщение с его id. За это отвечает такая строка:
$sms->sms_send( $tel, 'Ваш номер:'.$id1.'. Ждем вас:)' );
И вот как то нужно передать id человека в сообщение. Подскажите пожалуйста как?

Tonny_Bennet
13-08-2013, 10:15
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
vinbongun, попробуйте так:
$result = mysql_query("SELECT id,tel FROM users WHERE tel = $tel",$db);
$myrow = mysql_fetch_array($result);

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

[hr]$result = mysql_query("SELECT tel FROM users WHERE tel = $tel",$db);
//извлекаем из базы все данные о пользователе с введенным логином
Неверно. Если нужно всё - вместо SELECT tel пишем SELECT *, а в вашем коде извлекается лишь значение поля tel ;)
(странный вообще запрос - «мне нужен tel юзера с tel=%tel»)

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

Habetdin
13-08-2013, 23:36
vinbongun, вставьте в свой код после "// вот тут мне и нужна помощь" код из поста #5, и проверьте.
// правда строку с отправкой SMS:
$sms->sms_send( $myrow['tel'], 'Ваш номер:'.$myrow['id'].'. Ждем вас:)' );
// лучше заменить на тестовое сообщение:
echo 'SMS to '.$myrow['tel'].': Ваш номер:'.$myrow['id'].'. Ждем вас:)';

vinbongun
14-08-2013, 06:23
Большое спасибо Вам за помощь. Я Вам так благодарен :teeth:.
Чем могу отблагодарить?




© OSzone.net 2001-2012