2011-12-16 4 views
0

Я создал случайный генератор строк. То, что происходит в том, что пользователь должен нажать на кнопку и с помощью букв A и B будет построить 3 письмо строку, как это, например,:Как связаться с базой данных

AAA 
AAB 
ABA 
ABB 
BAA 
BAB 
BBA 
BBB 

Теперь то, что я хочу, это моя случайная генерация строк, чтобы связать с Столбец «SessionId», который находится в таблице «Session» моей базы данных, в которой будут храниться эти строки. Я хочу, чтобы кнопка создавала строку, которая не находится в базе данных. Например смотрите ниже (SessionId в таблице Session):

Session Id 

AAA 
AAB 

В этих двух сессий (строка AAA и AAB) находятся в базе данных генератор не должен отображать эти две строки вообще при нажатии на кнопку и порождающая как они уже находятся в базе данных. Позже я хочу, чтобы genrated string хранилась в базе данных, но на данный момент я просто хочу, чтобы мой генератор генерировал строки, которые уже находятся в базе данных.

Кто-нибудь знает, как связать это с моим полем «Session Id» в таблице «Session» и сгенерировать строки, которых нет в базе данных?

Мой код в jsfiddle, так что вы можете увидеть, как кнопка работает и код, используемый, нажмите here, чтобы увидеть

Ниже моя PHP код, я использую в настоящее время. Этот PHP-код позволит мне подключиться к базе данных и всем пользователям ввести курс в текстовом поле, если courseId находится в текстовом поле, тогда пользователь может ввести другое, он отобразит предупреждение. Ниже код:

 <?php 

       $username="xxxxxxxxxxx"; 
       $password="xxxxxx"; 
       $database="mobile_app"; 

       mysql_connect('localhost',$username,$password); 
       @mysql_select_db($database) or die("Unable to select database"); 

       foreach (array('courseid') as $varname) { 
       $courseid = (isset($_POST[$varname])) ? $_POST[$varname] : ''; 
       } 

      ?> 


<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> 
<p>Course ID: <input type="text" name="courseid" value="<?php echo $courseid; ?>" /><input type="submit" value="Submit" name="submit" /></p>  <!-- Enter User Id here--> 
      </form> 

      <?php 
    if (isset($_POST['submit'])) { 
     $query = " 
        SELECT cm.CourseId, cm.ModuleId, 
        c.CourseName, 
        m.ModuleName 
        FROM Course c 
        INNER JOIN Course_Module cm ON c.CourseId = cm.CourseId 
        JOIN Module m ON cm.ModuleId = m.ModuleId 
        WHERE 
        (c.CourseId = '".mysql_real_escape_string($courseid)."') 
        ORDER BY c.CourseName, m.ModuleId 
        "; 



    $num = mysql_num_rows($result = mysql_query($query)); 
     mysql_close() 

; 
?> 

обновленный код PHP ниже:

<?php 

     $username=xxx"; 
     $password="xxx"; 
     $database="mobile_app"; 


     $is_there = true; 

     $con = mysql_connect('localhost',$username,$password); 
     @mysql_select_db($database, $con) or die("Unable to select database"); 

while($is_there){ 
    $id = id_generator(); // your function to generate id; 
    $result = mysql_query("SELECT SessionId FROM Session WHERE SessionId = '$id'"); 
    if(mysql_num_rows($result) == 0) $is_there = false; 
} 




     foreach (array('courseid', 'sessionid') as $varname) { 
     $$varname = (isset($_POST[$varname])) ? $_POST[$varname] : ''; 
     } 

    ?> 

    <h1>CREATING A SESSION</h1> 

     <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> 
     <p>Course ID: <input type="text" name="courseid" value="<?php echo $courseid; ?>" /><input type="submit" value="Submit" name="submit" /></p>  <!-- Enter User Id here--> 
     </form> 

     <?php 
if (isset($_POST['submit'])) { 
    $query = " 
       SELECT cm.CourseId, cm.ModuleId, 
       c.CourseName, 
       m.ModuleName 
       FROM Course c 
       INNER JOIN Course_Module cm ON c.CourseId = cm.CourseId 
       JOIN Module m ON cm.ModuleId = m.ModuleId 
       WHERE 
       (c.CourseId = '".mysql_real_escape_string($courseid)."') 
       ORDER BY c.CourseName, m.ModuleId 
       "; 

    $num = mysql_num_rows($result = mysql_query($query)); 
    mysql_close(); 
+3

Извините. Мой мозг убежал. Что ты пытаешься сделать? (объяснение для манекенов) –

+0

@ Майкл Сазонов ... это курортный сезон. Мой мозг также стремится освободиться в это время года. – rdlowrey

+0

У меня есть база данных, которая содержит таблицу сеансов. Внутри таблицы сеанса находится идентификатор сеанса. SessionId хранится в предыдущих сгенерированных строках, которые были выбраны. Теперь, если в базе данных уже есть строка типа «AAA», тогда, когда пользователь создает новую строку, она никогда не будет генерировать строку «AAA», поскольку она уже сделана (уже сохранена в базе данных). Мне нужно, чтобы он работал именно так. – BruceyBandit

ответ

0

Ваш код на сервере должен быть как:

$is_there = true; 

$con = mysql_connect(address , user, pass); 
mysql_select_db(DATABASE , $con); 

while($is_there){ 
    $id = id_generator(); // your function to generate id; 
    $result = mysql_query("SELECT * FROM your_table WHERE id = '$id'"); 
    if(mysql_num_rows($result) == 0) $is_there = false; 
} 

Это прекратится, когда генерируется идентификатор не найден в БД.

<?php 

       ... 
       @mysql_select_db($database) or die("Unable to select database"); 
       $courseid = ""; 
       while($is_there){ 
       $courseid = id_generator(); // your function to generate id; 
       $query = " 
        SELECT cm.CourseId, cm.ModuleId, 
        c.CourseName, 
        m.ModuleName 
        FROM Course c 
        INNER JOIN Course_Module cm ON c.CourseId = cm.CourseId 
        JOIN Module m ON cm.ModuleId = m.ModuleId 
        WHERE 
        (c.CourseId = '".mysql_real_escape_string($courseid)."') 
        ORDER BY c.CourseName, m.ModuleId 
        "; 

       if(mysql_num_rows($result = mysql_query($query)) == 0) $is_there = false; 
       } 
       mysql_close(); 
       echo "You generated code id: " . $courseid; 

       ?>... 
+0

Привет, я включил свой PHP-код, мне нужно добавить другой запрос или я могу включить предложение WHERE в мой текущий запрос? – BruceyBandit

+0

Как сказал jfriend00, лучше создать идентификатор на сервере. Я не видел, как именно вы делаете запрос? Вы только что забыли mysql_query() или что-то еще? –

+0

Привет, нет еще нескольких php, где result = mysql_query, это только что было показано внизу моего PHP-кода. Надеюсь, это поможет :) – BruceyBandit

0

Если то, что вы пытаетесь сделать, это сгенерировать случайный идентификатор сеанса, который уже не в вашей базе данных, то вам, вероятно, потребуется для создания метода сервера для генерации нового идентификатора сеанса, который уже создает идентификатор, который еще не находится в базе данных, и использовать вызов ajax для извлечения этого нового идентификатора сеанса с сервера.

Если вы попытаетесь получить все существующие идентификаторы в клиенте, а затем сгенерируете новый идентификатор на клиенте, вы откроете себе условия гонки, которые позволили бы клиентам иметь одинаковый идентификатор (потому что они оба делали один примерно в то же время). Этот тип операции должен выполняться на сервере с помощью соответствующих блокировок, чтобы избежать условий гонки. Как вы это делаете на сервере, зависит от того, какую базу данных/серверную структуру вы используете.

+0

Привет, проблема в том, что я знаю теорию, но я действительно понятия не имею, чтобы не кодировать ее, я все еще изучаю javascript, и я не использовал php в течение 2 лет, если вы или кто-то может предоставить пример кода, то я могу попробовать и изменить его, чтобы соответствовать моей спецификации. Большое спасибо, если это можно сделать. – BruceyBandit

+0

Я использую базу данных MYSQL, кстати, – BruceyBandit

+0

Это вопрос PHP, mySQL (ничего общего с javascript), который не является моей областью. Надеюсь, кто-то еще может весить, чтобы помочь. – jfriend00

Смежные вопросы