Задача на засыпку)) Имеем: Две таблицы('soobchenia' --- (в ней хранятся все сообщения всех пользователей), 'users' --- храниться все пользователи); 'soobchenia': --- 'id_uuu' --- Тут просто авто инкремент(т.е. добавляются все id ко всем сообщениям) 'ot_kogo_sms' --- сохраняется логин отправившего 'komy_sms' --- сохраняется логин кому оправили 'ot_kogo_sms_id' --- сохраняется id отправившего 'samo_soobshenie' --- сам текст сообщения 'time_messeges' --- сохраняется время отправления 'users'--- 'id' --- id пользователя 'login' --- логин 'password' -- пароль 'imia_us' --- имя 'familia_us' -- фамилия 'date' --- дата регистрации В общем много времени мучаюсь с тем как как при нажатии на блок отобразить блок с "этим" логином. Т.е. в этом блоке моя с ним переписка. Сам код выборки из таблицы для переписки я поставлю на условия в sql запросе. Я думаю что это можно решить Кьюеривским скриптом, поэтому решил сюда адресовать тему)) Файл "moi_sms.php": Код (Text): <html> <head> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript"> informer=null; setInterval(function(){ $("#block").load("index.php #block"); }, 3000); </script> <script type="text/javascript"> /** * Функция для отправки формы средствами Ajax * @author Дизайн студия ox2.ru **/ function AjaxFormRequest(result_id,form_id,url) { jQuery.ajax({ url: url, //Адрес подгружаемой страницы type: "POST", //Тип запроса dataType: "html", //Тип данных data: jQuery("#"+form_id).serialize(), success: function(response) { //Если все нормально document.getElementById(result_id).innerHTML = response; }, error: function(response) { //Если ошибка document.getElementById(result_id).innerHTML = "Ошибка при отправке формы"; } }); } </script> <script> $('#buy1').attr("title", function(i) { ++i; // Увеличим на 1, т.к. отсчет идет с 0 return "Рис." + i + ": " + this.alt; }); </script> </head> <body> <div style="overflow: auto; height: 360px; /* width: 22px; */ width: 500px; float: right;"> <div id="block"> <?php include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь $us_idd = $_SESSION['login']; $usss_idd = $_SESSION['id']; echo $usss_idd; $resultsdadasddsd = mysql_query("SELECT * FROM soobchenia WHERE komy_sms_login='$us_idd' OR ot_kogo_sms_id='$usss_idd'",$db); while($sss = mysql_fetch_array($resultsdadasddsd)){ echo "<p id=sdaadaadf>"; echo "<a id=soobshenie_us_oin>"; echo $sss['ot_kogo_sms']; echo "</a>"; echo "<p id=messeges_us_block>"; echo "<a id=soobshenie_us_out>"; echo $sss['samo_soobshenie']; echo $sss['time_message']; echo "</a>"; echo "<a id=effect_us_messages>"; echo "</a>"; echo "</p>"; echo "</p>"; echo "</br>"; }; ?> </div> </div> </br> <form action="" method="post" id="form_id"> <p><input style="float: right" type="text" name="name" /></p> <p><input style="width: 600px; height: 100px; float: right; margin-top: 0px;" type="text" name="text" /></p> </br> <input type="button" value="Отправить" onclick="AjaxFormRequest('result_div_id', 'form_id', 'action_messages_us.php')" /> </form> <div style="background: #f0f; width: 200px; height: 450px; margin-top: -340px; float: left; overflow: auto;"> <?php $ind = 33; $ssa = 21; ?> <div id="buy1"> <div id="nichka" alt="$ind" title="Жопа">sdasdasdas<?php echo $ind; ?></a> <?php $eqweqqe = mysql_query("SELECT * FROM users",$db); while($ddds = mysql_fetch_array($eqweqqe)){ echo "<a id=jopa_su href=>"; echo $ddds['login']; echo "</a>"; echo "</br>"; }; ?> </div> </body> </html> Файл "action_messages_us": Код (Text): <?php header('Content-type: text/html; charset=utf-8'); session_start(); $us_login = ($_POST['name']); $samo_soobshenie = ($_POST['text']); $ot_kogo_sms_login = $_SESSION['login']; include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь /*Делаем запрос к БД*/ $resultdsd = mysql_query("SELECT * FROM users WHERE login='$us_login'",$db); /*Преобразовываем результат в массив*/ $myrowsd = mysql_fetch_array($resultdsd); /*Выводим результат на экран*/ echo $myrowsd['id']; $komy_sms_id = $myrowsd['id']; echo $login; //SQL-запрос на добавление новой записи в таблицу $date = date('Y-m-d G:i:s'); $ot_kogo_sms_id = $_SESSION['id']; $strSQL = "INSERT INTO soobchenia(ot_kogo_sms,komy_sms,samo_soobshenie,komy_sms_login,time_message,ot_kogo_sms_id) VALUES('$ot_kogo_sms_login','$komy_sms_id','$samo_soobshenie','$us_login','$date','$ot_kogo_sms_id')"; mysql_query($strSQL) or die(mysql_error()); //Конец SQL запроса echo $us_login; echo '</br>'; echo '</br>'; echo '</br>'; if (!empty($myrow['id'])) { echo ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин."); } echo htmlspecialchars($_POST['name']); ?> Всё работает хорошо, но не могу реализовать логику через скрипт(( Добавлено спустя 6 минут 11 секунд:
кавычки не прямые, а обратные если это id, то зачем _uuu? это всё забивает голову, отвлекает. from to зачем тогда логин? соотв. text одного сообщения время. достаточно time name американская фамилия видимо. лучше более говорящее название, чтобы потом не чесать репу дата чего этого. например created. Теперь по поводу твоего вопроса. Что не ясно в аяксе? спроси - разжуём, это вопрос пяти минут. У тебя затык явно не в аяксе. Писать за тебя скрипт это неправильно идеологически.
Не могу понять как выстроить логику кода. и Не могу понять как заставить переменную работать в ней(т.е. менять своё значение Java-кодом при клике на определённый блок ). Все сообщения хранятся в одной переменной, у меня не получается составить sql запрос который выберет только те поля где я переписываюсь с кем нибудь. Может есть способ профильтровать переменную оставив только меня и собеседника? В принципе всё хорошо выводиться, а я не хочу чтоб сюда попадали сообщения третьего собеседника, который пишет мне. В Аяксе нужна функция, которая по клику на пользователя поменяет свою переменную украв у этого же пользователя ...
они в бд хранятся WHERE (`from`=7 AND `to`=3) OR (`from`=3 AND `to`=7) Сначала тебе надо осмыслить всё. =) что такое javascript, откуда он что берёт, что тебе надо, куда посылать, и что выдаёт пхп-скрипт при ответе. Распиши это по-частям в столбик и поглядим.
СПАСИБО вам ДОБРЫЙ ЧЕЛОВЕК!!!! Ура! Я уже 2-и сутки не сплю из-за этого))) Решил я таким запросом Код (Text): WHERE (`ot_kogo_sms`='ermolmolotov' AND `komy_sms_login`='www') OR (`ot_kogo_sms`='www' AND `komy_sms_login`='ermolmolotov') Я всё уже расписал и понял что нужно подставить в выборку sql переменную которая при клике синхронизировалась скриптом. Тока как это хотя бы реализовать не понимаю.((( Аякс только начинаю изучать, знаний мало.
свой id я могу из $_SESSION взять а его id не знаю как достать((( Долго тупил где его брать, а потом решил по этой схеме.
когда рисуешь страницу его id надо пихнуть куданить, откуда его удобно достать. например в дата-аттрибут кнопки, по которой кликаешь. http://htmlbook.ru/samouchitel-html5/atributy-data Теперь свет мудрости коснулся тебя. Теперь ты можешь делать запрос только с номером собеседника,а свой номер брать из сессии, и всё будет красиво и т.п. Следующий этап это когда ты захочешь применить .parents() =)
Ещё раз спасибо))) Мне в совет читать английскую литературу? Или это напутствие ? При дальнейшем наборе опыта, такие ссылку в пользу ?
ну там язык простой. можно читать легко. ну это официальная документация. хочешь не хочешь, а придётся.
Спс за совет)) Просто хотел убедиться что если умный человек выберет это, то и я потихоньку начну. Да, не думал что всё так быстро решиться))
у меня тут много сообщений, но уровень не очень высокий. просто да, читать доки надо в оригинале, чтобы не отставать от изменения в версиях, и не путаться в переводах.