1

Тема: Работа с phpmyadmin

Добрый день! не подскажите, мне нужно через созданный мной веб интерфейс пересылать sql запросы в phpmyadmin, чтобы они там обрабатывались и выдавали мне результат обратно на мою страничку в виде таблицы, которую я запросил, такое возможно реализовать с помощью phpmyadmin и где можно об этом узнать поподробнее, а то из за не опытности даже в поисковиках не могу найти ничего похожего. Спасибо заранее за помощь!

2 (изменено: DmitryV, 2011-03-03 12:01:03)

Re: Работа с phpmyadmin

Вам для этого не нужен phpadmin - вы прямо пишите на php скрипты работы с вашими таблицами, phpMyAdmin это утилита для работы с базой данных а не mysql шлюз, и служет именно для удобства работы с базой данных, и сам написан на языке PHP.
http://phpclub.ru/detail/article/phpintro

3

Re: Работа с phpmyadmin

Ок, спасибо большое, с этим разобрался, а не подскажете, нужно сделать так чтобы перед отправкой запрос,введенный в textarea, проверялся на наличие команд select и from и выводил сообщения об отсутствии данных команд в запросе. думаю что это можно реализовать как в php так и javascript, но как будет лучше?

4

Re: Работа с phpmyadmin

проверяйте строку на наличеие в ней вхождений другой строки, в PHP функции работы со строками. http://htmlweb.ru/php/php_string.php  функции strstr, strpos а также функции поиска по регулярным выражениям http://htmlweb.ru/php/php_regexp.php

5

Re: Работа с phpmyadmin

Спасибо большое за помощь! Я просто создаю обучающий комплекс для студентов по mysql на веб интерфейсе, хотя сам не особо владею sql. В прицепе все уже становиться понятным, но есть еще вопрос, у меня есть селект в котором выбирается номер вопроса, а как значение селекта связать с базой данных, в которой хранится задание и правильный ответ, чтобы при выборе подгружался нужный вопрос и после ввода запроса шла сверка с правильным ответом?

6

Re: Работа с phpmyadmin

Рома сказал:

чтобы при выборе подгружался нужный вопрос и после ввода запроса шла сверка с правильным ответом?

Если все это должно производиться без перезагрузки страницы, то только Ajax, и для этого лучше всего использовать библиотеку jQuery.

Если все делать только на PHP, то примерно так:

<form action="" method="post">
<select name="select">
  <option value="1">Номер 1</option>
</select>
<input type="submit" value="Отправить" />
<?php

if (isset($_POST['select'])) {
    // $sql = 'SELECT * FROM `table` WHERE `select` = ' . $_POST['select'];
}

?>
</form>

7

Re: Работа с phpmyadmin

Это понятно, спасибо большое) но вот как быть с селектом? как связать номер селекта и базу с вопросом и ответом? как вариант можно было бы в значение value селекта записать вопрос и при выборе он бы появлялся бы в нужно поле, но ответ все равно должен где то храниться и сверяться и я думаю что и вопрос тоже целесообразнее держать в одной базе с ответом.

8

Re: Работа с phpmyadmin

Рома сказал:

как связать номер селекта и базу с вопросом и ответом?

Таблица из трех полей: идентификатор (value для тега select), вопрос, и поле ответа.

Тегом select выбирается название вопроса, по идентификатору из БД выбирается полный текст вопроса, при ответе делается сравнение с правильным ответом.

9

Re: Работа с phpmyadmin

question - в этом поле храниться текст вопроса,
№question - соответственно номер вопроса. должен сравниваться с номером , выбранным в селекте
но почему то не работает.



<body>
<script language="JavaScript">
function changeText(form) {
selection = form.question.options[form.question.selectedIndex].value;
<?php
$b=$POST["selection"];
/* Создаем соединение */
mysql_connect("localhost", "root", "") or die ("Не могу создать соединение");
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db("uchet") or die (mysql_error());
/* Составляем запрос для извлечения данных из полей таблицы */
$query = "SELECT question FROM otvet WHERE №question=$b";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());
/* Выводим данные из таблицы */
echo "document.form1.Edit.value ="$res;
?> }
</script>
№ Вопроса
<form action="2.php" method="post" name="form1">
<select size=1 name="question" onChange="changeText(this.form)">
<option value="1">1(1)</option>
<option value=2>2(1)</option>
<option value=3>3(1)</option>
</select>
<br>
<textarea name="Edit" overflow: hidden readonly style="border:2px solid white" cols=32 rows=5></textarea>
<br><br><br>
Ответ<br>
<textarea name="otvet" cols=32 rows=5></textarea>
<input type=submit value="выполнить" >
<input type=submit value="Показать правильный результат" >
</form>
</body>

10

Re: Работа с phpmyadmin

Рома сказал:

question - в этом поле храниться текст вопроса,
№question - соответственно номер вопроса.

Это работать не будет.

Первая часть должна выглядеть примерно так.

<form action="2.php" method="post" name="form1">
<select name="question">
<option value="1">1(1)</option>
<option value="2">2(1)</option>
<option value="3">3(1)</option>
</select>
<br>
<textarea name="Edit" style="border:2px solid white" cols="32" rows="5">
<?php

if (isset($_POST['question'])) {
  $sql = 'SELECT question FROM otvet WHERE №question=' . $_POST['question'];
}

?>
</textarea>
<input type=submit value="выполнить" >
</form>

Проверьте выполнение запроса в phpMyAdmin подставив любое значение.
SELECT question FROM otvet WHERE №question=

11 (изменено: Рома, 2011-03-10 18:49:50)

Re: Работа с phpmyadmin

подскажите пожалуйста в чем я ошибся:) есть форма с полем ввода, в которое вводится строка формата запроса sql.
В php файле, обработки введенных данных, необходимо проверить присутствие в введенной строке слов "select" и "from". (регистр независимая проверка). проверка select выполняется нормально, а from вообще не выполняется..почему так?

<?
//Получаем данные
$q = $_POST["otvet"];
$a   = str_word_count($q, 1); //разбиваем строку на массив
if  (@strcasecmp($a[0], "select") <> 0)  echo "<script language=javascript>window.alert('Оператор должен начинаться с SELECT');</script>";
elseif (@strcasecmp($a, "from") <> 0)  echo "<script language=javascript>window.alert('В предложении отсутствует FROM');</script>";
?>

12

Re: Работа с phpmyadmin

Сделайте проверку простейшим регулярным выражением.

if (!preg_match('/select.*from/is', $_POST["otvet"])) {
  // Не найдены ключевые слова select и from.
}

13

Re: Работа с phpmyadmin

Спасибо большое Вам за помощь, но вот возник еще вопрос:
$query = 'SELECT true_results FROM otvet WHERE namber=$w';
как правильно надо записать переменную $w чтобы она заработала, а то что то не получается..

14

Re: Работа с phpmyadmin

Если в переменной целое число, то так:

$query = 'SELECT true_results FROM otvet WHERE namber=' . $w;

15

Re: Работа с phpmyadmin

а если строка?

16

Re: Работа с phpmyadmin

Рома сказал:

а если строка?

Тогда так.

$query = 'SELECT true_results FROM otvet WHERE namber= "' . addslashes($w) . '"';

17

Re: Работа с phpmyadmin

Отлично спасибо!

18

Re: Работа с phpmyadmin

$a="select onum, amt, odate from orders where amt >1000";
$b="select sity, sname from sales";

какую функцию лучше использовать при сравнении двух строк в php чтобы была регистронезависима

if (strcasecmp($a, $b)==0)
echo "строки равны";
У меня почему то не работает эта функция(

19

Re: Работа с phpmyadmin

Рома сказал:

какую функцию лучше использовать при сравнении двух строк в php чтобы была регистронезависима

Все правильно вы сделали. Попробуйте в обе переменные одинаковую строку прописать и увидите "строки равны".

20

Re: Работа с phpmyadmin

если ввожу разные значения все равно пишет "строки равны"

21

Re: Работа с phpmyadmin

Рома сказал:

если ввожу разные значения все равно пишет "строки равны"

Значит вы где-то допустили ошибку. Функция должна работать правильно.

22

Re: Работа с phpmyadmin

попробовал вот так, но почему то результат всегда выводит "неверно"

$q2=$_POST["data2"]; //тип число
$q = $_POST["data"]; // тип строка
mysql_connect("localhost","root", "") or die ("Не могу создать соединение с базой данных");
mysql_select_db("uchet") or die (mysql_error());
$query2 = "SELECT true_results FROM otvet WHERE namber='$q2'";
$res2 = mysql_query($query2) or die(mysql_error());
$myrow = mysql_fetch_row($res2); //массив данных
$b = implode("",$myrow);echo "<br>"; // преобразуем массив в строку
if (!strcasecmp($q,$b)) // сравнение строк
{
echo "Верно"; echo "<br>";}
else
echo"Не верно";

23

Re: Работа с phpmyadmin

Если этот код выводит, что строки неравны - значит они отличаются.

if (strcasecmp($q,$b) == 0) {
  echo "Верно"; echo "<br>";
} else {
  echo"Не верно";
}

24

Re: Работа с phpmyadmin

да согласен, я ошибся

25

Re: Работа с phpmyadmin

Спасибо большое Вам за помощь! Остался пожалуй последний вопрос..суть моего учебного комплекса заключается вот в чем, на паре студенты заходят на веб-страницу, которая находится на сервере, регистрируются и начинают проходить задания по SQL, и вот в чем собственно вопрос: студент зашел, зарегистрировался и где найти переменную, в которой хранится имя человека, который в данный момент находится на сайте на данной машине, чтобы в дальнейшем оперировать именем зашедшего человека?