Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как организовать событие onClick?
 
 автор: olgapak   (02.07.2008 в 09:51)   письмо автору
 
 

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

   
 
 автор: coloboc66   (04.07.2008 в 21:53)   письмо автору
 
   для: 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.

   
 
 автор: olgapak   (08.07.2008 в 12:47)   письмо автору
 
   для: 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($resultMYSQL_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)
?>

   
 
 автор: coloboc66   (08.07.2008 в 13:02)   письмо автору
 
   для: olgapak   (08.07.2008 в 12:47)
 

Можно, для этого форме задайте УРЛ родительского окна.
<form action="file.php" method="post">
Но окно всё-равно будет перезагружаться. Чтобы не было перезагрузки, нужно аякс использовать.

   
 
 автор: olgapak   (09.07.2008 в 10:43)   письмо автору
 
   для: coloboc66   (08.07.2008 в 13:02)
 

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

   
 
 автор: sim5   (09.07.2008 в 10:59)   письмо автору
 
   для: olgapak   (09.07.2008 в 10:43)
 

У вас код, если мягко - "ужасно выглядит". Допустим, что сама форма у вас выводится другим скриптом, но почему вы без всякой проверки, пришла ли вам форма, начинаете запись в базу? Если вы используете форму, которую в примере привел coloboc66, а она использует метод передачи POST, то почему вы работаете с GET данными?

   
 
 автор: PAT   (09.07.2008 в 11:00)   письмо автору
 
   для: olgapak   (09.07.2008 в 10:43)
 

Для сабмита формы НЕОБХОДИМО иметь окно браузера.
Если вам надо просабмитить форму таковым образом, чтобы юзер этого процесса не увидел, то существует простейший вариант: прописываете на странице невидимый ифрейм, куда и отправляете данные формы (любым методом - хоть POST, хоть GET):
<iframe name="myIFRAME" style="display: none"></iframe>
...
<form target="myIFRAME"...>

   
 
 автор: coloboc66   (09.07.2008 в 11:09)   письмо автору
 
   для: PAT   (09.07.2008 в 11:00)
 

Так у девушки в коде и формы я что-то не вижу...

   
 
 автор: White_Owl   (09.07.2008 в 15:56)   письмо автору
 
   для: 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($resultMYSQL_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($resultMYSQL_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($resultMYSQL_ASSOC)){    
        echo 
"<tr >";
        foreach (
$row as $id => $value){
        echo 
"<th><b>".htmlspecialchars($id)."</th></b>";
        echo 
"</tr>\n";
       }       
}
while(
false)
?>    


и почему там команда mssql а не mysql ? :-)

   
 
 автор: olgapak   (10.07.2008 в 12:45)   письмо автору
 
   для: White_Owl   (09.07.2008 в 15:56)
 

Большое человеческое сапсибо за то, что понимаете чайника :) а команда mssql потому, что соединяю с SQL Server.

   
 
 автор: olgapak   (10.07.2008 в 13:33)   письмо автору
 
   для: White_Owl   (09.07.2008 в 15:56)
 

Я все вставила, база выходит, но не добавляет еовую запись. Ошибка: The form does not submited. А это может быть из-за того, что типы данных в SQL не совпадают c типами в php, поэтому невозможно добавиь запись?

   
 
 автор: GeorgeIV   (10.07.2008 в 13:39)   письмо автору
 
   для: olgapak   (10.07.2008 в 13:33)
 

запись не добавляется, потому что с формы не пришла. POST и GET не смешаны?

   
 
 автор: olgapak   (10.07.2008 в 14:27)   письмо автору
 
   для: GeorgeIV   (10.07.2008 в 13:39)
 

нет, не смешаны, везде метод GET, я исправила эту ошибку. Я уже не знаю, что делать, мне тут уже весь код человек написал, а оно не работает. Просто может быть загвоздка еще в том, что связываю SQL Server

   
 
 автор: olgapak   (10.07.2008 в 12:49)   письмо автору
 
   для: coloboc66   (09.07.2008 в 11:09)
 

Так у девушки в коде и формы я что-то не вижу...
Просто я не стала писать код формы, мне главно кнопку добавления селать

   
 
 автор: coloboc66   (10.07.2008 в 13:54)   письмо автору
 
   для: olgapak   (10.07.2008 в 12:49)
 

Так у вас есть форма или нет?! И какой метод в ней используется? Как понять: "Просто я не стала писать"??? Вы уж пишите как положено, а то вводите людей в заблуждение...

   
 
 автор: olgapak   (10.07.2008 в 14:31)   письмо автору
 
   для: coloboc66   (10.07.2008 в 13:54)
 

Форам у меня есть, метод GET, как и везде. Я сюда, на форум не стала втыкать форму, заечем? главное код рнр нормально исправить

   
 
 автор: olgapak   (10.07.2008 в 14:33)   письмо автору
 
   для: coloboc66   (10.07.2008 в 13:54)
 

Форам у меня есть, метод GET, как и везде.Я пнимаю, Вы меня за чайника считаете, но не до такой же степени, чтобы тут интересоваться про кнопочку, при этом не иметь формы для ввода. Просто я сюда, на форум не стала втыкать код формы, зачем? главное код рнр нормально исправить

   
 
 автор: GeorgeIV   (10.07.2008 в 14:57)   письмо автору
 
   для: olgapak   (10.07.2008 в 14:33)
 

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

   
 
 автор: coloboc66   (10.07.2008 в 15:10)   письмо автору
 
   для: GeorgeIV   (10.07.2008 в 14:57)
 

Логично...
<form method="get">
А где action="..." ???

   
 
 автор: olgapak   (14.07.2008 в 08:38)   письмо автору
 
   для: 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 ($resultMYSQL_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);
?>

   
 
 автор: coloboc66   (14.07.2008 в 09:44)   письмо автору
 
   для: olgapak   (14.07.2008 в 08:38)
 

Всё до sql-запросов работает и данные принимаются. У вас как назван файл со всем этим кодом?

   
 
 автор: olgapak   (14.07.2008 в 10:15)   письмо автору
 
   для: coloboc66   (14.07.2008 в 09:44)
 

File.php. Я просто хочу, чтобы все действия происходили в одном окне(желательно).

   
 
 автор: coloboc66   (14.07.2008 в 10:25)   письмо автору
 
   для: olgapak   (14.07.2008 в 10:15)
 

Так у вас разные названия файла (File.php) и файла в форме:
<form method="get" action="file.php" name="my_form">

   
 
 автор: olgapak   (14.07.2008 в 11:01)   письмо автору
 
   для: coloboc66   (14.07.2008 в 10:25)
 

В смысле разные названия?! Файл со всем этим кодом назыается "file", и в форме action="file.php". А name="my_form" я вообще убрала и от этого мало что изменилось

   
 
 автор: coloboc66   (14.07.2008 в 11:25)   письмо автору
 
   для: olgapak   (14.07.2008 в 11:01)
 

Я повторяю, что я ваш код проверил (всё, кроме запросов к БД): всё работает, данные отправляются из браузера и принимаются сервером. Проследите только, чтобы файл с кодом имел то же название, что и файл в параметре формы action (если хотите, чтобы всё делалось на одной странице).

   
 
 автор: olgapak   (14.07.2008 в 11:49)   письмо автору
 
   для: coloboc66   (14.07.2008 в 11:25)
 

Имена идентичны. Сейчас никаких ошибок типа "The form does not submited" не выходит, но опять же, как и в начале, данные исчезают непонятно куда, страница обновляется, но запись не добавляется

   
 
 автор: coloboc66   (14.07.2008 в 12:09)   письмо автору
 
   для: olgapak   (14.07.2008 в 11:49)
 

Ну так читайте сообщения об ошибках при записи в БД, выдаваемые сервером. Вы на каком сервере тестируете скрипт?

   
 
 автор: olgapak   (14.07.2008 в 12:31)   письмо автору
 
   для: coloboc66   (14.07.2008 в 12:09)
 

Я же говорю, система ошибок никаких не выдает, данные просто уходят неизвестно куда.

   
 
 автор: coloboc66   (14.07.2008 в 12:36)   письмо автору
 
   для: olgapak   (14.07.2008 в 12:31)
 

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

   
 
 автор: sim5   (14.07.2008 в 13:09)   письмо автору
 
   для: olgapak   (14.07.2008 в 08:38)
 

Поля получаемые из формы и так имеют строковый тип.
А это, перепишите хотя бы так:
mysql_query($sql) or die (mysql_error());
И посмотрите теперь, что вам MySQL скажет.

   
 
 автор: coloboc66   (14.07.2008 в 14:15)   письмо автору
 
   для: sim5   (14.07.2008 в 13:09)
 

Да у неё не mysql, a SQL какой-то.

   
 
 автор: sim5   (14.07.2008 в 17:22)   письмо автору
 
   для: coloboc66   (14.07.2008 в 14:15)
 

$sql - это имя переменной запроса, в остальном все это "My" )

   
 
 автор: coloboc66   (14.07.2008 в 17:32)   письмо автору
 
   для: sim5   (14.07.2008 в 17:22)
 

автор: olgapak (10.07.2008 в 12:45) письмо автору
to: White_Owl (09.07.2008 в 15:56)
Большое человеческое сапсибо за то, что понимаете чайника :) а команда mssql потому, что соединяю с SQL Server.

   
 
 автор: sim5   (14.07.2008 в 17:38)   письмо автору
 
   для: coloboc66   (14.07.2008 в 17:32)
 

Тогда полная лажа... действительно, в коде прописаны запросы как для SQL, так и для MySQL.

   
 
 автор: olgapak   (15.07.2008 в 09:05)   письмо автору
 
   для: sim5   (14.07.2008 в 17:38)
 

если я пишу mssql_connect, то база с рнр не коннектится. А если я пишу mysql_connect, тогда соединение происходит, вот я и пытаюсь разобраться в чем тут ПОЛНАЯ ЛАЖА

   
 
 автор: coloboc66   (15.07.2008 в 09:30)   письмо автору
 
   для: olgapak   (15.07.2008 в 09:05)
 

Полная лажа в том, что вы пытаетесь скрестить функции mysql с функциями sql. С mysql вам здесь помогли бы, а с вашим SQL - вряд ли. Его мало кто знает, т.к. мало кто использует. Форум здесь по mysql, php, java script и apache, если вы успели заметить...
В любом случае сервер БД должен возвращать ошибки, если они имеются. Читайте их и анализируйте. Если не возвращает, разберитесь - почему не возвращает.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования