Agrandir, reduire, fermer...

ViPHP
ViPHP | 5924 Messages

09 juil. 2007, 20:05

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
Normalement, tu peux remplacer ceci :
$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()); 
}
par cela :
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, 20:07

Et met une clé primaire sur id et name.

dofus
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 20:23

Merci ce genre de réponsse est trés compléte

Mais je n'est pas bizen compris cette phrase :
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.
Et voici le résultat...
<?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)) 
{
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)) 
{
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)) 
{
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')

?>
Mais il y a toutjours le Ressources id #3, surment ce que explique la dernière phrase...

Même si je n'est pas trés bien compris la solution... Je me demande comment fait-on pour que avec une requete + un petit code on prenne la valeur d'un champ

exemple dans la bdd => id = Jeanluc

$idname = jean luc

On part du texte en orange pour arriver au texte en vert...

Comment faire, je sais que c'est la solution à mon probléme, une fois trouvé je fait une comparaison ...

DOFUS
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 22:55

Svp... Comment fait-on pour que avec une requete plus un petit code on puissent prendre la valeur d'un champ ??

ViPHP
ViPHP | 5924 Messages

10 juil. 2007, 17:03

Déjà, utilise la requète que je t'ai mis plus haut, tu fais largement trop de requètes pour si peu d'opérations.

dofus
Invité n'ayant pas de compte PHPfrance

10 juil. 2007, 20:53

trés bien cela me 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";

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

mysql_query("REPLACE INTO fenetre(name,etat,id) VALUES ('$now','$eow','$id')") or die('Erreur : ERREUR ' . mysql_error()); 
//========>>

mysql_close();

echo"$name_one";

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

?>

ViPHP
ViPHP | 5924 Messages

10 juil. 2007, 22:40

Et ca donne ce que tu voulais ?
Dans le cas contraire, dans quelle mesure est ce différent ?

dofus
Invité n'ayant pas de compte PHPfrance

10 juil. 2007, 22:51

C'est bien beau tout ça mais sa va à l'encontre de ce que je veut faire...

Je veut que le code véréfie si l'utilisateur (id) jeanluc est ou pas déjà créer un enregistrement !!

dofus
Invité n'ayant pas de compte PHPfrance

10 juil. 2007, 22:52

Or à chaque clique sur le signe réduire de la page présédente le code recréer un nouvel enregistrement !!

ViPHP
ViPHP | 5924 Messages

11 juil. 2007, 00:53

S'il a déjà créé un enregistrement, tu mets un champ à jour, quelle est la nature de cette mise à jour ?
Et là je t'ai juste donné la requète qui met les données à jour, pour sélectionner les données, il te faut un SELECT.

dofus
Invité n'ayant pas de compte PHPfrance

11 juil. 2007, 15:52

Me revoilà...

Je vie d'essay un autre code asser courts qui ne fonctionne pas non plus,il n'affiche pas d'erreur non plus...
<?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";

$test = mysql_query("SELECT id FROM fenetre WHERE name = '$now' AND id = '$id'") or die ('Erreur de selection ERREUR 300 '.mysql_error());

if($test == "")
{
mysql_query("INSERT INTO fenetre (name,etat,id) VALUES ('$now','$eow','$id')") or die (mysql_error()) or die ('Erreur de selection ERREUR 400 '.mysql_error()); 
}
else
{
mysql_query("UPDATE fenetre SET id = '$id' AND name = '$now' AND etat = '$eow' WHERE name = '$now' AND id = '$id'") or die ('Erreur de selection ERREUR 500 '.mysql_error());
}

mysql_close();

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

?>

ViPHP
ViPHP | 5924 Messages

11 juil. 2007, 16:21

Je t'assures que ce que tu veux faire ici dans ce code est absolument équivalent à ma requète (avec une clé primaire bien définie).
Ensuite, tu fais de très grosses erreurs.
$test = mysql_query("SELECT id FROM fenetre WHERE name = '$now' AND id = '$id'") or die ('Erreur de selection ERREUR 300 '.mysql_error());

if($test == "")
{ 
Comme je t'ai déjà dit, mysql_query() retourne un identifiant de resource pour les requètes SELECT, ca n'a absolument aucun sens de comparer cette valeur de retour à une chaine vide "". Cet identifiant, il sert juste pour les autres fonctions de la bibliothèque mysql ( mysql_fetch_array(), mysql_free_result() ).
Pour savoir si on a eu un résultat, on utilise mysql_fetch_array() qui retourne un tableau s'il reste un enregistrement à retourner, et false sinon.
mysql_query("UPDATE fenetre SET id = '$id' AND name = '$now' AND etat = '$eow' WHERE name = '$now' AND id = '$id'")
C'est trois quarts de la requète sont inutiles tu cherches les enregistrments qui ont l'id $id et le nom $now, et tu fixes id à $id et nom à $now, donc tu ne changes absolument rien ici. Le seul truc qui est utile dans la clause SET, c'est de fixer etat à $eow.
Enfin, normalement tu devrais avoir eu une erreur, parce que dans les clauses SET, on utilise des virgules et non des AND.


Bref, j'essaye de t'aider, je te donne des solutions, mais si tu refuses mon aide, tu peux le dire tout de suite, j'ai plein d'autres trucs intéressants à faire. Bref, pour régler ton problème avec mon code parce que tu n'a pas été précis, si tu ne veux pas que mon code te crée un nouvel enregistrement à chaque fois, il faut que tu crées une clé primaire sur id et nom (je pense que phpmyadmin sait faire ca, si tu n'y arrives pas, reviens me voir, j'irais chercher la requiète.

dofus
Invité n'ayant pas de compte PHPfrance

11 juil. 2007, 16:37

Merci bien j'essai s'incérement de suivre, de prendre de la graine...
Bon d'aprés ta réponse trés bien formulé...J'ai repris mon code...

Mais je ne suis pas sur que la façon don j'ai utilisé mysql_fetch_array ne fonctionne...

Fallait-il un while ?
<?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";

$test = mysql_query("SELECT id FROM fenetre WHERE name = '$now' AND id = '$id'") or die ('Erreur de selection ERREUR 300 '.mysql_error());
while($testb = mysql_fetch_array($test)) 
{ 
$testa = $testb[0]; 
}

if($testa == "")
{
mysql_query("INSERT INTO fenetre (name,etat,id) VALUES ('$now','$eow','$id')") or die ('Erreur de selection ERREUR 300 '.mysql_error());
}
else
{
mysql_query("UPDATE fenetre SET etat = '$eow' WHERE name = '$now' AND id = '$id'") or die ('Erreur de selection ERREUR 500 '.mysql_error());
}

mysql_close();

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

?>
Merci...

ViPHP
ViPHP | 5924 Messages

11 juil. 2007, 16:56

Mais je ne suis pas sur que la façon don j'ai utilisé mysql_fetch_array ne fonctionne...

Fallait-il un while ?
D'habitude, il faut utiliser une boucle puisqu'il y a souvent plusieurs ligne à récupérer, mais ici c'est inutile, tu veux juste savoir s'il y a un enregistrement, donc ca suffit :
if(mysql_fetch_array($test))
{
mysql_query(...)
}
else
{
mysql_query(...)
}

dofus
Invité n'ayant pas de compte PHPfrance

11 juil. 2007, 17:12

Merci...

Il manquait juste le point d'exclamation devan t mais sinon sa marche trés bien j'ai fait tout les teste dessus (tout les cas) il fonctionne trés bien ce code !!
<?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 = "b3";
$id = "dofus";

$test = mysql_query("SELECT id FROM fenetre WHERE name = '$now' AND id = '$id'") or die ('Erreur de selection ERREUR 300 '.mysql_error());

if(!mysql_fetch_array($test))
{
mysql_query("INSERT INTO fenetre (name,etat,id) VALUES ('$now','$eow','$id')") or die ('Erreur de selection ERREUR 300 '.mysql_error());
}
else
{
mysql_query("UPDATE fenetre SET etat = '$eow' WHERE name = '$now' AND id = '$id'") or die ('Erreur de selection ERREUR 500 '.mysql_error());
}

mysql_close();

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

?>