Проблем с сайт

pro12

Registered
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a8853370/public_html/config.php on line 24
24ред
Код:
$logged = mysql_fetch_array($logged);
 
Това означава, че заявката връща false .. дай малко повече код, като например заявката..
 
PHP:
<? 
ob_start(); // allows you to use cookies 
$hostname = ""; 
$dbuser = ""; 
$dbpass = "11"; 
$dbname = ""; 
$conn = mysql_connect($hostname, $dbuser, $dbpass); 
 
//fill in the above lines where there are capital letters. 
$logged = MYSQL_QUERY("SELECT * from users WHERE id='$_COOKIE[id]' AND password = '$_COOKIE[pass]'"); 
$logged = mysql_fetch_array($logged); 
//the above lines get the user's information from the database. 
?>
 
Не използвайте книжки и онлайн ресурси от преди 10 години...

Иначе не си селектнал базата, както и използваш неправилно $_COOKIE...
 
Както каза @lamerko, след като се конектнеш трябва да избереш и базата
Код:
//select a database
$select = mysql_select_db("DATABASE",$conn)
  or die("nqma vryzka");
след това ти е заявката към нея.
Освен това mysql_*...
 
Защо всеки файл който има mysql_fetch_array() и е иклуднат в индекса дава Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ? А Като ги отварям по от делно работи
А този файл когато го иклудвам в индекса дава mysql_fetch_array(): supplied argument is not a valid MySQL result resource in а като иклудвам в др страница работи
Код:
<?php
include ('config.php'); //???????? config ?????
 

$our = mysql_query("SELECT * FROM link ORDER BY id DESC LIMIT 10"); //???????г ??? ???? ?? ?????? ?? ??
while($r=mysql_fetch_array($our)) 

$pp = "4";

$table = "link";

$total = mysql_result(mysql_query("SELECT COUNT(id) FROM $table"),0);
$numofpages = $total / $pp;
if (!isset($_GET['page'])) {
$page = 1;
}
else {
$page = $_GET['page'];
}
$limitvalue = $page * $pp - ($pp);

/* ???????? ????????, ? ???? ?????? ?? ???????? ???? [username] */
$query = "SELECT * FROM $table ORDER BY id DESC LIMIT $limitvalue, $pp";
$result = mysql_query($query);
while($r=mysql_fetch_array($result))
{

echo (" <a href=\"$r[url]\">$r[ime]</a><br />\n"); 


 


}





?>
 
pro12 каза:
Пак същтото .Дава и това MySQL server has gone away
Поне да беше казал, че си преместил сайта на друг хостиг и тогава се появиха грешките.
 
ето
Код:
<?php 
$hostname = ""; 
$dbuser = ""; 
$dbpass = ""; 
$dbname = ""; 
$connect = mysql_connect($hostname, $dbuser, $dbpass)or die(mysql_error()); 
mysql_select_db($dbname,$connect); 

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTERS 'utf8'");
mysql_query("SET character_set_server = 'utf8'");
?>
 
<? 
ob_start(); // allows you to use cookies 
$hostname = ""; 
$dbuser = ""; 
$dbpass = ""; 
$dbname = ""; 
$conn = mysql_connect($hostname, $dbuser, $dbpass); 
 
//fill in the above lines where there are capital letters. 
$logged = MYSQL_QUERY("SELECT * from users WHERE id='$_COOKIE[id]' AND password = '$_COOKIE[pass]'"); 
$logged = mysql_fetch_array($logged); 
//the above lines get the user's information from the database. 
?> 
<?php
$host = ""; 

 
$user = "";

 
$pass = "";

 
$db = "";
 
 $mysqli = new mysqli($host, $user, $pass, $db) or die("Свързването към базата данни е неуспешно. Край.");
$mysqli->query('SET NAMES utf8'); 


?>
<?php 
$hostname = ""; 
$dbuser = ""; 
$dbpass = ""; 
$dbname = ""; 
$conn=mysql_connect($hostname, $dbuser, $dbpass); 
mysql_select_db($dbname,$connect); 

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTERS 'utf8'");
mysql_query("SET character_set_server = 'utf8'");
?> 
<?php 
$hostname = ""; 
$dbuser = ""; 
$dbpass = ""; 
$dbname = "";  
mysql_connect($hostname, $dbuser, $dbpass)  
or die("The poseten database could not be selected!"); 

?>
 
Тоест имаш конекции за mysql_* и за mysqli_* ... сайта ти е "мешана скара" .. 1 файл с mysql_* ... друг с mysqli_* :)

т.е. нищо чудно, че в един файл работи, а в друг не...
 
Значи да си направя два configa един за MySQLi и др за mysql така ли?
Код:
<? 
ob_start(); // allows you to use cookies 
 
$conn = mysql_connect($hostname, $dbuser, $dbpass)or die(mysql_error()); 
 
//fill in the above lines where there are capital letters. 
$logged = MYSQL_QUERY("SELECT * from users WHERE id='$_COOKIE[id]' AND password = '$_COOKIE[pass]'"); 
$logged = mysql_fetch_array($logged); 
//the above lines get the user's information from the database. 
?>
Тук. Как да използвам правилно $_COOKIE?
 
pro12 каза:
Значи да си направя два configa един за MySQLi и др за mysql така ли?
Код:
<? 
ob_start(); // allows you to use cookies 
 
$conn = mysql_connect($hostname, $dbuser, $dbpass)or die(mysql_error()); 
 
//fill in the above lines where there are capital letters. 
$logged = MYSQL_QUERY("SELECT * from users WHERE id='$_COOKIE[id]' AND password = '$_COOKIE[pass]'"); 
$logged = mysql_fetch_array($logged); 
//the above lines get the user's information from the database. 
?>
Тук. Как да използвам правилно $_COOKIE?

Избери си или само mysql_ или само mysqli_ . Препоръчно е да ползваш mysqlI_, но тогава ще трябва да си преработиш целия код, или по точно навсякъде където ползваш mysql_ . Доколкото за _COOKIE, идеята е да не ползваш глобалните променливи директно в заявката а да я изнесеш отвън
като например
$idCookie = $_COOKIE['id'];
$passCookie = $_COOKIE['pass'];
като за защита може да ползваш filter_input, например и ще стане така
$idCookie = filter_input(INPUT_COOKIE,'id');
$passCookie = filter_input(INPUT_COOKIE,'pass');
 
PHP:
<?php
include ('config.php'); //???????? config ?????


$our = mysql_query("SELECT * FROM link ORDER BY id DESC LIMIT 10"); //???????г ??? ???? ?? ?????? ?? ??
while($r=mysql_fetch_array($our)) 

$pp = "4";

$table = "link";

$total = mysql_result(mysql_query("SELECT COUNT(id) FROM $table"),0);
$numofpages = $total / $pp;
if (!isset($_GET['page'])) {
$page = 1;
}
else {
$page = $_GET['page'];
}
$limitvalue = $page * $pp - ($pp);

/* ???????? ????????, ? ???? ?????? ?? ???????? ???? [username] */
$query = "SELECT * FROM $table ORDER BY id DESC LIMIT $limitvalue, $pp";
$result = mysql_query($query);
while($r=mysql_fetch_array($result))
{

echo (" <a href=\"$r[url]\">$r[ime]</a><br />\n"); 





}





?>
Как да преработя този код за да работи с mysqli?
 
PHP:
<?php
$servername = "s";
$username = "s";
$password = "s";
$dbname = "s";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

?>
Къде да сложа това
$mysqli('SET NAMES utf8');
 
Код:
<?php
include ('config.php'); //???????? config ?????

$our = "SELECT * FROM link ORDER BY id DESC LIMIT 10";

if($resultFromOur = $conn->query($our)){
	while($row = $resultFromOut->fetch_array()){
		
		$pp = "4";
		
		$table = "link";
		
		$totalSql = "SELECT COUNT(id) FROM ".$table;
		
		if($resultFromTotal = $con->query($totalSql)){
			$numOfPages = $resultFromTotal / $pp;
			
			if(!isSet($_GET['page']])){
				$page = 1;
			}else{
				$page = filter_input(INPUT_GET,'page');
			}
			
			$limitvalue = $page * $pp - ($pp);
			
			$sql = "SELECT * FROM $table ORDER BY id DESC LIMIT $limitvalue, $pp"
			
			if($resultSql = $conn->query($sql)){
				while($r = $resultSql->fetch_array()){
					echo (" <a href=\"$r[url]\">$r[ime]</a><br />\n"); 
				}
			}
		}
	}
}





?>

Код:
<?php
$servername = "s";
$username = "s";
$password = "s";
$dbname = "s";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
if(!$conn->set_charset("utf8")){
	printf('Error loading \"Utf-8"\ charset',$conn->error);
}

?>

Прегледай си го за всеки случай
 
mapka7a Мерси за помоща! Препревих два файла от mysql на mysqli.
Но на следващия ми трябва помощ. Ето кода с mysql
PHP:
 include("config.php");
if(isset($_POST['izprati'])){
$ime = $_POST['ime'];
$ime = htmlspecialchars($ime);
$ime = addslashes($ime);  
$id = $_GET['id'];
$data = date("j/n/Y G:i:s"); 
$ip = $_SERVER['REMOTE_ADDR']; 
 
$comentar = $_POST['comentar'];
$comentar = htmlspecialchars($comentar);
$comentar = addslashes($comentar);
 
if($ime== NULL){  
echo "Попълнете име";
exit;
}
elseif($comentar==NULL){
echo "Попълнете коментара ";
exit;
}
 
else {
$sql = "INSERT INTO comments (ime, comentar, data, ip, id) VALUES ('$ime', '$comentar', '$data', '$ip', '$id')";
mysql_query($sql) or die (mysql_error());
header("LOCATION: viewnews.php?id=$id");
}
}																																	
?>

	
  <?php
  include("securiti.php");
include("admin/agent.php");
include("config.php");
include_once('bbcode.php'); 
$id = (int)$_GET['id'];
$gett = mysql_query("SELECT * FROM news WHERE id='$id'")or die ('Error: '.mysql_error ());
while($row=mysql_fetch_array($gett))
{
 
echo "
 <div id='sdrjanie2'><br><b><center>".$row['ime']."</b></center><br><blockquote><p align='justify'> ";
echo bbcode($row['nowina']);
echo  "</blockquote><p align='right'></br>Автор:".$row['awtor']."<br></p>";
echo  "</br><li><a href=".$row['iztochnik'].">Източник</a><br>";




}
?>


<form  method='POST'>
<center>
<input type="hidden" name="id" value="".$row['id']."" />

<br>Автор<input type='text' size='40' name='ime' maxlength="20"></br></br>
Коментар<br><textarea name="comentar" rows="4" cols="27"></textarea><br>
<input type='submit' name='izprati' value='Добави коментара ' ></br>
</center>
</form>


<?php
$thispage = $_SERVER['PHP_SELF'];
// запазваме GET стойностите с изключение на page
$getwithoutpage = "?";
if (isset($_GET))
        foreach($_GET as $k=>$v)
                if ($k!='page') $getwithoutpage.=$k."=".urlencode($v)."&";
 
$showeachside = 5; //  Колко страници да се показват отляво и отдясно на текущата страница

// Колко реда на страница
$rowsPerPage = 1;

// Подразбираме показване на първа страница
$pageNum = 1;

// ако $_GET['page'] е дифинирано използваме тази страница
if(isset($_GET['page']) and is_numeric($_GET['page']))
{
    $pageNum = $_GET['page'];
}

// пресмятаме отместването
$offset = ($pageNum - 1) * $rowsPerPage;

$our = mysql_query("SELECT * FROM comments WHERE id='$id' ORDER BY id_com DESC LIMIT $offset, $rowsPerPage")or die(mysql_error());
 // Селектираме Базата данни и извеждаме резултатите! Всеки най-от горе!
while ($row = mysql_fetch_assoc($our)) { // Правим си един цикъл в който ще извеждаме коментарите!
  

echo "<table width='300' align='center'>
<tr><td><b>Автор: <font color='red'>$row[ime]</font></b></td></tr>
<tr><td align='center'><b>$row[comentar]</b></td></tr>
<tr><td align='right'><b>Дата: <font color='red'>$row[data]</font><hr/></b></td></tr>
</table>";}
$query1   = "SELECT COUNT(*) AS numrows FROM comments WHERE id='$id' ORDER BY id_com";
$result  = mysql_query($query1) or die('Error, query failed');
$row     = mysql_fetch_array($result, MYSQL_ASSOC);

$num = $row['numrows']; // броя на редовете

$start = ($pageNum -1) * $rowsPerPage;
if(empty($start))$start=0;  // текуща стартова позиция

$max_pages = ceil($num/$rowsPerPage); // брой на страниците
$cur = ceil($start/$rowsPerPage)+1; // текуща страница
?>
Ето и преправеня на mysqli
PHP:
  <?php
  
  include("admin/conf.php");
if(isset($_POST['izprati'])){
$ime = $_POST['ime'];
$ime = htmlspecialchars($ime);
$ime = addslashes($ime);  
$id = $_GET['id'];
$data = date("j/n/Y G:i:s"); 
$ip = $_SERVER['REMOTE_ADDR']; 
 
$comentar = $_POST['comentar'];
$comentar = htmlspecialchars($comentar);
$comentar = addslashes($comentar);
 
if($ime== NULL){  
echo "Попълнете име";
exit;
}
elseif($comentar==NULL){
echo "Попълнете коментара ";
exit;
}
 

$sql = "INSERT INTO comments (ime, comentar, data, ip, id) VALUES ('$ime', '$comentar', '$data', '$ip', '$id')";
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

}																																	
?>

	
  <?php

include("admin/agent.php");
 include("admin/conf.php");
include_once('bbcode.php'); 
$id = (int)$_GET['id'];
$sql = "SELECT * FROM news WHERE id='$id'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // outp
   while($row = $result->fetch_assoc()) {
echo "
 <div id='sdrjanie2'><br><b><center>".$row['ime']."</b></center><br><blockquote><p align='justify'> ";
echo bbcode($row['nowina']);
echo  "</blockquote><p align='right'></br>Автор:".$row['awtor']."<br></p>";
echo  "</br><li><a href=".$row['iztochnik'].">Източник</a><br>";




 }
} else {
    echo "0 results";
}
$conn->close();
?>


<form  method='POST'>
<center>
<input type="hidden" name="id" value="".$row['id']."" />

<br>Автор<input type='text' size='40' name='ime' maxlength="20"></br></br>
Коментар<br><textarea name="comentar" rows="4" cols="27"></textarea><br>
<input type='submit' name='izprati' value='Добави коментара ' ></br>
</center>
</form>

<?php
$thispage = $_SERVER['PHP_SELF'];
// запазваме GET стойностите с изключение на page
$getwithoutpage = "?";
if (isset($_GET))
        foreach($_GET as $k=>$v)
                if ($k!='page') $getwithoutpage.=$k."=".urlencode($v)."&";
 
$showeachside = 5; //  Колко страници да се показват отляво и отдясно на текущата страница

// Колко реда на страница
$rowsPerPage = 1;

// Подразбираме показване на първа страница
$pageNum = 1;

// ако $_GET['page'] е дифинирано използваме тази страница
if(isset($_GET['page']) and is_numeric($_GET['page']))
{
    $pageNum = $_GET['page'];
}

// пресмятаме отместването
$offset = ($pageNum - 1) * $rowsPerPage;

$sql = "SELECT * FROM comments WHERE id='$id' ORDER BY id_com DESC LIMIT $offset, $rowsPerPage";
 // Селектираме Базата данни и извеждаме резултатите! Всеки най-от горе!
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
  

echo "<table width='300' align='center'>
<tr><td><b>Автор: <font color='red'>$row[ime]</font></b></td></tr>
<tr><td align='center'><b>$row[comentar]</b></td></tr>
<tr><td align='right'><b>Дата: <font color='red'>$row[data]</font><hr/></b></td></tr>
</table>";}
   
} else {
    echo "0 results";
}
$conn->close();
$sql = "SELECT COUNT(*) AS numrows FROM comments WHERE id='$id' ORDER BY id_com";
$result  = mysqli_query($sql);
$row     = mysqli_fetch_array($result, mysqli_ASSOC);

$num = $row['numrows']; // броя на редовете

$start = ($pageNum -1) * $rowsPerPage;
if(empty($start))$start=0;  // текуща стартова позиция

$max_pages = ceil($num/$rowsPerPage); // брой на страниците
$cur = ceil($start/$rowsPerPage)+1; // текуща страница
?>
Новината се извежда без проблем и коментара се записва.
Проблема е при извеждането на коментара и неговото странициране.
 
Какво точно очакваш да стане, след като затваряш връзката към базата точно преди заявката брой на коментарите /$conn->close();/? И въобще защо е този микс от процедурно и ОО програмиране при работата с mysqli? Да не говорим, че не правиш абсолютно нищо с данните от коментарите :)
 

Back
Горе