petit soucis d'insert à l'inscrition?

ViPHP
ViPHP | 3607 Messages

05 oct. 2007, 08:34

C'est vrai que ça se tient... :-k
Un simple champ enum('f','m') (et à la limite enum('f','m','unknown')) et c'est à l'affichage qu'on gère les images...
Perdu dans le debuggage, on a oublié de prendre du recul :?

Eléphant du PHP | 78 Messages

05 oct. 2007, 10:24

Salut,

Perso je ne vois pas trop l'interet de faire un test lors de l'insertion dans ta table, ni lors de l'affichage...

Dans ta table tu enregistre le sexe : "h" ou "f".

Les deux images se nomment aspect_h.gif et aspect_f.gif

Lors de l'affichage de tes infos tu utilise une concacenation pour afficher la bonne image tout simplement...

J'aurais évité de sauver l'url de l'image à la place du sexe... Le jour où tu modifie le nom de l'image sur ton site tu devras faire un UPDATE de ta BDD (exemple con mais bon...). Ensuite tu auras peut-être besoin un jour de faire un autre test par rapport au sexe :

Ecrire Monsieur ou Madame par exemple et là faire un test sur deux noms de fichier n'est pas le mieux...

De manière générale je préfère enregistrer les données sans réel traitement préalable (sauf sécurité). Qui sait quelle nouvelle utilisation tu auras de ta BDD dans un an :)
Cordialement,
Kaimite

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

05 oct. 2007, 12:02

Oui, c'est ce qui a été proposé dès le début du thread, avec une réponse de l'utilisateur. :)

ViPHP
ViPHP | 3607 Messages

05 oct. 2007, 12:08

C'est vrai que je n'avais pas vu ce post, mais je continu dans cette voie, il vaut mieux enregistrer un id venant d'une table aspect où tout les aspect serons listés... non?
ça sera beaucoup plus modulable, les images changeable à souhait en un seul update sur la table aspects, et des aspects "ajoutable" à l'infini...
Enfin ce que j'en dit ;)

Invité
Invité n'ayant pas de compte PHPfrance

06 oct. 2007, 19:25

Je sais que cela n'est pas forcément top, mais je suis arrivé à mes fins de cette façon:

$sql = "INSERT INTO membres(id, pseudo, passe, email, sexe, age, avatar, date_inscri) VALUES ('','$login','$passe','$email', '$sexe','$age','$typeava', NOW())";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());

$maj = mysql_query("SELECT sexe FROM membres WHERE pseudo='". $login ."'")or die(mysql_error());
 $data = mysql_fetch_assoc($maj);
 if ($data=='h')
 {
$requete = "UPDATE SET membres aspect= './aspect/h.gif' WHERE pseudo='". $login ."'" or die(mysql_error());
}
else
{
$requete = "UPDATE SET membres aspect= './aspect/f.gif' WHERE pseudo='". $login ."'" or die(mysql_error());
}
include 'bravo.htm';
mysql_close();
?>
Sachant que "aspect/h.gif ou aspect/f.gif" changera obligatoirement au fil du temps et n'étant pas destiné à rester figer.
Pour jojolapine, je suis assez d'accord avec toi, mais dans ma configuration de jeu, cela impliquerait un script dément aux vues des possibilités selon les aspects :? (au moins 12 possibilités minimum)
De cette façon, dès que l'aspect change plus loin et selon l'action du joueur, , il passe en session avec une seule ligne de commande via un update en base.

Invité
Invité n'ayant pas de compte PHPfrance

06 oct. 2007, 19:32

:evil:
J'ai posté trop vite, ca ne marche pas :?

Eléphant du PHP | 443 Messages

06 oct. 2007, 19:39

Si la clé (id) de membres est auto-incrémentée, vire id et sa valeur '' de l'insert.
Et si ce n'est pas le cas mettre id = '', alors qu'il semble être une clé, n'est pas une bonne idée...
a+

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 oct. 2007, 21:27

Erf, pourquoi faire 2 requêtes INSERT différentes ??

Il te suffit de générer la bonne et de l'exécuter ensuite. Toi tu générais une requête, tu l'exécutais,n puis tu faisais le test pour l'avatar, ce qui ne servait à rien du tout. C'est ce que j'avais essayé de te montrer avec les commentaires (1, 2,3 etc)
$sql = "INSERT INTO membres(pseudo, passe, email, sexe, age, avatar, date_inscri) VALUES ('".$login."','".$passe."','".$email."', '".$sexe."','".$age."'";

if ($sexe== 'h') {
	$sql.= ",'./aspect/aspect1.gif'"; // 3.a - suite du SQL
} else {
	$sql.= ",'./aspect/aspect2.gif'"; // 3.b - suite du SQL
}

$sql .= ", NOW())";
echo $sql;
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());

Eléphant du PHP | 78 Messages

06 oct. 2007, 21:40

Bonsoir,

Si je peux me permettre je ne vois toujours pas l'intérêt d'enregistrer le nom de l'image dans la BDD.

Je ne vois pas en quoi ça peut t'aider pour l'affichage des infos du joueur.
Cordialement,
Kaimite