Php & MySQL для начинающих.

Fenix

Новичок
Php & MySQL для начинающих.

Доброго всем времени суток. Я очень надеюсь, что эта тема останется живой и будет жить, пока у меня будут возникать не слишком профессионального уровня вопросы, пока сам не подрасту.
Я хотел бы сказать, что только-только начинаю изучать "PHP & Mysql", потому вопросы наверняка будут поперву смешные.

Вопрос 1: Как сделать вывод через php всех полей, их значений и типов, а также вывести наличие\отсутсвие связи с другой таблицей, при том указать тип связи.
Например, должно быть что-то типа :

БД:какое-нибудь название
Таблица:кнн
Поле:кнз
Тип поля: (int,char,varchar,boоl и т.д)
Связана с таблицей: #не знаю вообще как должно отображаться.

Я уже делал вывод всех БД, а вот про типы полей и связки не нашел.

------комментарии-----
Я очень прошу мне помочь, так как я не сдаю это преподу, и деньги за это не получаю. Мне нужно просто разобраться, пока я не знаю за что ухватиться покрепче,так как выходит что нужно знать на достаточно высоком уровне почти всё.Я читал и мануалы и гуглил и пару учебников есть хороших. Это всё классные вещи, но коэффициент от этих знаний не очень высок на требуемой практике.Потому, прошу не откажите мне в помощи.
 

Fenix

Новичок
Я прошу прощения, я поставил задачу,которая выходит за рамки уровня "начинающих" или я поставил слишком "трудную" задачу и Вы мне предлагаете пойти почитать литературу,которая оправдает все мои ожидания?
 

Fortop

Новичок
Вопрос 1: Как сделать вывод через php всех полей, их значений и типов, а также вывести наличие\отсутсвие связи с другой таблицей, при том указать тип связи.
Я бы рекомендовал сделать это не PHP-средствами.

http://dev.mysql.com/downloads/workbench/5.2.html
умеет делать реверс-инжиниринг по существующей базе.

-~{}~ 29.03.10 21:39:

Да, а что касается типа связи 1-1, 1-n, n:m, то тут, увы, в MySQL это явным образом не задается, и получить эту информацию можно анализируя индексы по ссылочным полям.

Плюс, насколько я знаю, (non)mandatory связь по существующей структуре БД вообще определить нельзя, а по-умолчанию связи считаются обязательными.

-~{}~ 29.03.10 21:43:

относительно синтаксиса, то может помочь
DESCRIBE tablename;
SHOW CREATE TABLE tablename;

во втором случае есть информация о constraint
 

dimagolov

Новичок
Я прошу прощения, я поставил задачу,которая выходит за рамки уровня "начинающих" или я поставил слишком "трудную" задачу и Вы мне предлагаете пойти почитать литературу,которая оправдает все мои ожидания?
странная логика построения фразы.
я сказал то, что хотел сказать, что задача далеко не для начинающих и, как уже заметели, совсем не относится к пхп, пхп один из инструментов, которым ее можно решить. а если уж говорить о том, что я предлагаю, то предлагаю определиться, или нужно решение задачи (но тогда к начинающим это отношение не имеет) или вопрос с чего начинать изучение php & MySQL (тогда читать данную мною ссылку и вообще все материалы с того сайта, там как раз есть все, что нужно для начинающих).
 

Fenix

Новичок
dimagolov, я не знаю,мне радоваться или нет,что задача не для начинающих,и что я стою с ней совсем рядом. Меня интересует только реализация,я верю что есть здесь очень много программистов,которые посоветуют массу действительно умных книжек и дадут много ценных советов(но не решений). Однако мне чрезвычайно важно реализовать всё это(ну или хотя бы стоять на пороге решения) на этой неделе.Я говорил выше,что это не интузиазм,а практически работа без денег(стажировка).Я работаю с людьми, которым всё равно,что я студент,и что я это фактически должен изучать один на не совсем свежую после 4 пар голову каждый день.Нет,я не лентяй,просто не просто всё это.

Я бы рекомендовал сделать это не PHP-средствами.

http://dev.mysql.com/downloads/workbench/5.2.html
умеет делать реверс-инжиниринг по существующей базе.
Премного благодарен, но мне сказали это реализовать средствами php :(
Да, а что касается типа связи 1-1, 1-n, n:m, то тут, увы, в MySQL это явным образом не задается, и получить эту информацию можно анализируя индексы по ссылочным полям.

Плюс, насколько я знаю, (non)mandatory связь по существующей структуре БД вообще определить нельзя, а по-умолчанию связи считаются обязательными.
А можно вообще вывести инфу о наличии связей между таблицами?Точнее,это можно наверняка,только как?
DESCRIBE tablename;
SHOW CREATE TABLE tablename;
Вы не могли бы мне помочь?Куда можно написать эту строку(хотя бы исходя из примера,что дал dimagolov)
 

dimagolov

Новичок
Fenix, тут не пишут код на халяву. тем более столько кода, сколько нужно тебе. я не представляю, как ты будешь делать хоть что-то с учетом твоего вопроса
Вы не могли бы мне помочь?Куда можно написать эту строку
это запросы MySQL и писать их нужно или в консоль MySQL или в вызовы функций php для исполнения mysql запросов.

если бы задача стояла бы передо мной, то я бы сел бы изучать исходники phpMyAdmin и выдерать из них то, что касается структуры БД и таблиц, хотя именно со связями там грустно и по-моему средств их отображения нету.
 

Fenix

Новичок
>>это запросы MySQL и писать их нужно или в консоль MySQL >>или в вызовы функций php для исполнения mysql запросов.
И на том спасибо.

исходники phpMyAdmin
За это тоже спасибо,поюзаю завтра.
Я могу рассчитывать на дальнейшие советы хотя бы в таком виде?
 

Fortop

Новичок
А можно вообще вывести инфу о наличии связей между таблицами?Точнее,это можно наверняка,только как?
Если по ссылкам ниже не сказано как - то никак.
http://dev.mysql.com/doc/refman/5.1/en/
http://dev.mysql.com/doc/refman/5.1/en/tables-table.html

В структуре таблиц смотреть в сторону REFERENCE, CONSTRAINT, FOREIGN KEY
 

Fenix

Новичок
Никто не знает, что тут не так? погуглив, я понял что дело в скобке(}). Однако,ошибка остается и скобки парные все=(

ОШИБКА

Parse error: syntax error, unexpected $end in D:\apache\Apache2\htdocs\results.php on line 60


КОД


PHP:
<html>
 <head>
  
  <title>Магазин</title>
 </head>

 <body>
<h1>Результаты поиска</h1>
<?php

$searchtype=$HTTP_POST_VARS['searchtype'];
$searchterm=$HTTP_POST_VARS['searchterm'];
$searchterm=trim('searchtype');
if(!$searchtype || $searchterm)
{
echo 'вы ввели не все параметры поиска.';
exit;
}
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);

@  $db=mysql_connect('localhost','root','fenix');
if(!$db)
{
echo 'Нет коннекта!';
exit;
}

mysql_select_db('test');


$query="select * from test where ".$searchtype." like '%".$searchterm."%'";

$result=mysql_query($query);

$num_results=mysql_num_rows($result);

echo '<p>Найдено книг: '.$num_results.'</p>";
for ($i=0; $num_results=$i;$i++)
{
$row = mysql_fetch_array($result);

echo "<p>  <strong>'.($i+1).'. Название: ";

echo htmlspecialchars (stripslashes($row["title"]));

echo "</ strong> <br /> Автор: ";
echo htmlspecialchars(stripslashes($row["autor"]));
echo "<br />ISBN: ";
echo htmlspecialchars(stripslashes($row["isbn"]));
echo "<br />Цена: ";
echo htmlspecialchars(stripslashes($row["price"]));
echo "</p>";
}

?>

</body>

</html>
-~{}~ 10.04.10 14:51:

П.С в цикле я пока что поменял < на =. Он тогда теги с php начинает совмещать и ппц, яне знаю как от этого избавиться!
получается < с цикла соединяется с концом тега php!
 

zerkms

TDD infected
Команда форума
phpfaq.ru/debug

убирай куски кода, пока не найдёшь проблему
 

Фанат

oncle terrible
Команда форума
Fenix, начни с того, что найди себе редактор с подсветкой кода. Это ОЧЕНЬ помогает в программировании. Как видишь - с подсветкой ошибка тут же становится видна.
 

Fenix

Новичок
Extra Hide Studio 2010 поставил, результапока нулевой. как была ошибка,так и осталась. Parse error: syntax error, unexpected $end in D:\apache\Apache2\htdocs\results.php on line 62
П.С. в строке echo "<p> <strong>'.($i+1).. Название: ";
между двумя точками потерялась ' .
 

zerkms

TDD infected
Команда форума
Fenix
глаза открой - какой предпоследний символ в этой строке?
 

Фанат

oncle terrible
Команда форума
Fenix
ты правда думаешь, что постановка нового редактора исправит ошибку в твоем коде? Редактор нужен, чтобы посмотреть на код. Здесь, в этом топике твой код подсвечен. ты НИЧЕГО необычного не замечаешь?
 

zerkms

TDD infected
Команда форума
Fenix

echo '<p>Найдено книг: '.$num_results.' </p>" ;

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

Fenix

Новичок
Благодарю. Мозг пытаюсь включить,устал просто за 7 часов сидения над кодом...Спасибо за помощь.

------------------------------------------------------------------------------
Помогите пожалуйста решить последнюю задачу, и больше никого глупыми вопросами мучать не буду. Наверняка тоже какая-нибудь кавычка или еще что-то. Нужен свежий взгляд,посмотрите пожалуйста. Два файла, в одном вводим значения, которые адресуются во второй файл и там записываются в БД. Я не знаю, толи не коннектится к БД, толи еще что. Сам по себе и php и БД работают,проверил стандартной проверкой вывода.

ФАЙЛ с вводом.



<html>
<head>

<title>Магазин</title>
</head>

<body>
<h1>Вводи новой книги</h1>
<form action="insert_book.php" method="post">
<TABLE BORDER="0">
<tr>
<td>isbn</td>
<td><input type="text" name="isbn" maxlenght="13" size="13"><br /></td>
</tr>
<tr>

<td>Автор</td>
<td><input type="text" name="autor" maxlenght="30" size="30"><br /></td>
</tr>
<tr>

<td>Название</td>
<td><input type="text" name="title" maxlenght="60" size="30"><br /></td>
</tr>
<tr>
<td>Цена</td>
<td><input type="text" name="price" maxlength="7" size="7"><br /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="зарегистрировать"></td>
</tr>
</table>
</form>
</body>

</html>


Файл с записью в БД

<html>
<head>

<title>Магазин</title>
</head>

<body>
<h1>результат ввода новой книги</h1>

<?php
$isbn=$HTTP_POST_VARS['isbn'];
$autor=$HTTP_POST_VARS['autor'];
$title=$HTTP_POST_VARS['title'];
$price=$HTTP_POST_VARS['price'];

if(!$isbn || !$autor || !$title || !$price)
{
echo "введено не всё!";
exit;
}

$isbn=addslashes($isbn);
$autor=addslashes($autor);
$title=addslashes($title);
$price=addslashes($price);


@ $db = mysql_connect("localhost", "root","fenix");
if( !$db );


mysql_select_db("test");


$query = "insert into test values
('".$isbn."', '".$autor."', '".$title."', '".$price."')";


$result = mysql_query($query);
if($result)
echo mtsql_affected_rows()." книга добавлены в бд.";

?>

</body>

</html>
 
Сверху