[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PhP запрос к mysql
fast hack
Добрый день. Вот пытаюсь овладеть искусством PHP+mySQL, 3 дня назад взялся за написание телефонной базы данных и вот стал такой вопрос; 1)если в базе есть номер телефона, то соответственно база вернет и php отобразит на странице, 2)а если нет тогда нужно открыть форму добавления номера.
1 - сделал, а вот со вторым ни как!




Спустя 24 минуты, 19 секунд (17.07.2009 - 12:25) sergeiss написал(а):
Стандартный встречный вопрос: а свои мысли какие по этому поводу, что уже пытался делать, что (не) получилось?

И алгоритм идея не совсем понятна.

Спустя 19 минут, 43 секунды (17.07.2009 - 12:45) fast hack написал(а):
форма с запросом вместе.
PHP
<form  action=addphon.php method=post NAME="ad_p">
      <B>Поиск по телефону:</B><BR>
     <INPUT TYPE="text" SIZE="10" NAME="find_phone_php">
     <INPUT TYPE="submit" NAME="find" VALUE="Найти"><BR>
     </FORM> 

<?php
$fph 
= $_POST['find_phone_php'];
    echo "<p>Телефон   " . $fph  . "</p>"; 
       


if 
( isset($_POST['find']) ) {         
    $otvet 
= mysql_query("select * from BAZA where BAZA.phone = '$fph';");
    if($otvet)
    { echo ("");
     

///Таблица вывода
      echo "<table class=table_1 align=center>";
      echo "<tr>

      <td class=td_1 width=15%><p class=p align=center>Телефон</p></td>
      <td class=td_1 width=24%><p class=p align=center>Фамилия</p></td>
      <td class=td_1 width=24%><p class=p align=center>Имя</p></td>
      <td class=td_1 width=24%><p class=p align=center>Отчество</p></td>
      </tr>"
;
      while($rezultat = mysql_fetch_array($otvet))
      {
        echo "<tr>
        <td><p align=center>"
.$rezultat['phone']."</p></td>
        <td><p align=center>"
.$rezultat['last_name']."</p></td>
        <td><p align=center>"
.$rezultat['first_name']."</p></td>
        <td><p align=center>"
.$rezultat['suffix_name']."</p></td>
        </tr>"
;
      }
      echo "</table><BR>";
     } 
    else
    
{
      echo "<p><b>Error: ".

Пользователь ищет телефон 02, если его нет в базе, то телефон 02 автоматически добавляется в только что открытую автоматически форму добавления данных в базу.Т.е если искал телефон и не нашел будь добр и добавь пользователя. smile.gif


Вот подскажите куда рыть дальше?Как открыть html страницу если отсутствует номер в базе?

Спустя 40 минут, 14 секунд (17.07.2009 - 13:25) Mizka написал(а):
Цитата
Вот подскажите куда рыть дальше?Как открыть html страницу если отсутствует номер в базе?

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

Спустя 5 минут, 15 секунд (17.07.2009 - 13:31) sergeiss написал(а):
Описываю алгоритм.
1. Сначала должен быть блока анализа переданных данных.
Если юзер нажал клавишу поиска "if ( isset($_POST['find']) )", то тогда обрабатываем данные.
При обработке, в случае, если номер не найден, то через header( 'Location....' ); делаем переход на страницу ввода номера.
Ну, и если номер найден, то выводим информацию об этом.

2. Только затем выводим форму ввода номера для поиска. То есть, твою форму, в приведенном тобой коде, надо поместить вниз. Только будь внимательнее с action!!! Чтобы скрипт вызвал сам себя, надо указать пустой action.

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

Спустя 5 минут, 54 секунды (17.07.2009 - 13:37) fast hack написал(а):
Цитата
сам номер можно передать через сессию

Это ясно.
Цитата
если нету делаешь редираект на страницу добавления

А вот если не трудно подскажите как это реализовать.
Надо $rezultat сравнить с пустой переменной?

Спустя 10 минут, 39 секунд (17.07.2009 - 13:47) Mizka написал(а):
PHP
if (!$result) 
        
{
             header('location: тут куда');
        }

Спустя 3 дня, 21 час, 42 минуты, 13 секунд (21.07.2009 - 11:29) fast hack написал(а):
Вот проверяю входные данные, если телефон который в базе есть, то работает, а если пустую строчку, то не работает. Как правильно проверить?
PHP
if($rezultat['phone'] == '')
    { echo ("Нет такого номера")};

Что возвращает mysql если в базе нет такого телефона?

Спустя 38 минут, 41 секунда (21.07.2009 - 12:08) sergeiss написал(а):
Цитата (fast hack @ 21.07.2009 - 12:29)
Как правильно проверить?

Лучше так будет
PHP
if( strlentrim$rezultat['phone']) )  == )
    { echo (
"Нет такого номера")};

Тут возможен вариант, что в БД записывают не совсем пустые строки, а сколько-то пробелов. Поэтому простое сравнение на пустую строку не получается.

Спустя 22 часа, 7 секунд (22.07.2009 - 10:08) fast hack написал(а):
Цитата
Лучше так будет
PHP
if( strlentrim$rezultat['phone']) )  == )
    { echo ("Нет такого номера")};


Тут возможен вариант, что в БД записывают не совсем пустые строки, а сколько-то пробелов. Поэтому простое сравнение на пустую строку не получается.


Не работает и нет ошибок. В чем проблема может быть?

Спустя 7 минут, 12 секунд (22.07.2009 - 10:15) sergeiss написал(а):
Подожди-ка... Ты же ищешь по номеру!!! А при отсутствии номера у тебя просто количество выбранных строк будет равно нулю smile.gif

Поэтому алгоритм такой должен быть.
1. Ты анализируешь, корректно ли обработался запрос (это у тебя делается).
2. Если корректно, то тогда используй mysql_num_rows (вроде так называется) для подсчета количества выбранных строк. Если != 0 - номер найден, работает уже написанный тобой код по выводу информации. Если же == 0, то номер не найден, и надо что-то запрашивать.

Спустя 1 час, 43 минуты, 42 секунды (22.07.2009 - 11:59) fast hack написал(а):
sergeiss Спасибо, работает. smile.gif
Идем дальше . . .

Спустя 13 дней, 22 часа, 10 минут, 43 секунды (6.08.2009 - 10:10) fast hack написал(а):
sergeiss
Вот собрал все в кучу. Index.php
PHP
<html>
<
head>
<
meta http-equiv=Content-Type content=text/htmlcharset=windows-1251>
<
title></title>
</
head>
<
body bgcolor=#c0c0c0>
<style type=text/css>

&
#60;!--
.table_1 
{width220px;
border-collapsecollapse;
bordersolid 1px #000000;}

.td_1 
{bordersolid 1px #000000;
 
background-color#44c6d9;
}

.
td_2 
{bordersolid 1px #000000;
 
background-color#50d3b3;
}

td 
{bordersolid 1px #a5a5a5;
background-color#a5a5a5;
}
.
{font-weightbold;}
--&
#62;
</style>

<
h1></h1>

<
table width="100%" border="1" bordercolor="#44c6d9" >
<
tr>
<
td width="3%" valign="top">
<
table class=table_1 align=center>
 <
tr>
   <
td class=td_2>
     <
form  action=index.php method=post NAME="ad_news">
      <
B>Поиск по телефону:</B><BR>
     <
SELECT NAME="find_operphone_php">
                       <
option VALUE    >  </option>
                       <
option VALUE=063>063</option>
                       <
option VALUE=095>095</option>
                       </
select>
     <
INPUT TYPE="text" SIZE="10" NAME="find_phone_php">
     <
INPUT TYPE="submit" NAME="find" VALUE="Найти">
     </
FORM
   </
td>
</
tr>
    <
tr>
       <
td class=td_2 width=20>
<?
php
$tel 
$_POST['find_phone_php'];
$oper $_POST['find_operphone_php'];
echo 
"<b>"$oper ,"</b>"$tel ."</p>"
?>
       </td>
    </tr>
</table>     
</td>
<td width="50%" valign="top" bordercolor="#44c6d9">


<?php
///Проверяем соединение с mysql
    
$dblocation "192.168.0.33";
    
$dbname "testsql";
    
$dbuser "root";
    
$dbpasswd "";
    
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
    if (!
$dbcnx
    {
      echo( 
"<P><br>Cannot connect to database server!</P>" );
      exit();
    }
    else 
    if (!@
mysql_select_db($dbname$dbcnx)) 
    {
      exit();
    }  
        
$dt=date('Y-m-d [H:i:s]');

//Функция добавления
    
if ( isset($_POST['go']) ) {
$query "INSERT INTO dbtest (operphone,phone,data,name) VALUES ('".$oper."','".$tel."','".$dt."','".$_POST['name_php']."')";
 
$result mysql_query ($query)
or die (
"Error: ".mysql_error ());
echo 
"OK";
}
//Функция добавления

///Проверяем существует ли таблица dbtest-->
 
$otvet mysql_query ("select * from dbtest;");

///Выводим содержимое таблицы dbtest по телефону-->
if ( isset($_POST['find']) ) {         
    
$otvet mysql_query("select * from dbtest where dbtest.operphone = '$oper' AND dbtest.phone = '$tel'");
    if(
$otvet)
    { echo (
""); }
    
///Проверяем есть ли номер в базе-->    
    
{
$num_rows mysql_num_rows($otvet);
    if(
$num_rows == '0')
    { 
       echo(
'
     <table class=table_1 align=center>
     <form  action=index.php method=post>
      <tr>         
      <td class=td_2 width=13%><p class=p align=center>Телефон</p></td>
      <td class=td_2 width=24%><p class=p align=center></p>дата / время</td>
      <td class=td_2 width=15%><p class=p align=center>Имя</p></td>
      </tr>
      <tr>
            '
);    
          
$tele $_POST['find_phone_php'];
$opertele $_POST['find_operphone_php'];
echo 
"<td class=td_2><p align=center><b>"$opertele ,"</b>",$tele ."</p></td>";    

$dt=date('Y-m-d [H:i:s]');
echo 
"<td class=td_2><p align=center><b>"$dt ."</p></td>";

    echo (
'
     <td class=td_2><p align=center><input name=name_php type=text size=35></p></td
        </table><br>
        <table align=center>
        <tr>
      <td class=td_2><input type=submit name=go  value=Добавить&nbsp;игрока></td>
      </tr>
      </form></table>
              '
);
    }  
      else
    { 
        echo (
"<h1>Номер такой в базе есть</h1>"); 
    } 
     }
    }      
?>
</td>
</tr>
</tab


Не добавляются оператор и номер телефона, а вот дата добавляется.
Помогите.

Спустя 2 минуты, 4 секунды (6.08.2009 - 10:12) PandoraBox2007 написал(а):
жжош у тебя в БД одни инклюды

PHP
$oper = mysql_real_escape_string($oper);
$tel = mysql_real_escape_string($tel);
$dt = mysql_real_escape_string($dt);
$_POST['name_php'] = mysql_real_escape_string($_POST['name_php']);

$query = "INSERT INTO dbtest (operphone,phone,data,name) VALUES ('$oper','$tel','$dt','{$_POST['name_php']}')";


PHP
$otvet = mysql_query("select * from dbtest where dbtest.operphone = '$oper' AND dbtest.phone = '$tel'");

Спустя 44 минуты, 46 секунд (6.08.2009 - 10:57) fast hack написал(а):
PandoraBox2007
Ломать ни кто не будет, это чисто для офиса. Спасибо.
Так как добавить номер и оператора?

Спустя 9 минут, 3 секунды (6.08.2009 - 11:06) PandoraBox2007 написал(а):

Спустя 1 час, 9 минут, 53 секунды (6.08.2009 - 12:16) Gabriel написал(а):
PHP
mysql_query("INSERT INTO `dbtest` SET `operphone`='".$oper."', `phone`='".$tel."', `data`='".$dt."', `name`='".$name_php."'")
or die (
mysql_error());

попробуй так

Спустя 37 минут, 19 секунд (6.08.2009 - 12:53) fast hack написал(а):
Gabriel
Спасибо. Тоже самое что и у меня. Работает но тел и опер не добавляется.
Как я понял после нажатия Добавить Игрока переменные $oper и $tel очищаются, так как код формы поиска и добавления находятся в одном файле.
Может быть?

Спустя 39 минут, 23 секунды (6.08.2009 - 13:32) PandoraBox2007 написал(а):
HTML
<form method="POST">


name поуберай отуда!

Спустя 1 час, 4 минуты, 56 секунд (6.08.2009 - 14:37) Gabriel написал(а):
PHP
$tele $_POST['find_phone_php'];
$opertele $_POST['find_operphone_php'];

$tel $_POST['find_phone_php'];
$oper $_POST['find_operphone_php'];

одно и тоже а имена разные О_о

Спустя 11 минут, 22 секунды (6.08.2009 - 14:49) fast hack написал(а):
PHP
$tele $_POST['find_phone_php'];
$opertele $_POST['find_operphone_php'];

А это можно выкинуть. Путаться уже начал.
Запишу переменные в txt, а потом прочитаю и в базу. blink.gif

Спустя 13 минут, 14 секунд (6.08.2009 - 15:02) Gabriel написал(а):
хм, а где вообше поля для ввода телефона и оператора?

Спустя 2 часа, 2 минуты, 3 секунды (6.08.2009 - 17:04) Kuliev написал(а):
Цитата (sergeiss @ 21.07.2009 - 14:08)
Цитата (fast hack @ 21.07.2009 - 12:29)
Как правильно проверить?

Лучше так будет
PHP
if( strlen( trim( $rezultat['phone']) )  == 0 )
    { echo ("Нет такого номера")};

Тут возможен вариант, что в БД записывают не совсем пустые строки, а сколько-то пробелов. Поэтому простое сравнение на пустую строку не получается.

Может лучше было бы использовать EMPTY() ?

Спустя 1 час, 24 минуты, 48 секунд (6.08.2009 - 18:29) Gabriel написал(а):
Свернутый текст
PHP
<html>
<
head>
<
meta http-equiv=Content-Type content=text/html; charset=windows-1251>
<
title></title>
</
head>
<
body bgcolor=#c0c0c0>
<style type=text/css>

&
#60;!--
.table_1 
{width: 220px;
border-collapse: collapse;
border: solid 1px #000000;}

.td_1 
{border: solid 1px #000000;
 background-color: #44c6d9;
}

.
td_2 
{border: solid 1px #000000;
 background-color: #50d3b3;
}

td 
{border: solid 1px #a5a5a5;
background-color: #a5a5a5;
}
.
{font-weight: bold;}
--&
#62;
</style>

<
h1></h1>

<
table width="100%" border="1" bordercolor="#44c6d9" >
<
tr>
<
td width="3%" valign="top">
<
table class=table_1 align=center>
 <tr>
   <td class=td_2>
     <form  action="index.php" method="post" NAME="ad_news">
      <B>Поиск по телефону:</B><BR>
     <SELECT NAME="oper">
                       <option VALUE    >  </option>
                       <option VALUE=063>063</option>
                       <option VALUE=095>095</option>
                       </select>
     <INPUT TYPE="text" SIZE="10" NAME="tel">
     <INPUT TYPE="submit" NAME="find" VALUE="Найти">
     </FORM> 
   
</td>
</
tr>
    <tr>
       <td class=td_2 width=20>
<?
php
$tel 
= $_POST['tel'];
$oper = $_POST['oper'];
$usname = $_POST['usname'];
echo "<b>". $oper ,"</b>", $tel ."</p>"; 
?>
       </td>
    </tr>
</table>     
</td>
<td width="50%" valign="top" bordercolor="#44c6d9">


<?php
///Проверяем соединение с mysql
    $dblocation = "";
    $dbname = "";
    $dbuser = "";
    $dbpasswd = "";
    $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
    if (!$dbcnx) 
    
{
      echo( "<P><br>Cannot connect to database server!</P>" );
      exit();
    }
    else 
    if 
(!@mysql_select_db($dbname, $dbcnx)) 
    
{
      exit();
    }  
        
$dt
=date('Y-m-d [H:i:s]');

//Функция добавления
if ( isset($_POST['go']) ) {
$query = "INSERT INTO `tels` SET `oper`='".$oper."', `tel`='".$tel."', `data`='".$dt."', `name`='".$usname."'" or die (mysql_error());
$result = mysql_query ($query)
or die ("Error: ".mysql_error ());
echo "OK";
}
//Функция добавления

///Проверяем существует ли таблица dbtest-->
 $otvet = mysql_query ("select * from dbtest;");

///Выводим содержимое таблицы dbtest по телефону-->
if ( isset($_POST['find']) ) {         
    $otvet 
= mysql_query("SELECT * FROM tels WHERE oper = '$oper' AND tel = '$tel'");
    if($otvet){ echo (""); }
    
///Проверяем есть ли номер в базе-->    
    {
$num_rows = mysql_num_rows($otvet);
if(
$num_rows == '0'){
$dt=date('Y-m-d [H:i:s]');
    echo('
        <table class=table_1 align=center>
         <form  action=index.php method=post>
              <tr>         
              <td class=td_2 width=13%><p class=p align=center>Телефон</p></td>
              <td class=td_2 width=24%><p class=p align=center></p>дата / время</td>
              <td class=td_2 width=15%><p class=p align=center>Имя</p></td>
              </tr>
            <tr>
              <td class=td_2><p align=center><b><input type=text name=oper value='
. $oper .'></b><input type=text name=tel value='.$tel.'></p></td>
              <td class=td_2><p align=center><b>'
. $dt .'</p></td>
              <td class=td_2><p align=center><input name=usname type=text size=35></p></td>
        </table><br>
        <table align=center>
        <tr>
              <td class=td_2><input type=submit name=go  value=Добавить&nbsp;игрока></td>
        </tr>
        </form></table>'
);
    }else{ echo ("<h1>Номер такой в базе есть</h1>");} 
    
}
}

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

P.S.
вопрос на засыпку как бороться с isset ато када жмакаеш ентер он отказываетсо работать.

Спустя 14 часов, 53 минуты, 48 секунд (7.08.2009 - 09:23) PandoraBox2007 написал(а):
isset() проверяет только на существование переменной

empty() проверяет на существование переменной и на присутствие значения

выгодно что бы ошибку не выдавало использовать empty (:

Спустя 1 час, 35 минут, 41 секунда (7.08.2009 - 10:58) fast hack написал(а):
Вот оно первое мое творение.

user posted image
PHP
<html>
<
head>
<
meta http-equiv=Content-Type content=text/htmlcharset=windows-1251>
<
title></title>
</
head>
<
body bgcolor=#c0c0c0>
<style type=text/css>

&
#60;!--
.table_1 
{width220px;
border-collapsecollapse;
bordersolid 1px #000000;}

.td_1 
{bordersolid 1px #000000;
 
background-color#44c6d9;
}

.
td_2 
{bordersolid 1px #000000;
 
background-color#50d3b3;
}

td 
{bordersolid 1px #a5a5a5;
background-color#a5a5a5;
}
.
{font-weightbold;}
--&
#62;
</style>

<
h1></h1>

<
table width="100%" border="1" bordercolor="#44c6d9" >
<
tr>
<
td width="3%" valign="top">
<
table class=table_1 align=center>
 <
tr>
   <
td class=td_2>
     <
form method=post action=index.php >
      <
B>Поиск по телефону:</B><BR>
     <
SELECT NAME="find_operphone_php">
                       <
option VALUE    >  </option>
                       <
option VALUE=063>063</option>
                       <
option VALUE=095>095</option>
                       </
select>
     <
INPUT TYPE="text" SIZE="10" NAME="find_phone_php">
     <
INPUT TYPE="submit" NAME="find" VALUE="Найти">
     </
FORM
   </
td>
</
tr>
    <
tr>
       <
td class=td_2 width=20>
              
       
<?
php
$tel 
$_POST['find_phone_php'];
$oper $_POST['find_operphone_php'];
echo 
"<b>"$oper ,"&nbsp</b>"$tel ."</p>"
?>
       </td>
    </tr>
</table>     
</td>
<td width="50%" valign="top" bordercolor="#44c6d9">


<?php
///Проверяем соединение с mysql
    
$dblocation "192.168.0.33";
    
$dbname "testsql";
    
$dbuser "root";
    
$dbpasswd "";
    
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
    if (!
$dbcnx
    {
      echo( 
"<P><br>Cannot connect to database server!</P>" );
      exit();
    }
    else 
    if (!@
mysql_select_db($dbname$dbcnx)) 
    {
      exit();
    }  
        
$dt=date('Y-m-d [H:i:s]');

//Функция добавления
if ( isset($_POST['go']) ) {
require (
"tel.inc");        
$query "INSERT INTO dbtest (operphone,phone,data,name) VALUES ('".$oper."','".$tel."','".$dt."','".$_POST['name_php']."')";
$result mysql_query ($query)
or die (
"Error: ".mysql_error ());
echo 
"OK";
}
//Функция добавления

///Проверяем существует ли таблица dbtest-->
 
$otvet mysql_query ("select * from dbtest;");

///Выводим содержимое таблицы dbtest по телефону-->
if ( isset($_POST['find']) ) { 
  
$myoper $_POST['find_operphone_php']; // Исходная строка
$myphone $_POST['find_phone_php']; // Исходная строка  
  
$fp fopen("tel.inc""w+"); // Открываем файл 
fwrite($fp,"<?\n");
fwrite($fp,"\$oper=\"$myoper\";\n");
fwrite($fp,"\$tel=\"$myphone\";\n");
fwrite($fp,"?>");
fclose($fp); //Закрытие файла
  
    
$otvet mysql_query("select * from dbtest where dbtest.operphone = '$oper' AND dbtest.phone = '$tel'");
    if(
$otvet)
    { echo (
""); }
///Проверяем есть ли номер в базе-->    
    
{
$num_rows mysql_num_rows($otvet);
    if(
$num_rows == '0')
    { 
       echo(
'
     <table class=table_1 align=center>
     <form  action=index.php method=post>
      <tr>         
      <td class=td_2 width=13%><p class=p align=center>Телефон</p></td>
      <td class=td_2 width=40%><p class=p align=center>дата/время</p></td>
      <td class=td_2 width=15%><p class=p align=center>Имя</p></td>
      </tr>
      <tr>
            '
);    
          
echo 
"<td class=td_2><p align=center><b>"$oper ,"&nbsp</b>",$tel ."</p></td>";    

$dt=date('Y-m-d [H:i:s]');
echo 
"<td class=td_2><p align=center >"$dt ."</p></td>";

    echo (
'
     <td class=td_2><p align=center><input name=name_php type=text size=35></p></td
        </table><br>
        <table align=center>
        <tr>
      <td class=td_2><input type=submit name=go  value=Добавить&nbsp;игрока></td>
      </tr>
      </form></table>
              '
);
    }  
      else
    { 
        echo (
"<h1>Номер такой в базе есть</h1>"); 
    } 
     }
    }      
?>
</td>
</tr>
</tab

Спустя 1 час, 5 минут, 20 секунд (7.08.2009 - 12:04) Gabriel написал(а):
PHP
$tel = $_POST['find_phone_php'];
$oper = $_POST['find_operphone_php'];
$dt=date('Y-m-d [H:i:s]');
$myoper = $_POST['find_operphone_php'];
$myphone = $_POST['find_phone_php'];
$dt=date('Y-m-d [H:i:s]');

не толки воду в ступе

Спустя 25 минут, 58 секунд (7.08.2009 - 12:29) fast hack написал(а):
Код не ахти знаю, это все на скорую руку сделано, но все равно всем спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.