Warning: mysql_fetch_array()

ViPHP
ViPHP | 5462 Messages

15 nov. 2011, 15:19

active le trace_mode avant la conenxion
ini_set('mysql.trace_mode', true);

lanza
Invité n'ayant pas de compte PHPfrance

15 nov. 2011, 15:35

Bonjour à tous,

j'ai développé un site internet en local avec wampserver de la manière suivante :
localhost\dyn1\index.php

aujourd'hui je viens de le mettre en ligne chez mon hébergeur de la manière suivante : www\dyn1\index.php .

Mon site fonctionne parfaitement en local et lorsqu'il est en ligne (www.911plaisirs.fr/dyn1) il m'affiche l'erreur suivante :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a11plais/www/dyn1/index.php on line 49

Je ne comprends pas cette erreur et en recherchant sur le net les deux problèmes qui reviennent souvent sont :

mauvais array, ce qui ne peux pas être possible puisque en local cela fonctionne .. ?
ou alors mauvais identifiant de connexion et là encore je suis sur de mon script de connexion.

Quelqu'un pourrait-il m'aider s'il vous plait ?

Merci d'avance

lanza
Invité n'ayant pas de compte PHPfrance

15 nov. 2011, 18:09

Warning: mysql_query() [http://www.mysql.com/doc]: Table 'a11plais.ACCUEIL' doesn't exist in /home/a11plais/www/dyn1/index.php on line 10


Voila ce que ca me donne, il me dit que mes tables n'existent pas il me parle toujours de a11plais.nomdelatable, pourquoi ajoute-il tout ces préfixe ? et pas sur ma version locale ? Cela peut-il venir de mon hébergeur ?

ViPHP
ViPHP | 5462 Messages

15 nov. 2011, 18:32

montre ton code entier

lanza
Invité n'ayant pas de compte PHPfrance

15 nov. 2011, 18:52

<?php
//On se connecte à la base de données 
include('connexion_bd.php'); 
 
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); 
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
//On sélectionne les données
$index = mysql_query("SELECT titre,description,texte FROM ACCUEIL ORDER BY id ASC");
//On compte les données
$verification = mysql_num_rows($index);
//On boucle
while($accueil = mysql_fetch_array($index))
{
	$titre=$accueil['titre'];
	$description=$accueil['description'];
	$contenu=$accueil['texte'];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
<head>
 
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title><?php if(isset($titre)){
echo $titre;
}
?></title> 
<meta name="Description" content="<?php 
if(isset($description))
{
echo $description;
}
?>" />  
<link href="style.css" rel="stylesheet" type="text/css" /> 
 
</head> 
 
<body> 
<div id="header">
<?php include('header.php');?> 
</div> 

<div id="moncadre"> 

<div class="cadrecentrale">  
<?php
//On sélectionne les données mis à la une
$article = mysql_query("SELECT id,titre,description FROM CONTENU WHERE A_LA_UNE='1'");
while($affiche_article = mysql_fetch_array($article))
{
//on voie si il y a quelque chose
if(mysql_num_rows($article) != 0){
//On affiche l'article à la une
echo '<div class="cadre">
<big class="alaune">Article à la une ...</big><br/>
<h2><a title="'.$affiche_article['titre'].'" 
href="page.php?id='.$affiche_article['id'].'">'.$affiche_article['titre'].'</a></h2>';
//On tronque la description pour inviter le lecteur à lire la suite	  
//longueur maximum de la description  
$max_caracteres=300;
// Test si la longueur du texte dépasse la limite
if (strlen($affiche_article['description'])>$max_caracteres)
{    
// Sélection du maximum de caractères
$affiche_article['description'] = substr($affiche_article['description'], 0, 
$max_caracteres);
// Récupération de la position du dernier espace (afin déviter de tronquer un mot)
$position_espace = strrpos($affiche_article['description'], " ");    
$affiche_article['description'] = substr($affiche_article['description'], 0, 
$position_espace);    
//Ajout des "...[Lire la suite]"
$affiche_article['description'] = $affiche_article['description'].'... 
[<a title="'.$affiche_article['titre'].'" href="page.php?id='.$affiche_article['id'].'">Lire la suite</a>]';
}
//On affiche la description tronqué
echo ''.nl2br($affiche_article['description']).'
</div>';
}} 
?> 
<?php 
//Si le titre ou la description sont vides, on informe par un message d'alerte
if(empty($verification))
{
	echo '<big style="color:red">Attention, le titre et/ou la description de la page  d\'accueil est vide!! Veuillez les remplir SVP.</big><br/>';
}
//On affiche le contenu
if(isset($contenu))
{
	echo $contenu;
}
?> 

ViPHP
ViPHP | 5462 Messages

15 nov. 2011, 18:59

pourquoi tu rajoutes des guillemets pour mettre tes variables ?
que vaut $nom_de_la_base ?
ton niveau d'erreur est bien au maximum (dans ton php.ini error_reporting sur E_ALL | E_STRICT) ?

lanza
Invité n'ayant pas de compte PHPfrance

15 nov. 2011, 21:13

Alors pour les guillemets je n'ai pas d'explication, j'ai suivis un tuto pour cela, dois-je les enlever ? Nom_de_la_base = a11plais

Concernant le ini je suis chez firstheberg, je trouve cela ou ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 nov. 2011, 21:20

Salut

Tu vois cela avec un phpinfo();

Ton dernier message d'erreur indique que la table accueille n'existe pas tu n'aurais pas oublier de créer tes tables sur le serveur mysql ?

@+
Il en faut peu pour être heureux ......

lanza
Invité n'ayant pas de compte PHPfrance

15 nov. 2011, 22:43

Non je n'ai pas oublié cela est certain, mais on peut remarquer que pour ma table s'appelle accueil par exemple, dans l'erreur elle est précédée d'un préfixe "a11plais."

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 nov. 2011, 23:44

c'est le nom de la base,

m'enfin si mysql dit qu'il connais pas la table moi j'ai tendance à le croire ^^

essai juste ce code dans un fichier a part que tu lance avec ton navigateur
<?php
//On se connecte à la base de données 
include('connexion_bd.php'); 

$ret = mysql_connect($nom_du_serveur,$nom_utilisateur,$passe); 
mysql_select_db($nom_de_la_base) or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
//On sélectionne les données
if ($ret === false) {
	echo 'impossible de se connecter à la base de donnée<br />';
}
$ret = mysql_query("show tables");
if (mysql_num_rows($ret) > 0 ) {
	while ($data = mysql_fetch_row($ret)) {
		echo $data[0].'<br />';
	}
	mysql_free_result($ret);
}
else {
	echo 'pas de table ou show tables marche pas ^^';
}
?>
tu aura la liste de toute les tables dans la base que tu a sélectionné ($nom_de_la_base) sur le serveur sur lequel php se connect.

tu pourra ainsi voir ce qu'il a dans le ventre :)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 83 Messages

16 nov. 2011, 00:06

Concernant le ini je suis chez firstheberg, je trouve cela ou ?
Sur la plupart des serveurs, on n'a pas accès à php.ini, mais certains paramètres (pas tous :( ) sont modifiables par ini_set (les paramètres modifiables, c'est décrit

lanza
Invité n'ayant pas de compte PHPfrance

16 nov. 2011, 19:40

c'est le nom de la base,

m'enfin si mysql dit qu'il connais pas la table moi j'ai tendance à le croire ^^

essai juste ce code dans un fichier a part que tu lance avec ton navigateur
<?php
//On se connecte à la base de données 
include('connexion_bd.php'); 

$ret = mysql_connect($nom_du_serveur,$nom_utilisateur,$passe); 
mysql_select_db($nom_de_la_base) or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
//On sélectionne les données
if ($ret === false) {
	echo 'impossible de se connecter à la base de donnée<br />';
}
$ret = mysql_query("show tables");
if (mysql_num_rows($ret) > 0 ) {
	while ($data = mysql_fetch_row($ret)) {
		echo $data[0].'<br />';
	}
	mysql_free_result($ret);
}
else {
	echo 'pas de table ou show tables marche pas ^^';
}
?>
tu aura la liste de toute les tables dans la base que tu a sélectionné ($nom_de_la_base) sur le serveur sur lequel php se connect.

tu pourra ainsi voir ce qu'il a dans le ventre :)


@+
voici ce que me donne le php ci-dessus :
accueil
agenda_config
agenda_events
agenda_membre
agenda_theme
categories
compteur
contenu
data
news
piwigo_caddie
piwigo_categories
piwigo_comments
piwigo_config
piwigo_copyrights_admin
piwigo_copyrights_media
piwigo_favorites
piwigo_group_access
piwigo_groups
piwigo_history
piwigo_history_summary
piwigo_image_category
piwigo_image_tag
piwigo_images
piwigo_languages
piwigo_old_permalinks
piwigo_plugins
piwigo_rate
piwigo_search
piwigo_sessions
piwigo_sites
piwigo_tags
piwigo_themes
piwigo_upgrade
piwigo_user_access
piwigo_user_cache
piwigo_user_cache_categories
piwigo_user_feed
piwigo_user_group
piwigo_user_infos
piwigo_user_mail_notification
piwigo_users
webcfg
xlagenda_agenda
xlagenda_categories
xlagenda_config
xlagenda_demande
xlagenda_logs
xlagenda_users

lanza
Invité n'ayant pas de compte PHPfrance

16 nov. 2011, 20:02

Je viens de trouver !!! En consultant beaucoup de doc et tuto à force j'ai trouvé ^^

C'était la casse de mes tables, exemple :

nom de la table : contenu
écrit dans PHP: CONTENU

Apparemment suivant les version PHP/mySQL ca marche ... ou pas :)

Merci pour votre aide en tout cas, vous êtes géniaux

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 nov. 2011, 09:00

:mrgreen:

La sensibilité à la casse effectivement c'est assez rare comme cas je n'y avait pas pensez :/


@+
Il en faut peu pour être heureux ......