|
|
|
| подскажите пожалуйста, как организовать соытие onClick для кнопочки добавления данных в базу? Если не обязательно это делать с помощью onClick, то подскажите, как вообще это сделать... | |
|
|
|
|
|
|
|
для: olgapak
(02.07.2008 в 09:51)
| | Можно так:
<form action="file.php" method="post" name="my_form" >
<input type="text" name="my1"/>
<input type="button" value="Добавить"/ onclick="document.forms['my_form'].submit()">
</form>
|
Или так:
<form action="file.php" method="post">
<input type="text" name="my1"/>
<input type="submit" value="Добавить"/>
</form>
|
Код добавления в БД нужно писать на РНР в файле file.php. | |
|
|
|
|
|
|
|
для: coloboc66
(04.07.2008 в 21:53)
| | А нельзя сделать так, чтобы все было в одном окне? Т.е. у меня несколько полей для ввода данных, а ниже сама таблица с данными, на этой же страничке. Вот мне нужно в таблицу Books базы данных BookShop добавить новую запись:
<?php
echo "<font color=white ><b>The Time is </font>";
echo(date("H:i"));
echo " <font color=white> Today </font>";
echo (date(" d F Y "));
?>
<p>
<?php
$dbhandle=mysql_connect("localhost", "root", "");
$db=mssql_select_db("BookShop") or die ("Could not select db");
$sql = 'select * from Books';
$result = mssql_query($sql);
echo "<table border=1% width=90% bordercolor=black align=center>\n";
$first_line=true;
while ($row = mssql_fetch_array($result, MYSQL_ASSOC))
{
if($first_line){
echo "<tr >";
foreach ($row as $id => $value)
echo "<th><b>".htmlspecialchars($id)."</th></b>";
echo "</tr>\n";
$first_line=false;
}
echo "<tr>\n";
foreach ($row as $value)
echo "<td>".htmlspecialchars($value)."</td>";
echo "</tr>\n";
}
echo "</table>\n";
$link2 = mysql_connect('localhost','root','') or die;
mysql_select_db('BookShop') or die;
$TitleID=(real)$_GET["TitleID"];
$Title=(string)$_GET["Title"];
$Publisher=(string)$_GET["Publisher"];
$PubDate=(int)$_GET["PubDate"];
$Edition=(string)$_GET["Edition"];
$Cost=(double)$_GET["Cost"];
$ConditionID=(real)$_GET["ConditionID"];
$Sold=(string)$_GET["Sold"];
$sql = "INSERT INTO Books (TitleID, Title, Publisher, PubDate, Edition, Cost, ConditionID, Sold)
VALUES ($TitleID, $Title, $Publisher, $PubDate, $Edition, $Cost, $ConditionID, $Sold);";
mysql_query($sql);
mysql_close($link2)
?>
|
| |
|
|
|
|
|
|
|
для: olgapak
(08.07.2008 в 12:47)
| | Можно, для этого форме задайте УРЛ родительского окна.
<form action="file.php" method="post">
Но окно всё-равно будет перезагружаться. Чтобы не было перезагрузки, нужно аякс использовать. | |
|
|
|
|
|
|
|
для: coloboc66
(08.07.2008 в 13:02)
| | Я все подключила, все вставила, нажимаю кнопку данные куда-то уходят, но не добавляется новая запись в таблицу. Может быть я что-то не так делаю, просто вообще я php хорошо не знаю, я стала сама изучать его, поэтому кое-какие проблемки возникают | |
|
|
|
|
|
|
|
для: olgapak
(09.07.2008 в 10:43)
| | У вас код, если мягко - "ужасно выглядит". Допустим, что сама форма у вас выводится другим скриптом, но почему вы без всякой проверки, пришла ли вам форма, начинаете запись в базу? Если вы используете форму, которую в примере привел coloboc66, а она использует метод передачи POST, то почему вы работаете с GET данными? | |
|
|
|
|
|
|
|
для: olgapak
(09.07.2008 в 10:43)
| | Для сабмита формы НЕОБХОДИМО иметь окно браузера.
Если вам надо просабмитить форму таковым образом, чтобы юзер этого процесса не увидел, то существует простейший вариант: прописываете на странице невидимый ифрейм, куда и отправляете данные формы (любым методом - хоть POST, хоть GET):
<iframe name="myIFRAME" style="display: none"></iframe>
...
<form target="myIFRAME"...>
|
| |
|
|
|
|
|
|
|
для: PAT
(09.07.2008 в 11:00)
| | Так у девушки в коде и формы я что-то не вижу... | |
|
|
|
|
|
|
|
для: coloboc66
(09.07.2008 в 11:09)
| | Ну во первых вверху в форме записан метод POST а извлекаете вы всё из GET. А во вторых сейчас дам код, немного подправил. Там у вас таблица коряво выводится.
<tr>
<?php
foreach ($row as $value){
echo "<td>".htmlspecialchars($value)."</td>";
echo "</tr>\n";
}
?>
</table>
|
Если нужно чтобы выводилась каждый раз новая строка то замените на
<?php
foreach ($row as $value){
echo "<tr>\n"
echo "<td>".htmlspecialchars($value)."</td>";
echo "</tr>\n";
}
?>
</table>
|
Если же всё в одной строке с кучей ячеек то на
<tr>
<?php
foreach ($row as $value){
echo "<td>".htmlspecialchars($value)."</td>";
}
?>
</tr>
</table>
|
Вот код попоробуйте вставить и потестировать
<font color=white ><b>The Time is </font>
<?php echo(date("H:i")); ?>
<font color=white> Today </font>
<?php echo (date(" d F Y ")); ?>
<form method="get">
<!-- Здесь ваша форма теми полями которые у Вас указаны в массиве Get
То есть чтобы была переменная $_GET["TitleID"]
нужно к примеру указать поле в форме
<input type="text" name="TitleID" />
и т.д.
для того чтобы сработала проверка на отправку формы
if ($_GET['submit']){
добавьте для отправки такое поле см. ниже
-->
<input type="submit" name="submit" value="Добавить">
</form>
<p>
<?php
$dbhandle=mysql_connect("localhost", "root", "");
$db=mysql_select_db("BookShop") or die ("Could not select db");
$sql = 'select * from Books';
$result = mssql_query($sql);
?>
<table border=1% width=90% bordercolor=black align=center>
<?php
$first_line=true;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
if($first_line){
echo "<tr >";
foreach ($row as $id => $value)
echo "<th><b>".htmlspecialchars($id)."</th></b>";
echo "</tr>\n";
$first_line=false;
}
?>
<tr>
<?php
foreach ($row as $value){
echo "<td>".htmlspecialchars($value)."</td>";
}
?>
</tr>
</table>
<?php
$link2 = mysql_connect('localhost','root','') or die ("Not connected");
mysql_select_db('BookShop') or die ("The database is missed");
if ($_GET['submit']){
$TitleID=(real)$_GET["TitleID"];
$Title=(string)$_GET["Title"];
$Publisher=(string)$_GET["Publisher"];
$PubDate=(int)$_GET["PubDate"];
$Edition=(string)$_GET["Edition"];
$Cost=(double)$_GET["Cost"];
$ConditionID=(real)$_GET["ConditionID"];
$Sold=(string)$_GET["Sold"];
}
else{
echo "<h1>The form does not submited</h1>";
}
$sql = "INSERT
INTO Books
(TitleID, Title, Publisher, PubDate, Edition, Cost, ConditionID, Sold)
VALUES
($TitleID, $Title, $Publisher, $PubDate, $Edition, $Cost, $ConditionID, $Sold)";
mysql_query($sql);
mysql_close($link2)
?>
|
Понравился этот кусок кода :-)
<?php
$first_line=true;
while ($row = mssql_fetch_array($result, MYSQL_ASSOC)){
if($first_line){
echo "<tr >";
foreach ($row as $id => $value)
echo "<th><b>".htmlspecialchars($id)."</th></b>";
echo "</tr>\n";
$first_line=false;
}
?>
|
можно было бы написать так
<?php
do ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
echo "<tr >";
foreach ($row as $id => $value){
echo "<th><b>".htmlspecialchars($id)."</th></b>";
echo "</tr>\n";
}
}
while(false)
?>
|
и почему там команда mssql а не mysql ? :-) | |
|
|
|
|
|
|
|
для: White_Owl
(09.07.2008 в 15:56)
| | Большое человеческое сапсибо за то, что понимаете чайника :) а команда mssql потому, что соединяю с SQL Server. | |
|
|
|
|
|
|
|
для: White_Owl
(09.07.2008 в 15:56)
| | Я все вставила, база выходит, но не добавляет еовую запись. Ошибка: The form does not submited. А это может быть из-за того, что типы данных в SQL не совпадают c типами в php, поэтому невозможно добавиь запись? | |
|
|
|
|
|
|
|
для: olgapak
(10.07.2008 в 13:33)
| | запись не добавляется, потому что с формы не пришла. POST и GET не смешаны? | |
|
|
|
|
|
|
|
для: GeorgeIV
(10.07.2008 в 13:39)
| | нет, не смешаны, везде метод GET, я исправила эту ошибку. Я уже не знаю, что делать, мне тут уже весь код человек написал, а оно не работает. Просто может быть загвоздка еще в том, что связываю SQL Server | |
|
|
|
|
|
|
|
для: coloboc66
(09.07.2008 в 11:09)
| | Так у девушки в коде и формы я что-то не вижу...
Просто я не стала писать код формы, мне главно кнопку добавления селать | |
|
|
|
|
|
|
|
для: olgapak
(10.07.2008 в 12:49)
| | Так у вас есть форма или нет?! И какой метод в ней используется? Как понять: "Просто я не стала писать"??? Вы уж пишите как положено, а то вводите людей в заблуждение... | |
|
|
|
|
|
|
|
для: coloboc66
(10.07.2008 в 13:54)
| | Форам у меня есть, метод GET, как и везде. Я сюда, на форум не стала втыкать форму, заечем? главное код рнр нормально исправить | |
|
|
|
|
|
|
|
для: coloboc66
(10.07.2008 в 13:54)
| | Форам у меня есть, метод GET, как и везде.Я пнимаю, Вы меня за чайника считаете, но не до такой же степени, чтобы тут интересоваться про кнопочку, при этом не иметь формы для ввода. Просто я сюда, на форум не стала втыкать код формы, зачем? главное код рнр нормально исправить | |
|
|
|
|
|
|
|
для: olgapak
(10.07.2008 в 14:33)
| | так при неправильно созданной форме остальной код уже не поможет. у тебя же четко говорится в ошибке, что данных с формы нет, так причем тут пхп код, тут как раз важнее сама форма | |
|
|
|
|
|
|
|
для: GeorgeIV
(10.07.2008 в 14:57)
| | Логично...
<form method="get">
А где action="..." ??? | |
|
|
|
|
|
|
|
для: coloboc66
(10.07.2008 в 15:10)
| | Вот это мой код, полностью, вместе с формой. Может тогда так можно найти ошибку? action="file.php", потому что нужно, чтобы все было в одном окне.
<html>
<head><title>DataBase</title>
<link href="style.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<style type="text/css">
<!--
.style1 {color: Black}
-->
</style>
</head>
<body bgcolor="lightblue">
<form method="get" action="file.php" name="my_form">
<p>
<span class="style1">TitleID</span>
<input type="text" name="TitleID">
</p>
<p>
<span class="style1">Title</span>
<input type="text" name="Title">
</p>
<p>
<span class="style1">Publisher</span>
<input type="text" name="Publisher">
</p>
<p>
<span class="style1">PubDate</span>
<input type="text" name="PubDate">
</p>
<p>
<span class="style1">Edition</span>
<input type="text" name="Edition">
</p>
<p>
<span class="style1">Cost</span>
<input type="text" name="Cost">
</p>
<p>
<span class="style1">ConditionID</span>
<input type="text" name="ConditionID">
</p>
<p>
<span class="style1">Sold</span>
<input type="text" name="Sold">
</p>
<input type="submit" name="submit" value="Добавить">
</form>
<p>
<?php
echo"<font color=white ><b>The Time is </font>";
echo(date("H:i"));
echo"<font color=white> Today </font>";
echo (date(" d F Y "));
?>
<?php
$dbhandle=mysql_connect("localhost", "root", "");
$db=mssql_select_db("BookShop") or die ("Could not select db");
$sql='select * from Books';
$result=mssql_query($sql);
echo"<table border=1% width=100% bordercolor=black>";
$first_line=true;
while ($row=mssql_fetch_array ($result, MYSQL_ASSOC))
{
if($first_line)
{
echo"<tr>";
foreach($row as $id => $value)
echo"<td><b>".htmlspecialchars($id)."</b></td>";
echo"</tr>";
$first_line=false;
}
echo"<tr>";
foreach($row as $value)
echo"<td>".htmlspecialchars($value)."</td>";
echo"</tr>";
}
echo"</table>";
$link2 = mysql_connect('localhost','root','') or die ("Not connected");
mssql_select_db('BookShop') or die ("The database is missed");
if ($_GET['submit'])
{
$TitleID=(real)$_GET['TitleID'];
$Title=(string)$_GET['Title'];
$Publisher=(string)$_GET['Publisher'];
$PubDate=(integer)$_GET['PubDate'];
$Edition=(string)$_GET['Edition'];
$Cost=(double)$_GET['Cost'];
$CondotionID=(real)$_GET['ConditionID'];
$Sold=(string)$_GET['Sold'];
}
else
{
echo "<h1>The form does not submited</h1>";
}
$sql = "INSERT INTO Books (TitleID, Title, Publisher, PubDate, Edition, Cost, ConditionID, Sold)
VALUES ($TitleID, $Title, $Publisher, $PubDate, $Edition, $Cost, $ConditionID, $Sold)";
mysql_query($sql);
mysql_close($link2);
?>
|
| |
|
|
|
|
|
|
|
для: olgapak
(14.07.2008 в 08:38)
| | Всё до sql-запросов работает и данные принимаются. У вас как назван файл со всем этим кодом? | |
|
|
|
|
|
|
|
для: coloboc66
(14.07.2008 в 09:44)
| | File.php. Я просто хочу, чтобы все действия происходили в одном окне(желательно). | |
|
|
|
|
|
|
|
для: olgapak
(14.07.2008 в 10:15)
| | Так у вас разные названия файла (File.php) и файла в форме:
<form method="get" action="file.php" name="my_form"> | |
|
|
|
|
|
|
|
для: coloboc66
(14.07.2008 в 10:25)
| | В смысле разные названия?! Файл со всем этим кодом назыается "file", и в форме action="file.php". А name="my_form" я вообще убрала и от этого мало что изменилось | |
|
|
|
|
|
|
|
для: olgapak
(14.07.2008 в 11:01)
| | Я повторяю, что я ваш код проверил (всё, кроме запросов к БД): всё работает, данные отправляются из браузера и принимаются сервером. Проследите только, чтобы файл с кодом имел то же название, что и файл в параметре формы action (если хотите, чтобы всё делалось на одной странице). | |
|
|
|
|
|
|
|
для: coloboc66
(14.07.2008 в 11:25)
| | Имена идентичны. Сейчас никаких ошибок типа "The form does not submited" не выходит, но опять же, как и в начале, данные исчезают непонятно куда, страница обновляется, но запись не добавляется | |
|
|
|
|
|
|
|
для: olgapak
(14.07.2008 в 11:49)
| | Ну так читайте сообщения об ошибках при записи в БД, выдаваемые сервером. Вы на каком сервере тестируете скрипт? | |
|
|
|
|
|
|
|
для: coloboc66
(14.07.2008 в 12:09)
| | Я же говорю, система ошибок никаких не выдает, данные просто уходят неизвестно куда. | |
|
|
|
|
|
|
|
для: olgapak
(14.07.2008 в 12:31)
| | Я потому и спрашиваю:"Какой у вас сервер?". Так не бывает, чтобы он не выдавал ошибок. Значит, у вас уровень контроля ошибок стоит низкий и его нужно изменить. | |
|
|
|
|
|
|
|
для: olgapak
(14.07.2008 в 08:38)
| | Поля получаемые из формы и так имеют строковый тип.
А это, перепишите хотя бы так:
mysql_query($sql) or die (mysql_error());
И посмотрите теперь, что вам MySQL скажет. | |
|
|
|
|
|
|
|
для: sim5
(14.07.2008 в 13:09)
| | Да у неё не mysql, a SQL какой-то. | |
|
|
|
|
|
|
|
для: coloboc66
(14.07.2008 в 14:15)
| | $sql - это имя переменной запроса, в остальном все это "My" ) | |
|
|
|
|
|
|
|
для: sim5
(14.07.2008 в 17:22)
| | автор: olgapak (10.07.2008 в 12:45) письмо автору
to: White_Owl (09.07.2008 в 15:56)
Большое человеческое сапсибо за то, что понимаете чайника :) а команда mssql потому, что соединяю с SQL Server. | |
|
|
|
|
|
|
|
для: coloboc66
(14.07.2008 в 17:32)
| | Тогда полная лажа... действительно, в коде прописаны запросы как для SQL, так и для MySQL. | |
|
|
|
|
|
|
|
для: sim5
(14.07.2008 в 17:38)
| | если я пишу mssql_connect, то база с рнр не коннектится. А если я пишу mysql_connect, тогда соединение происходит, вот я и пытаюсь разобраться в чем тут ПОЛНАЯ ЛАЖА | |
|
|
|
|
|
|
|
для: olgapak
(15.07.2008 в 09:05)
| | Полная лажа в том, что вы пытаетесь скрестить функции mysql с функциями sql. С mysql вам здесь помогли бы, а с вашим SQL - вряд ли. Его мало кто знает, т.к. мало кто использует. Форум здесь по mysql, php, java script и apache, если вы успели заметить...
В любом случае сервер БД должен возвращать ошибки, если они имеются. Читайте их и анализируйте. Если не возвращает, разберитесь - почему не возвращает. | |
|
|
|