Page 1 sur 1
Erreur table qui existe pas ?
Posté : 10 sept. 2014, 22:11
par samtm123
Bonjour à tous
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

Re: Erreur table qui existe pas ?
Posté : 10 sept. 2014, 22:18
par moogli
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
@+
Re: Erreur table qui existe pas ?
Posté : 10 sept. 2014, 22:26
par samtm123
J'imagine qu'il a raison ^^
Mais sérieusement voici les preuves. ma table est bien là et l’orthographe est exact:

Re: Erreur table qui existe pas ?
Posté : 11 sept. 2014, 11:23
par sirakawa
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.
Re: Erreur table qui existe pas ?
Posté : 13 sept. 2014, 13:38
par samtm123
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é :/
Re: Erreur table qui existe pas ?
Posté : 13 sept. 2014, 14:30
par sirakawa
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
Re: Erreur table qui existe pas ?
Posté : 14 sept. 2014, 18:53
par samtm123
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.
Re: Erreur table qui existe pas ?
Posté : 15 sept. 2014, 09:27
par sirakawa
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"]);
}
?>
Re: Erreur table qui existe pas ?
Posté : 18 sept. 2014, 16:31
par moogli
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"
@+
Re: Erreur table qui existe pas ?
Posté : 24 sept. 2014, 18:33
par samtm123
Premièrement, merci à vous deux
Est-ce que cela est possible que ça cause problème car ma table fstream est en fait automatiquement mit en sous table ?
Re: Erreur table qui existe pas ?
Posté : 24 sept. 2014, 23:24
par moogli
"sous table" ?
une table c'est une table, tu n'as pas réellement cette table c'est le problème
sinon de rien
@+
Re: Erreur table qui existe pas ?
Posté : 25 sept. 2014, 08:41
par sirakawa
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