как укоротить код

PHucker

Новичок
Здравствуйте! У меня есть такой код:
PHP:
$name = $_GET["name"];
if ($name == 1) {
$connect = mysql_connect("***********", "report_user", "*********");
$select = mysql_select_db("smartvend", $connect);
$result = mysql_query("SELECT history.MeterNum, fields.ID, history.FieldName, fields.Description, history.ExecDate, history.FieldValue
FROM
amr_fields fields, amr_read_history history
WHERE
fields.ID=history.FieldName AND ExecDate>= SUBDATE(CURRENT_DATE, INTERVAL 1 DAY)
",$connect);

while ($data = mysql_fetch_row($result))
{
echo"<tr>";
echo"<td>{$data[0]}</td>";
echo"<td>{$data[1]}</td>";
echo"<td>{$data[2]}</td>";
echo"<td>{$data[3]}</td>";
echo"<td>{$data[4]}</td>";
echo"<td>{$data[5]}</td>";
echo"</tr>";
}
}
else {



$connect = mysql_connect("************", "report_user", "****");
$select = mysql_select_db("smartvend", $connect);
$result = mysql_query("SELECT history.MeterNum, fields.ID, history.FieldName, fields.Description, history.ExecDate, history.FieldValue
FROM
amr_fields fields, amr_read_history history
WHERE
fields.ID=history.FieldName AND ExecDate>= '(CURDATE()'
",$connect);

while ($data = mysql_fetch_row($result))
{
echo"<tr>";
echo"<td>{$data[0]}</td>";
echo"<td>{$data[1]}</td>";
echo"<td>{$data[2]}</td>";
echo"<td>{$data[3]}</td>";
echo"<td>{$data[4]}</td>";
echo"<td>{$data[5]}</td>";
echo"</tr>";
}
}



$name = $_GET["name"];
if ($name == 2) {
$connect = mysql_connect("*******", "report_user", "**********");
$select = mysql_select_db("smartvend", $connect);
$result = mysql_query("SELECT history.MeterNum, fields.ID, history.FieldName, fields.Description, history.ExecDate, history.FieldValue
FROM
amr_fields fields, amr_read_history history
WHERE
fields.ID=history.FieldName AND ExecDate>= SUBDATE(CURRENT_DATE, INTERVAL 2 DAY)
",$connect);

while ($data = mysql_fetch_row($result))
{
echo"<tr>";
echo"<td>{$data[0]}</td>";
echo"<td>{$data[1]}</td>";
echo"<td>{$data[2]}</td>";
echo"<td>{$data[3]}</td>";
echo"<td>{$data[4]}</td>";
echo"<td>{$data[5]}</td>";
echo"</tr>";
}
}
else {



$connect = mysql_connect("********", "report_user", "**********");
$select = mysql_select_db("smartvend", $connect);
$result = mysql_query("SELECT history.MeterNum, fields.ID, history.FieldName, fields.Description, history.ExecDate, history.FieldValue
FROM
amr_fields fields, amr_read_history history
WHERE
fields.ID=history.FieldName AND ExecDate>= '(CURDATE()'
",$connect);

while ($data = mysql_fetch_row($result))
{
echo"<tr>";
echo"<td>{$data[0]}</td>";
echo"<td>{$data[1]}</td>";
echo"<td>{$data[2]}</td>";
echo"<td>{$data[3]}</td>";
echo"<td>{$data[4]}</td>";
echo"<td>{$data[5]}</td>";
echo"</tr>";
}
}
и так до 30ти. из-за этого у меня он тормозит. Как укоротить его? Намекните. Я новичок в этом деле.
 
Последнее редактирование модератором:

Kotofey

FloodMaster.
Конект к базе один сделай, и цыкл в функцию
PHP:
function myFun($result){
while(...).......
}
$connect = mysql_connect("********", "report_user", "**********");
$select = mysql_select_db("smartvend", $connect);
$result =mysql_query(sql);
nameFun($resulr);
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Выскажу мнение, что надо переписать, понять почему не надо делать такую кучу запросов и переписать. У тебя однотипные запросы, которые завязаны на $name = $_GET["name"]; который, как я понял влияет на временной интервал в запросе.

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

PHucker

Новичок
вот что получилось:

<html>
<head>
<title>Report</title>
<link href="css/frombase.css" type="text/css" rel="stylesheet">
</head>
<body>
<center>
<table border="1" height="" width="" id="table1">

<tr >
<td id="first">НомерСчетчика</td>
<td id="first">ID</td>
<td id="first">Fields</td>
<td id="first">Description</td>
<td id="first">

<form action="<?=$_SERVER["PHP_SELF"]?>" method="get">
Введите дни(от 1 до 30):
<input type="text" name="name"><br>
<input type = "submit" value = "Считать">
</form>
</td>
<td id="first">Значение</td>

</tr>
<?php
$connect = mysql_connect("***************", "report_user", "********) or die("Ошибка соединения!");
mysql_select_db("smartvend", $connect);


if (isset($_GET["name"]))
{
$name = $_GET["name"];
$query ="SELECT history.MeterNum, fields.ID, history.FieldName, fields.Description, history.ExecDate, history.FieldValue
FROM
amr_fields fields, amr_read_history history
WHERE
fields.ID=history.FieldName AND ExecDate>= SUBDATE(CURRENT_DATE, INTERVAL $name DAY)
ORDER BY ExecDate ASC";
}
else {



$connect = mysql_connect("***************", "report_user", "*************");
$select = mysql_select_db("smartvend", $connect);
$result = mysql_query("SELECT history.MeterNum, fields.ID, history.FieldName, fields.Description, history.ExecDate, history.FieldValue
FROM
amr_fields fields, amr_read_history history
WHERE
fields.ID=history.FieldName AND ExecDate>= '(CURDATE()'
",$connect);

while ($data = mysql_fetch_array($result))
{
echo"<tr>";
echo"<td>{$data[0]}</td>";
echo"<td>{$data[1]}</td>";
echo"<td>{$data[2]}</td>";
echo"<td>{$data[3]}</td>";
echo"<td>{$data[4]}</td>";
echo"<td>{$data[5]}</td>";
echo"</tr>";
}
}

$sql = mysql_query($query) or die(mysql_error());

while ($data = mysql_fetch_array($sql))
{
echo"<tr>";
echo"<td>{$data[0]}</td>";
echo"<td>{$data[1]}</td>";
echo"<td>{$data[2]}</td>";
echo"<td>{$data[3]}</td>";
echo"<td>{$data[4]}</td>";
echo"<td>{$data[5]}</td>";
echo"</tr>";
}
mysql_close();


?>
</table>
</center>
</body>
</html>
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Уже лучше, теперь надо понять почему надо приводить типы данных, которые ты подставляешь в запросе к нужным, в часности у тебя там $name может привести к дырке в запросе. Ну а посему читай http://phpfaq.ru/slashes

PS: прости за неточность, я тебе посоветовал использовать mysql_fetch_array, а имел в виду mysql_fetch_assoc, тогда ты сможешь писать нормальные ключи у массива при выводе данных. То есть ты выбираешь в запросе поле MeterNum и пишешь при выводе $data['MeterNum']
 

Kotofey

FloodMaster.
вот что получилось:

<html>
<head>
<title>Report</title>
<link href="css/frombase.css" type="text/css" rel="stylesheet">
</head>
<body>
<center>
<table border="1" height="" width="" id="table1">

<tr >
<td id="first">НомерСчетчика</td>
<td id="first">ID</td>
<td id="first">Fields</td>
<td id="first">Description</td>
<td id="first">

<form action="<?=$_SERVER["PHP_SELF"]?>" method="get">
Введите дни(от 1 до 30):
<input type="text" name="name"><br>
<input type = "submit" value = "Считать">
</form>
</td>
<td id="first">Значение</td>

</tr>
<?php
$connect = mysql_connect("***************", "report_user", "********) or die("Ошибка соединения!");
mysql_select_db("smartvend", $connect);


if (isset($_GET["name"]))
{
$name = $_GET["name"];
$query ="SELECT history.MeterNum, fields.ID, history.FieldName, fields.Description, history.ExecDate, history.FieldValue
FROM
amr_fields fields, amr_read_history history
WHERE
fields.ID=history.FieldName AND ExecDate>= SUBDATE(CURRENT_DATE, INTERVAL $name DAY)
ORDER BY ExecDate ASC";
}
else {



$connect = mysql_connect("***************", "report_user", "*************");
$select = mysql_select_db("smartvend", $connect);
$result = mysql_query("SELECT history.MeterNum, fields.ID, history.FieldName, fields.Description, history.ExecDate, history.FieldValue
FROM
amr_fields fields, amr_read_history history
WHERE
fields.ID=history.FieldName AND ExecDate>= '(CURDATE()'
",$connect);

while ($data = mysql_fetch_array($result))
{
echo"<tr>";
echo"<td>{$data[0]}</td>";
echo"<td>{$data[1]}</td>";
echo"<td>{$data[2]}</td>";
echo"<td>{$data[3]}</td>";
echo"<td>{$data[4]}</td>";
echo"<td>{$data[5]}</td>";
echo"</tr>";
}
}

$sql = mysql_query($query) or die(mysql_error());

while ($data = mysql_fetch_array($sql))
{
echo"<tr>";
echo"<td>{$data[0]}</td>";
echo"<td>{$data[1]}</td>";
echo"<td>{$data[2]}</td>";
echo"<td>{$data[3]}</td>";
echo"<td>{$data[4]}</td>";
echo"<td>{$data[5]}</td>";
echo"</tr>";
}
mysql_close();


?>
</table>
</center>
</body>
</html>
Лишний конект в блоке else убери и будет более менее нормально
 
Сверху