1

Тема: Помилка No database selected (код всередині)

Допоможіть розібратися, в чому проблема, чому виникає помилка No database selected. Створила базу даних agromash, в ній таблицю product в MySql, тепер намагаюсь її вивести в таблицю на сайті. підкажіть будь ласка, в чому проблема. Якщо ставлю два __construct і перезавантажую сторінку, воно просто без перерви її вантажить, але перезавантажити не може. Можливо проблема в циклі, але я поки не можу розібратися, яка саме

<?php
abstract class ACore{
 
protected $db;
 
public function _construct(){
    $this->db = mysql_connect(HOST,USER,PASSWORD);
    if (!$this->db){
        exit("Error".mysql_error());
    }
    if(!mysql_select_db(DB,$this->db)){
        exit("We have not this DB");
    }
    mysql_query("SET NAMES 'UTF8'");
    }
 
protected function get_header(){
    include "header.php";
}
    
    public function get_body(){
        $this->get_header();
        
        $query = "SELECT `id`,`name`,`number`,`price` FROM `product`";
 
         $result = mysql_query($query) or  die(mysql_error());
    if (!$query){
        
    exit(mysql_error());
    }
    
    echo "<div class='container'>
            
            <div class='collections'>
        
<div class='product'>
 
<table border=2  align=center bgcolor=black cellspacing=1 cellpadding=5 >
<tr >";
$row = array();
         while ($row = mysql_fetch_array($result)){
            
                echo "<td  align=center  rowspan=2>
<b><font  >№ П.П</font></b>
</td>
 
<td  align=center  rowspan=2>
<b><font  > Найменування продукції          
</font></b>
</td>
 
<td  align=center  rowspan=2>
<b><font  >Номер по каталогу
</font></b>
</td>
 
<td  align=center >
<b><font  >Ціна 
</font></b>
</td>
</tr>
<tr>
  
</tr>";
 
            $ID = $row[id];
            $Name = $row[name];
            $Number = $row[number];
            $Price = $row[price];
            
        
         }
         
         echo"</table>
</div>  
</div>
</div>";
    }
}
?>

2

Re: Помилка No database selected (код всередині)

Конструктор має зватися __construct, через два підкреслення. Проблема саме на тій сторінці, яку "воно просто без перерви її вантажить, але перезавантажити не може" і коду якої ви не навели.

3

Re: Помилка No database selected (код всередині)

koala написав:

коду якої ви не навели.

ось код сторінки,яку я намагаюсь завантажити

<?php
header("Content-Type:text/html;charset=UTF-8");

require_once("config.php");
require_once("classes/ACore.php");

if($_GET['option']){
    $class = trim(strip_tags($_GET['option']));
}
else{
    $class = 'main';
}

if(file_exists("classes/".$class.".php")){
    include("classes/".$class.".php");
    if(class_exists($class)){
        $obj = new $class;
        $obj->get_body();
    }
    else{
        exit("<p>Не адреса</p>");
    }
}
else{
    exit("<p>Неправильний доступ</p>");
}
?>

4 Востаннє редагувалося VTrim (22.05.2016 13:43:24)

Re: Помилка No database selected (код всередині)

Константи HOSТ, USER, PASSWORD, DB десь встановлені і чи встановлені правильно (для підключення). ? Я так розумію в config.php

5

Re: Помилка No database selected (код всередині)

$_GET['option'] дорівнює 'ACore'?
Чому дорівнює DB?
З того, що поки бачу:
- require_once("classes/ACore.php"); і include("classes/".$class.".php"); дублюють одне одного, якщо $_GET['option']=='ACore' ;
- $ID = $row[id]; нічого не виводить і призводить до помилки, якщо id - не константа (можливо, мало бути 'id'?);
- if (!$query - $query - рядок, який не змінюється, який сенс його перевіряти?

А в header.php ніяких підключень до бази не встановлюється?

6

Re: Помилка No database selected (код всередині)

koala написав:

А в header.php ніяких підключень до бази не встановлюється?

Ні, там виключно html-код

7

Re: Помилка No database selected (код всередині)

А скільки часу ви чекали того "безперервного вантаження"? Дочекайтеся на повідомлення про перевищення часу скриптом PHP.

8

Re: Помилка No database selected (код всередині)

koala написав:

Дочекайтеся на повідомлення про перевищення часу скриптом PHP.

Видало ось такі помилки
Warning: mysql_connect() [function.mysql-connect]: MySQL server has gone away in Z:\home\localhost\www\product\classes\ACore.php on line 7

Warning: mysql_connect() [function.mysql-connect]: Error while reading greeting packet. PID=3640 in Z:\home\localhost\www\product\classes\ACore.php on line 7

Warning: mysql_connect() [function.mysql-connect]: MySQL server has gone away in Z:\home\localhost\www\product\classes\ACore.php on line 7

Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\localhost\www\product\classes\ACore.php on line 7
Сьома стрічка це

 $this->db= mysql_connect(HOST,USER,PASSWORD);

9

Re: Помилка No database selected (код всередині)

Ну, власне, ви все написали - чомусь не встановлюється з'єднання. Чому - це складніше питання, ось тут перелік варіантів (англ.).

Ось тут підказують, що це може бути через те, що MySQL налаштований не приймати зовнішні з'єднання, а ви звертаєтеся до нього не як до "localhost", а як до "domain.tld".

Подякували: 221VOLT1

10 Востаннє редагувалося VTrim (22.05.2016 17:47:07)

Re: Помилка No database selected (код всередині)

1. Ок, перший раз коли я сказав про константи, ви проігнорували це, а помилка виявилась саме в тому рядку.
2. Ви вкурсі, що для того щоб підключитись до БД, треба ввести правильні дані?7
3. Ви знаєте що таке константи?

11

Re: Помилка No database selected (код всередині)

VTrim написав:

1. Ок, перший раз коли я сказав про константи, ви проігнорували це, а помилка виявилась саме в тому рядку.
2. Ви вкурсі, що для того щоб підключитись до БД, треба ввести правильні дані?7
3. Ви знаєте що таке константи?

У файлі config знаходиться такий код

<?php
define("HOST",`localhost:8080`);
define("USER",`Dina`);
define("PASSWORD",`123`);
define("DB",`agromash`);
?>

У phpMyAdmin я створила користувача з іменем Dina,паролем 123,хостом localhost:8080,який має усі права доступу до бази данних agromash. наче б то все правильно

12 Востаннє редагувалося VTrim (22.05.2016 18:23:31)

Re: Помилка No database selected (код всередині)

Спробуйте просто localhost написати (без :8080)

Подякували: koala1

13

Re: Помилка No database selected (код всередині)

VTrim написав:

Спробуйте просто localhost написати (без :8080)

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