Erreur table qui existe pas ?

Eléphanteau du PHP | 37 Messages

10 sept. 2014, 22:11

Bonjour à tous :D

J'ai cette erreur Table 'futur526387.fstream' doesn't exist.. Pourtant, je peux vous jurer après mille vérifications que la table existe.

Voici mon code php:
<?php
$base = mysql_connect ('host', 'user', 'passwd');
mysql_select_db ('la base', $base) ;

// Numero de page (1 par défaut)
if( isset($_GET['page']) && is_numeric($_GET['page']) )
	$page = $_GET['page'];
else
	$page = 1;

// Nombre d'info par page
$pagination = 16;
// Numéro du 1er enregistrement à lire
$limit_start = ($page - 1) * $pagination;

// Préparation de la requête
$sql = "SELECT titre, description, year, pays, acteurs, iframe, image, genre FROM fstream ORDER BY titre ASC";
$req = mysql_query($sql) or die(mysql_error());
$nb_total = mysql_num_rows($req); // Je calcule le total

$sql .= " LIMIT ".$limit_start.", ".$pagination;
$req = mysql_query($sql) or die(mysql_error());

while($data = mysql_fetch_assoc($req)) {
$sujet = substr($data['titre'], 0, 20);

echo "<div class='vupost'><h3><span class='titreposition'>".$sujet."</span></h3><br /><a href='".$data['iframe']."' class='lytebox' data-lyte-options='width:700 height:700 scrolling:no' ><img src='".$data['image']."' /></a></div>";
}

// Nb d'enregistrement total
$nb_total = mysql_query('SELECT COUNT(*) AS nb_total FROM fstream');
$nb_total = mysql_fetch_array($nb_total);
$nb_total = $nb_total['nb_total'];
mysql_close();
// Pagination
$nb_pages = ceil($nb_total / $pagination);

echo '<p>';
// Boucle sur les pages
for ($i = 1 ; $i <= $nb_pages ; $i++) {
	if ($i == $page )
		echo " <a class='lpagination' href='#'>$i</a>";
	else
		echo " <a class='lpagination' href=\"?page=$i\">$i</a> ";
}
echo ' </p>';

?>

Merci d'avance :)
Modifié en dernier par moogli le 10 sept. 2014, 22:13, modifié 1 fois.
Raison : suppression accès sgbd

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

10 sept. 2014, 22:18

salut,

si mysql te le dit c'est qu'il a raison.

Es-tu certain que la base où ce trouve la table ?

est ce qu'il n'y aurait pas un erreur dans la nom ?

quoi qu'il en soit le sgbd a forcément raison ;)


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

Eléphanteau du PHP | 37 Messages

10 sept. 2014, 22:26

J'imagine qu'il a raison ^^

Mais sérieusement voici les preuves. ma table est bien là et l’orthographe est exact:
Image

Mammouth du PHP | 2278 Messages

11 sept. 2014, 11:23

Deux remarques:
Il faut abandonner mysql pour mysqli (effort minime) car mysql est obsolète (doc oficielle)
Quand il ne trouve pas une table dans une requete, on peut toujours écrire:
select from BASE.TABLE au lieu de select from TABLE
même si comme tu fais justement la BASE a été sélectionnée.
Ne me demande pas pourquoi, c'est mes propres ennuis qui m'on amené à cette pratique.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 37 Messages

13 sept. 2014, 13:38

Bon alors merci de m'avoir aider :)

Le problème est que j'ai remplacé tout mes mysql par mysqli ai-je bien fait ?... Je pense pas puisque ça n'a pas fonctionné :/

Mammouth du PHP | 2278 Messages

13 sept. 2014, 14:30

Non, quand tu passes à mysqli, il ya des chagements à apporter, pas beaucoup mais indispensables
ici exemples avec syntaxe objet:
http://php.net/manual/fr/mysqli.quickst ... ements.php
syntaxe procédurale:

f
unction connexion ($hote="", $nom="", $passe="")
{
	include('connexions.php'); // j'inclus un fichier qui be regarde personne icI
	global $ProblemeSql ; // idem (messages d'erreur
	$mysqli = mysqli_init();
	if ($mysqli === false)//_______________________________________________________________________initialisation échouée
	{//1
		print "$ProblemeSql";
		$chaine = "échec de mysqli_init dans ".__FILE__." ligne ".__LINE__;
		enregistrer_erreur($chaine); // fonction écrivant dans un ficheir les problèmes apparus
		exit;
	}
	else//_________________________________________________________________________________________initialisation réussie
	{//1
		$resultat = $mysqli->real_connect($ServeurMysql, $RootMysql, $PassRootMysql);
		if ($resultat == false)//________________________________________________________connexion échouée
		{//2
			print "$ProblemeSql";
			$chaine = "échec de mysqli_init dans ".__FILE__." ligne ".__LINE__;
			enregistrer_erreur($chaine);
			exit;
		}
		else
		{
			return $mysqli;
		}
	}
}
après tu fais
$requete ="select t1.* from $t_t as t1 where t1.possesseur = $id_utilisateur order by t1.possesseur";
$resultat = $mysqli->query($requete);
ou tu vas voir;:http://php.net/manual/fr/mysqli.query.php
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 37 Messages

14 sept. 2014, 18:53

Bon alors, j'ai essayé de pleins de manière différente, mais rien ne fonctionne.. J'ai pas nécessairement envie qu'on le fasse pour moi, mais j'aimerais bien comprendre.

Mammouth du PHP | 2278 Messages

15 sept. 2014, 09:27

Autre version peut être plus simple et plus facile à adapter
<?PHP

/*
Une fonction connexion pour éviter de répéter le même code toutes les fois où il faut créer une connexion
retourne un tableau : une valeur -1 | 0 : échec ou réussite de la connexion
					un texte expliquant l'erreur | le lien à utiliser
*/
function connexion ($hote_mysql, $nom_root_mysql, $passe_root_mysql="")
{

 	$mysqli = mysqli_init(); 
    $chaine_erreur = "";
	$erreur  = false;
     if ($mysqli === false)//_______________________________________________________________________initialisation échouée
     {//1
                 $chaine_erreur = "probleme Sql";
                 $erreur = true;
      }
      else//_________________________________________________________________________________________initialisation réussie
      {//1
           $resultat = mysqli_real_connect($mysqli, $hote_mysql, $nom_root_mysql, $passe_root_mysql);
           if ($resultat == false)//________________________________________________________connexion échouée
            {//2
                 $chaine_erreur = "échec de mysqli_init dans ".__FILE__." ligne ".__LINE__;
                 $erreur = true;       
             }
       }
	if ($erreur)
	{
		return array (-1, $chaine_erreur);
	}
	else
	{
		return array (0, $mysqli);
	}
}
$connexion = connexion ("localhost", "root", "");
$erreur = $connexion[0];
if ($erreur == -1)
{
	echo($connexion[1]);
    exit;
}
else
{
	$lien = $connexion[1];
}
$table = "corregidor.kalig_textes";
$requete = "SELECT * from $table ";
$resultat = mysqli_query($lien, $requete);
while ($ligne = mysqli_fetch_array($resultat, MYSQLI_ASSOC))
{
printf ("%s (%s)\n", $ligne["id_dictee"], $ligne["titre"]);
}
  ?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

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

18 sept. 2014, 16:31

pour aller plus loin :
- au niveau php le code semble fonctionnel
- au niveau sql le code semble fonctionnel

donc soit tu ne connecte pas à la bonne base.
soit c'est la bonne base et la table n'existe pas.
soit la table est sur un autre schéma que le schéma courant futur526387 (qui doit être dans mon mysql_selected_db ?) et dans ce cas il faut que ton utilisateur ai accès à ce schéma et indiquer le schéma dans la requete (select * from schema.table ).

il n'y pas d'autre explication (quelque soit l'extension utilisée).

le passage à mysqli n'est pas un mal :)

si tu peux nous founir un dumb (juste create table) de la base on peux tester mais globalement la réponse sera "chez moi ça marche" ;)


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

Eléphanteau du PHP | 37 Messages

24 sept. 2014, 18:33

Premièrement, merci à vous deux :D

Est-ce que cela est possible que ça cause problème car ma table fstream est en fait automatiquement mit en sous table ?

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

24 sept. 2014, 23:24

"sous table" ?

une table c'est une table, tu n'as pas réellement cette table c'est le problème :)

sinon de rien :)

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

Mammouth du PHP | 2278 Messages

25 sept. 2014, 08:41

Si tu pouvais te dervir de mysql en ligne je dirais de faire s
si tu n'as pas de mot de passe pour root:
mysql -u root
si root a un mot de passe
mysql -u root -pmot_de_passe
-p collé au mot de passe
use la_base dedonées_que tu veux;
show tables;
et de montrer le résultat
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD