Agrandir, reduire, fermer...

dofus
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 03:28

Le message est : Erreur : La table 'db202917875.id' n'existe pas mais la base db202917875 esiste vraiment le .id aprés db202917875 sert à koi ?

dofus
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 14:45

Pouquoi ce message apparait ?

dofus
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 18:29

Je me suis relu, et véifier les requetes... cela donne
<?php

$db = mysql_connect('', 'root', '')  or die ('Erreur de connexion ERREUR 100 '.mysql_error());
mysql_select_db('db202917875',$db)  or die('Erreur de selection ERREUR 200 '.mysql_error());

$now = "0001";
$eow = "b2";
$id = "dofus";

//========>>DEBUT 01

$name_one = mysql_query("SELECT name FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 300 ' . mysql_error());
while($name_two = mysql_fetch_array($name_one))
{
var_dump($name_two);
$y1 = $name_two[0];
}

if($y1 == "")
{
mysql_query("INSERT INTO fenetre(name) VALUES ('$now')or die('Erreur : ERREUR 400 ' . mysql_error()");

//========>>DEBUT 02

$etat_one = mysql_query("SELECT etat FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 500 ' . mysql_error());
while($etat_two = mysql_fetch_array($etat_one))
{
var_dump($etat_two);
$y2 = $etat_two[0];
}

if($y2 == "")
{
mysql_query("UPDATE fenetre SET etat = '$eow' WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 600 ' . mysql_error());

//========>>DEBUT 03

$id_one = mysql_query("SELECT id FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 700 ' . mysql_error());
while($id_two = mysql_fetch_array($id_one))
{
var_dump($id_two);
$y3 = $id_two[0];
}

if($y3 == "")
{
mysql_query("UPDATE fenetre SET id = '$id' WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 800' . mysql_error());

}

//========>>FIN 03
}

//========>>FIN 02
}

//========>>FIN 01

mysql_close();

header('location:../index.php')

?>
En effet c'étair un vrai champ de mine...

ViPHP
ViPHP | 5924 Messages

09 juil. 2007, 18:33

Au passage, remplace ceci :
while($name_two = mysql_fetch_array($name_one)) 
{ 
var_dump($name_two); 
$y1 = $name_two[0]; 
} 

if($y1 == "") 
{
par cela :
if(mysql_fetch_array($name_one))
{
(idem pour les autres requètes).

dofus
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 18:48

Merci.... cela donne...

Mais je doit ajouter = "" ??
<?php

$db = mysql_connect('', 'root', '')  or die ('Erreur de connexion ERREUR 100 '.mysql_error());
mysql_select_db('db202917875',$db)  or die('Erreur de selection ERREUR 200 '.mysql_error());

$now = "0001";
$eow = "b2";
$id = "dofus";

//========>>DEBUT 01

$name_one = mysql_query("SELECT name FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 300 ' . mysql_error());
if(mysql_fetch_array($name_one)) 
{

mysql_query("INSERT INTO fenetre(name) VALUES ('$now')or die('Erreur : ERREUR 400 ' . mysql_error()");

//========>>DEBUT 02

$etat_one = mysql_query("SELECT etat FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 500 ' . mysql_error());
if(mysql_fetch_array($etat_one)) 
{
mysql_query("UPDATE fenetre SET etat = '$eow' WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 600 ' . mysql_error());

//========>>DEBUT 03

$id_one = mysql_query("SELECT id FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 700 ' . mysql_error());
if(mysql_fetch_array($id_one)) 
{

mysql_query("UPDATE fenetre SET id = '$id' WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 800' . mysql_error());

}

//========>>FIN 03
}

//========>>FIN 02
}

//========>>FIN 01

mysql_close();

header('location:../index.php')

?>

ViPHP
ViPHP | 5924 Messages

09 juil. 2007, 18:54

En fait, je viens de me rendre compte de quelquechose, il n'est jamais trop tard, tu fais beaucoup trop de requètes inutiles. Tu pourrais n'en faire que 2, une select, une insert.
Pour préciser cela, j'aimerais une information, quand est ce que tu dois effectuer un INSERT très précisément ?

dofus
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 19:16

Voici mon tout dernier code...

Lorsque que je fait un echo de $name_one, et que je supprime la redirection final j'obtient...

Resource id #3
<?php

$db = mysql_connect('', 'root', '')  or die ('Erreur de connexion ERREUR 100 '.mysql_error());
mysql_select_db('db202917875',$db)  or die('Erreur de selection ERREUR 200 '.mysql_error());

$now = "0001";
$eow = "b2";
$id = "dofus";

//========>>

$name_one = mysql_query("SELECT name FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 300 ' . mysql_error());
if(mysql_fetch_array($name_one) != "0001") 
{
mysql_query("INSERT INTO fenetre(name,etat,id) VALUES ('$now','$eow','$id')")or die('Erreur : ERREUR 400 ' . mysql_error());
}

//========>>

$etat_one = mysql_query("SELECT etat FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 500 ' . mysql_error());
if(mysql_fetch_array($etat_one) != "$eow") 
{
mysql_query("UPDATE fenetre SET etat = '$eow' WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 600 ' . mysql_error());
}

//========>>

$id_one = mysql_query("SELECT id FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 700 ' . mysql_error());
if(mysql_fetch_array($id_one) != "$id") 
{
mysql_query("UPDATE fenetre SET id = '$id' WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 800' . mysql_error());
}

//========>>

mysql_close();

echo"$name_one";

//header('location:../index.php')

?>
Ma question est pourquoi ?

Merci

dofus
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 19:20

Si j'ai fait ce test c'est tout simplement parceque j'ai l'impression que $name_one sort toujours comme null ou "" vide, sans se fier au contenu de la base de donnée...

ViPHP
ViPHP | 5924 Messages

09 juil. 2007, 19:23

En fait, je viens de me rendre compte de quelquechose, il n'est jamais trop tard, tu fais beaucoup trop de requètes inutiles. Tu pourrais n'en faire que 2, une select, une insert.
Pour préciser cela, j'aimerais une information, quand est ce que tu dois effectuer un INSERT très précisément ?

dofus
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 19:48

Je n'est pas trés bien compris ta question mais je vais essayer d'y répondre avec l'idée du projet...

Je veu créer un system de fenetre...

Si un visiteur arrive pour la première fois il orgagnises ces fenetre, donc par exemple la fenetre 0001 il la réduit... cela donne dans la base de donnée :

Code : Tout sélectionner

<--------------------------------------> [........id........][...etat...][...name...] <--------------------------------------> [....jeanluc....][...b1.....][...0001....] <-------------------------------------->
b1 veut dire reduit

Jeanluc à réduit la fenetre n° 0001

Mais si jeanluc revien dison 3 jours plus tard...

La fenetre 0001 est déjà configurer comme b1, et n'a donc pas besoin de la reconfigurer...

C'est ici que se pose le probléme...

Si la fenetre 0001 à déja été configurer alors on modifie UPDATE seulement au lieu de recréer un enregistrement...

Le code et bon mais le probléme c'est que l'ors du SELECT la requete ne va pas chercher la valeur du champ demander et donc il n'y à aucune vérification du passage de Jeanluc...

voilà, des questions ?

Merci

dofus
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 19:51

La clé de cette réponsse est dans cette question :

Qu'est-ce que Resource id #3 ... Merci

Je suis en train de faire des recherches sur le web mais sans résultats pour l'instant...

ViPHP
ViPHP | 5924 Messages

09 juil. 2007, 19:53

Allez, tu peux faire ca en une requète :
mysql_query("REPLACE INTO fenetre(name,etat,id) VALUES ('$now','$eow','$id')") or die('Erreur : ERREUR ' . mysql_error());

ViPHP
ViPHP | 5924 Messages

09 juil. 2007, 19:55

La clé de cette réponsse est dans cette question :

Qu'est-ce que Resource id #3 ... Merci

Je suis en train de faire des recherches sur le web mais sans résultats pour l'instant...
C'est simplement parce que mysql_query() retourne une ressource de résultat. Voir la référence : http://www.php.net/manual/fr/function.mysql-query.php

Mais utilise plutôt la solution que je viens de poster, ce sera moins ... lourd.

Invité
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 20:02

mysql_query("REPLACE INTO fenetre(name,etat,id) VALUES ('$now','$eow','$id')") or die('Erreur : ERREUR ' . mysql_error());
Mais je remplace quoi par ça ^ ^ ^ ^ ^ ^

Car il y a plusieur requete qui on toutees leur utilités...

merci

ViPHP
ViPHP | 5924 Messages

09 juil. 2007, 20:03

Voici mon tout dernier code...

Lorsque que je fait un echo de $name_one, et que je supprime la redirection final j'obtient...

Resource id #3
<?php

$db = mysql_connect('', 'root', '')  or die ('Erreur de connexion ERREUR 100 '.mysql_error());
mysql_select_db('db202917875',$db)  or die('Erreur de selection ERREUR 200 '.mysql_error());

$now = "0001";
$eow = "b2";
$id = "dofus";

//========>>

$name_one = mysql_query("SELECT name FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 300 ' . mysql_error());
if(mysql_fetch_array($name_one) != "0001") 
{
mysql_query("INSERT INTO fenetre(name,etat,id) VALUES ('$now','$eow','$id')")or die('Erreur : ERREUR 400 ' . mysql_error());
}

//========>>

$etat_one = mysql_query("SELECT etat FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 500 ' . mysql_error());
if(mysql_fetch_array($etat_one) != "$eow") 
{
mysql_query("UPDATE fenetre SET etat = '$eow' WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 600 ' . mysql_error());
}

//========>>

$id_one = mysql_query("SELECT id FROM fenetre WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 700 ' . mysql_error());
if(mysql_fetch_array($id_one) != "$id") 
{
mysql_query("UPDATE fenetre SET id = '$id' WHERE name = '$now' AND id = '$id'")or die('Erreur : ERREUR 800' . mysql_error());
}

//========>>

mysql_close();

echo"$name_one";

//header('location:../index.php')

?>
Ma question est pourquoi ?

Merci
Je vais expliquer toutes les erreurs de ton code, certaines dues à mes erreurs aussi :
if(mysql_fetch_array($name_one) != "0001") 
Ici, tu compares le résultat de mysql_fetch_array() à une chaine de caractères, or, selon la référence, mysql_fetch_array() renvoie un tableau. Pour ma part, j'avais mis :
if(mysql_fetch_array($name_one)) 
C'était une erreur du fait que tu ne cherchais pas à vérifier que le mysql_query renvoyait quelquechose, mais s'il ne renvoyait rien, alors que là la condition était vraie si la requète trouvait un résultat. Il aurait fallu écrire ceci :
if(!mysql_fetch_array($name_one)) 
(Notons l'utilisation du '!' )
echo"$name_one";
Tu essayes d'afficher la valeur de retour d'un appel à mysql_query(), qui renvoie un identifiant de ressource pour les requètes sql, soit une variable totalement abstraite et inutilisable telle quelle.