За последние 24 часа нас посетили 17652 программиста и 1723 робота. Сейчас ищет 901 программист ...

Отображение при клике на блок

Тема в разделе "JavaScript и AJAX", создана пользователем ermolmolotov, 23 авг 2014.

  1. ermolmolotov

    ermolmolotov Новичок

    С нами с:
    21 авг 2014
    Сообщения:
    43
    Симпатии:
    0
    Задача на засыпку))
    Имеем: Две таблицы('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):
    1.  
    2. <html>
    3. <head>
    4.  
    5.   <script type="text/javascript" src="js/jquery.js"></script>
    6.  
    7. <script type="text/javascript">
    8.  informer=null;
    9. setInterval(function(){
    10. $("#block").load("index.php #block");
    11. }, 3000);
    12. </script>
    13. <script type="text/javascript">
    14.  
    15.            /**
    16.              * Функция для отправки формы средствами Ajax
    17.              * @author Дизайн студия ox2.ru
    18.              **/
    19.             function AjaxFormRequest(result_id,form_id,url) {
    20.                 jQuery.ajax({
    21.                     url:     url, //Адрес подгружаемой страницы
    22.                     type:     "POST", //Тип запроса
    23.                     dataType: "html", //Тип данных
    24.                     data: jQuery("#"+form_id).serialize(),
    25.                     success: function(response) { //Если все нормально
    26.                     document.getElementById(result_id).innerHTML = response;
    27.                 },
    28.                 error: function(response) { //Если ошибка
    29.                 document.getElementById(result_id).innerHTML = "Ошибка при отправке формы";
    30.                 }
    31.              });
    32.         }
    33.    </script>
    34.    <script>
    35.  
    36.  
    37.  
    38. $('#buy1').attr("title", function(i) {
    39.      ++i; // Увеличим на 1, т.к. отсчет идет с 0
    40.      return "Рис." + i + ": " + this.alt;
    41.    });
    42. </script>
    43. </head>
    44. <body>
    45.     <div style="overflow: auto;
    46. height: 360px;
    47. /* width: 22px; */
    48. width: 500px;
    49. float: right;">
    50.   <div id="block">
    51.  
    52. <?php
    53.  
    54. include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
    55. $us_idd = $_SESSION['login'];
    56. $usss_idd = $_SESSION['id'];
    57. echo $usss_idd;
    58. $resultsdadasddsd = mysql_query("SELECT * FROM soobchenia WHERE komy_sms_login='$us_idd' OR ot_kogo_sms_id='$usss_idd'",$db);
    59.  
    60.  
    61.  
    62.  
    63.  
    64.  
    65.  
    66.  
    67.  
    68.  
    69. while($sss = mysql_fetch_array($resultsdadasddsd)){
    70.  
    71. echo "<p id=sdaadaadf>";
    72. echo "<a id=soobshenie_us_oin>";
    73. echo $sss['ot_kogo_sms'];
    74. echo "</a>";
    75.  
    76. echo "<p id=messeges_us_block>";
    77.  
    78.  
    79.  
    80. echo "<a id=soobshenie_us_out>";
    81.  
    82. echo $sss['samo_soobshenie'];
    83. echo $sss['time_message'];
    84. echo "</a>";
    85. echo "<a id=effect_us_messages>";  
    86. echo "</a>";
    87. echo "</p>";
    88. echo "</p>";
    89. echo "</br>";
    90.  
    91.  
    92. };
    93.  
    94. ?>
    95. </div>
    96. </div>
    97. </br>
    98.  
    99.  
    100.  
    101. <form action="" method="post" id="form_id">
    102.  <p><input style="float: right" type="text" name="name" /></p>
    103.  <p><input style="width: 600px;
    104. height: 100px;
    105. float: right;
    106. margin-top: 0px;" type="text" name="text" /></p>
    107. </br>
    108.  <input type="button" value="Отправить" onclick="AjaxFormRequest('result_div_id', 'form_id', 'action_messages_us.php')" />
    109. </form>
    110.  
    111.  
    112.  
    113. <div style="background: #f0f;
    114. width: 200px;
    115. height: 450px;
    116. margin-top: -340px;
    117. float: left;
    118. overflow: auto;">
    119. <?php
    120. $ind = 33;
    121. $ssa = 21;
    122. ?>
    123. <div id="buy1">
    124. <div id="nichka" alt="$ind" title="Жопа">sdasdasdas<?php echo $ind; ?></a>
    125.  
    126. <?php
    127.     $eqweqqe = mysql_query("SELECT * FROM users",$db);
    128.    
    129.     while($ddds = mysql_fetch_array($eqweqqe)){
    130.  
    131. echo "<a id=jopa_su href=>";
    132. echo $ddds['login'];
    133. echo "</a>";
    134. echo "</br>";
    135.  
    136. };
    137. ?>
    138. </div>
    139.  
    140.  
    141.  
    142.  
    143. </body>
    144. </html>
    Файл "action_messages_us":
    Код (Text):
    1. <?php
    2. header('Content-type: text/html; charset=utf-8');
    3. session_start();
    4. $us_login = ($_POST['name']);
    5. $samo_soobshenie = ($_POST['text']);
    6. $ot_kogo_sms_login = $_SESSION['login'];
    7.  
    8.  
    9.  
    10.  
    11. include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
    12.  
    13.  
    14.            
    15.            
    16.            
    17.  
    18.  
    19.            
    20.                         /*Делаем запрос к БД*/
    21. $resultdsd = mysql_query("SELECT * FROM users WHERE login='$us_login'",$db);
    22. /*Преобразовываем результат в массив*/
    23. $myrowsd = mysql_fetch_array($resultdsd);
    24. /*Выводим результат на экран*/
    25. echo $myrowsd['id'];
    26. $komy_sms_id = $myrowsd['id'];
    27.            
    28.            
    29.            
    30.            
    31.             echo $login;
    32.             //SQL-запрос на добавление новой записи в таблицу
    33.            
    34.  
    35.            
    36.            
    37.            
    38.     $date = date('Y-m-d G:i:s');       
    39.     $ot_kogo_sms_id = $_SESSION['id'];     
    40.  $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')";
    41.  
    42.     mysql_query($strSQL) or die(mysql_error());
    43.  //Конец SQL запроса
    44.            
    45.            
    46.             echo $us_login;
    47.            
    48.            
    49.            
    50.            
    51.  
    52.            
    53.            
    54.            
    55.             echo '</br>';
    56.             echo '</br>';
    57.             echo '</br>';
    58.             if (!empty($myrow['id'])) {
    59.             echo ("Извините, введённый вами логин уже    зарегистрирован. Введите другой логин.");
    60.             }          
    61.  
    62.  
    63.  
    64.  
    65.  
    66.  
    67.  
    68.  
    69.  echo htmlspecialchars($_POST['name']);
    70.  
    71.  
    72. ?>

    Всё работает хорошо, но не могу реализовать логику через скрипт((


    [​IMG]

    Добавлено спустя 6 минут 11 секунд:
    [​IMG]
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    кавычки не прямые, а обратные

    если это id, то зачем _uuu? это всё забивает голову, отвлекает.

    from

    to

    зачем тогда логин?

    соотв. text

    одного сообщения время. достаточно time

    name

    американская фамилия видимо.

    лучше более говорящее название, чтобы потом не чесать репу дата чего этого. например created.

    Теперь по поводу твоего вопроса. Что не ясно в аяксе? спроси - разжуём, это вопрос пяти минут. У тебя затык явно не в аяксе. Писать за тебя скрипт это неправильно идеологически.
     
  3. ermolmolotov

    ermolmolotov Новичок

    С нами с:
    21 авг 2014
    Сообщения:
    43
    Симпатии:
    0
    Не могу понять как выстроить логику кода. и Не могу понять как заставить переменную работать в ней(т.е. менять своё значение Java-кодом при клике на определённый блок ). :(
    Все сообщения хранятся в одной переменной, у меня не получается составить sql запрос который выберет только те поля где я переписываюсь с кем нибудь. Может есть способ профильтровать переменную оставив только меня и собеседника?
    В принципе всё хорошо выводиться, а я не хочу чтоб сюда попадали сообщения третьего собеседника, который пишет мне.
    В Аяксе нужна функция, которая по клику на пользователя поменяет свою переменную украв у этого же пользователя ...
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    они в бд хранятся

    WHERE (`from`=7 AND `to`=3) OR (`from`=3 AND `to`=7)

    Сначала тебе надо осмыслить всё. =) что такое javascript, откуда он что берёт, что тебе надо, куда посылать, и что выдаёт пхп-скрипт при ответе. Распиши это по-частям в столбик и поглядим.
     
  5. ermolmolotov

    ermolmolotov Новичок

    С нами с:
    21 авг 2014
    Сообщения:
    43
    Симпатии:
    0
    СПАСИБО вам ДОБРЫЙ ЧЕЛОВЕК!!!!
    Ура! Я уже 2-и сутки не сплю из-за этого)))
    Решил я таким запросом
    Код (Text):
    1. WHERE (`ot_kogo_sms`='ermolmolotov' AND `komy_sms_login`='www') OR (`ot_kogo_sms`='www' AND `komy_sms_login`='ermolmolotov')
    Я всё уже расписал и понял что нужно подставить в выборку sql переменную которая при клике синхронизировалась скриптом.
    Тока как это хотя бы реализовать не понимаю.(((
    Аякс только начинаю изучать, знаний мало.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пожалуйста.
    я б айдишники юзеров использовал, а не логины.
     
  7. ermolmolotov

    ermolmolotov Новичок

    С нами с:
    21 авг 2014
    Сообщения:
    43
    Симпатии:
    0
    свой id я могу из $_SESSION взять а его id не знаю как достать(((
    Долго тупил где его брать, а потом решил по этой схеме.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    когда рисуешь страницу его id надо пихнуть куданить, откуда его удобно достать. например в дата-аттрибут кнопки, по которой кликаешь.
    http://htmlbook.ru/samouchitel-html5/atributy-data

    Теперь свет мудрости коснулся тебя. Теперь ты можешь делать запрос только с номером собеседника,а свой номер брать из сессии, и всё будет красиво и т.п.

    Следующий этап это когда ты захочешь применить .parents() =)
     
  9. ermolmolotov

    ermolmolotov Новичок

    С нами с:
    21 авг 2014
    Сообщения:
    43
    Симпатии:
    0
    Ещё раз спасибо)))
    Мне в совет читать английскую литературу?
    Или это напутствие ?
    При дальнейшем наборе опыта, такие ссылку в пользу ?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну там язык простой. можно читать легко.
    ну это официальная документация. хочешь не хочешь, а придётся.
     
  11. ermolmolotov

    ermolmolotov Новичок

    С нами с:
    21 авг 2014
    Сообщения:
    43
    Симпатии:
    0
    Спс за совет))
    Просто хотел убедиться что если умный человек выберет это, то и я потихоньку начну.
    Да, не думал что всё так быстро решиться))
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у меня тут много сообщений, но уровень не очень высокий. просто да, читать доки надо в оригинале, чтобы не отставать от изменения в версиях, и не путаться в переводах.