Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
с предыдущим запросом я вижу день рождения сегодня и еще 3 в ближайшие дни

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

Цитата:
SELECT COUNT(*) count FROM (
SELECT actor_id,
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END) as newdate FROM actor HAVING newdate
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 2 WEEK)
ORDER BY newdate ASC

) tmp

выделенное и есть предыдущий запрос. и если он хоть что то возвращает - функция COUNT основного запроса должна это подсчитать. поэтому вы что то делаете не так.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 22:00 16-09-2019 | Исправлено: Mavrikii, 22:00 16-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
второй запрос не работает (query 2.png)
 
первый работает (query 1.png)
 
посмотрите на скриншот
 
https://yadi.sk/d/CvzeASe1iUFh7A

Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 22:17 16-09-2019 | Исправлено: zagorisback, 22:18 16-09-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
я еще раз повторю - думайте, думайте.  
второй запрос только для счета, он не выбирает актеров - нет необходимости.
ну почему я должен разжевывать элементарные вещи?
 
ок, раз вам нужна несуразность, то вот она

Код:
SELECT *, COUNT(*) count FROM (
SELECT *,
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END) as newdate FROM actor HAVING newdate
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 2 WEEK)
ORDER BY newdate ASC
) tmp  
GROUP BY tmp.actor_id

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 22:22 16-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я визуализирую ... но
неправильный код еще
неправильный порядок
мы все еще в начале, я не знаю, как визуализировать счет
 
посмотрите query 3.png в яндексе

Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 22:38 16-09-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
очень хорошо вы "учитесь", на порно-актрисах...
GROUP BY tmp.actor_id может сбить порядок.

Код:
SELECT *, COUNT(*) count FROM (
SELECT *,
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END) as newdate FROM actor HAVING newdate
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 2 WEEK)
) tmp  
GROUP BY tmp.actor_id
ORDER BY tmp.newdate ASC

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 22:43 16-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это демо, есть и актеры кино
 
Добавлено:
 
невероятно!,
Я не верю в это, все еще ошибка
 
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ... on line 48
 
line 48
 

Код:
 
while($row=mysql_fetch_array($query)){
 


Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 22:47 16-09-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Я не верю в это, все еще ошибка

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

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 22:58 16-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я вернулся к первому запросу
по крайней мере, это работает,
без учета
 

Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 23:15 16-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
что не так с этим кодом?
Я получаю ошибку
 
what is wrong with this code?
I get an error
 
 

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ...  modifica_cinema.php on line 8

 
 

Код:
 
<?php
 
require_once("connetti.php");
 
$actor_id = $_GET["id"];
//......immagino che l'id tu lo trasmetta tramite get: $id=_GET['id'];
$query = mysql_query ("SELECT * FROM actor  WHERE actor_id=". $actor_id);
$row = mysql_fetch_array ($query);
 
$nome=$row['nome'];
$performer_aka=$row['performer_aka'];
?>
 
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Nome  
  <input name="nome" type="text" id="nome" value="<?php echo $nome;?>"><br />
Performer Aka  
<textarea name="performer_aka" id="performer_aka"><?php echo $performer_aka;?></textarea><br />
<input name="modifica" type="submit" id="modifica" value="modifica">
</form>
<?php
 
if (isset($_POST['modifica']))
{
 include "connetti.php";
    $query = mysql_select_db("xxx", $db);
    if ($query)
        {
 
    $nome=$_POST['nome'];
    $performer_aka=$_POST['performer_aka'];
    
    $query=mysql_query("UPDATE actor SET nome='".$_POST['nome']."', performer_aka='".$_POST['performer_aka']." WHERE actor_id=". $actor_id);
 
$risultato=mysql_query($query);
 
            if($risultato) echo "<h2>Congratulazioni! Dati inseriti.</h2>";
                else echo "<h2>Attenzione! Dati non inseriti!</h2>";
            
    } else echo "<h2>Errore! Database non selezionato.</h2>";
    
    
}
    ?>
 
 

Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 21:25 18-09-2019 | Исправлено: zagorisback, 21:26 18-09-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
$query = mysql_query ("SELECT * FROM actor  WHERE actor_id=". $actor_id);

1) нельзя напрямую использовать неизвестные данные таким образом. читаем о  
https://ru.wikipedia.org/wiki/Внедрение_SQL-кода
+ https://www.php.net/manual/en/mysqli.real-escape-string.php
+ https://www.php.net/manual/en/function.intval.php
 
2) все зависит от того, что передается в _GET['id'], сделать вывод значения и посмотреть - оно вызывает SQL ошибку.
даже если нет id параметра в запросе, это создаст ошибочный SQL запрос.
 
Самое главное правило веб-разработчика - не доверяй данным полученным от пользователя.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 21:28 18-09-2019 | Исправлено: Mavrikii, 21:32 18-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cinema.php
 
cinema.php?id=40
 

Код:
<a href="javascript:apri('modifica_cinema.php?id=<?php echo $actor_id; ?>')">Modifica</a>

 
"id" извлечен
 
modifica_cinem.php
 
modifica_cinema.php?id=40
 
код выше
 

 
 

Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 21:40 18-09-2019 | Исправлено: zagorisback, 21:42 18-09-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
код выше

делаем  
echo "SELECT * FROM actor  WHERE actor_id=". $actor_id;
и смотрим.
по нормальному надо  
"SELECT * FROM actor  WHERE actor_id=". (int)$actor_id;
 
если запрос выглядит нормально, то на время отладки
$query = mysql_query("SELECT * FROM actor  WHERE actor_id=" .  (int)$actor_id) or die ("Error in query: " . mysql_error());
 
и! забываем про mysql_, а используем mysqli_ расширение
 
ps: и так делать нельзя ни в коем случае

Цитата:
"UPDATE actor SET nome='".$_POST['nome']."', performer_aka='".$_POST['performer_aka']." WHERE actor_id=". $actor_id

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 21:46 18-09-2019 | Исправлено: Mavrikii, 21:48 18-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
е как это сделать?  
мне нужно обновить карточку актера прямо со страницы через «редактировать»
 
этот код должен найти актера "id" и передать его в базу данных
есть ли другие способы?

Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 21:51 18-09-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
е как это сделать?  

блин, написал же все.
 
сделать
Цитата:
echo "SELECT * FROM actor  WHERE actor_id=". $actor_id;
до mysql_query, посмотреть что выдаст в браузер.
 
если запрос будет выглядеть нормально, то вместе mysql_query строки сделать

Цитата:
$query = mysql_query("SELECT * FROM actor  WHERE actor_id=" .  (int)$actor_id) or die ("Error in query: " . mysql_error());

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 21:57 18-09-2019 | Исправлено: Mavrikii, 21:57 18-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

ошибка в запросе, ID пусто
 
Attenzione! Dati non inseriti!  ---------> Внимание! Данные не введены!
 
SELECT * FROM actor WHERE actor_id=      
 
 

Код:
 
<?php
 
require_once("connetti.php");
 
$actor_id = $_GET["id"];
//......immagino che l'id tu lo trasmetta tramite get: $id=_GET['id'];
$query = mysql_query("SELECT * FROM actor  WHERE actor_id=" .  (int)$actor_id) or die ("Error in query: " . mysql_error());  
$row = mysql_fetch_array ($query);
 
$nome=$row['nome'];
$performer_aka=$row['performer_aka'];
?>
 
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Nome  
  <input name="nome" type="text" id="nome" value="<?php echo $nome;?>"><br />
Performer Aka  
<textarea name="performer_aka" id="performer_aka"><?php echo $performer_aka;?></textarea><br />
<input name="modifica" type="submit" id="modifica" value="modifica">
</form>
<?php
 
if (isset($_POST['modifica']))
{
 include "connetti.php";
    $query = mysql_select_db("xxx", $db);
    if ($query)
        {
 
    $nome=$_POST['nome'];
    $performer_aka=$_POST['performer_aka'];
    
    $query=mysql_query("UPDATE actor SET nome='".$_POST['nome']."', performer_aka='".$_POST['performer_aka']." WHERE actor_id=". $actor_id);
 
$risultato=mysql_query($query);
 
            if($risultato) echo "<h2>Congratulazioni! Dati inseriti.</h2>";
                else echo "<h2>Attenzione! Dati non inseriti!</h2>";
            
    } else echo "<h2>Errore! Database non selezionato.</h2>";
    
    
}
 
echo "SELECT * FROM actor  WHERE actor_id=". $actor_id;  
 
    ?>
    
    
 
 

Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 22:10 18-09-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
SELECT * FROM actor WHERE actor_id=    

ну так нет id аргумента в запросе.
делаем print_r($_GET); и смотрим что и в каком виде передается (если передается).

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 22:12 18-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
echo "SELECT * FROM actor  WHERE actor_id=". $actor_id;
 
 
print_r($_GET)  
 
 

 
 
первый
 

Код:
 
SELECT * FROM actor WHERE actor_id=40Array ( [id] => 40 )  
 
 

 
после вставки
 

Код:
 
SELECT * FROM actor WHERE actor_id=Array ( )  
 

 
Добавлено:
 
выглядит
 
https://yadi.sk/d/_AM1UcFoJhGzBQ

Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 22:21 18-09-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
echo "SELECT * FROM actor  WHERE actor_id=". $actor_id;

выдает нормальный запрос

Цитата:
SELECT * FROM actor WHERE actor_id=40

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

Цитата:
после вставки

а вот тут не передается ID, что и вызывает проблему с запросом.

Цитата:
form action="<?php echo $_SERVER['PHP_SELF'] . '?id=' . $actor_id; ?>" method="post">

нужно либо его передавать, либо проверять его наличие
isset($_GET['id'])

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 22:36 18-09-2019 | Исправлено: Mavrikii, 22:41 18-09-2019
zagorisback

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

конфигурационе пер датабасе  
 
connetti.php
 

Код:
 
<?php
$db = mysql_connect ("localhost", "exadmin", "expass");
// Create connection
mysql_select_db ("xxx", $db);
// Check connection
if ($conn->connect_error) {
    die("Errore di Connessione: " . $conn->connect_error);
}
?>
 

Всего записей: 212 | Зарегистр. 05-05-2014 | Отправлено: 22:43 18-09-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
перечитывайте последние сообщения перед отправкой своих.

Цитата:
а вот тут не передается ID, что и вызывает проблему с запросом.
 
Цитата:
form action="<?php echo $_SERVER['PHP_SELF'] . '?id=' . $actor_id; ?>" method="post">
 
нужно либо его передавать, либо проверять его наличие
isset($_GET['id'])

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 22:45 18-09-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru