petit soucis d'insert à l'inscrition?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : petit soucis d'insert à l'inscrition?

par Kaimite » 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.

par ouckileou » 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());

par Tracker » 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+

par Invité » 06 oct. 2007, 19:32

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

par Invité » 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.

par jojolapine » 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 ;)

par ouckileou » 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. :)

par Kaimite » 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 :)

par jojolapine » 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 :?

par Tracker » 05 oct. 2007, 08:31

Si les deux fichiers sont sur le serveur, et que leur utilisation ne dépend que du sexe du membre, c'est un problème de rendu (HTML).
Ca ne sert à quedal de stocker l'url (toujours les mêmes) dans la base...

par ouckileou » 05 oct. 2007, 01:17

$sql = "INSERT INTO membres(id, pseudo, passe, email, sexe, age, avatar, date_inscri) VALUES ('','$login','$passe','$email', '$sexe','$age','$typeava', NOW())"; // 1- début du SQL
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error()); // 2 - exécution du SQL
if ($sexe== 'h') {
   $sql.= "./aspect/aspect1.gif"; // 3.a - suite du SQL
} else {
$sql.= "./aspect/aspect2.gif"; // 3.b - suite du SQL
}
$sql .= "')";  // 4- fin du SQL
Rien ne te choque dans mes commentaires ?

Pour la suite, regarde le lien "Débuguer du SQL via PHP" dans ma signature, il y a des trucs de base pour résoudre les problèmes :)

par Invité » 05 oct. 2007, 00:01

f ($sexe== 'h') {
   $sql.= "./aspect/aspect1.gif";
} else {
$sql.= "./aspect/aspect2.gif";
}
$sql .= "')";  
cette partie du script ne remplit pas son role, le champ "aspect" en base demeure vierge :?

par iclo » 04 oct. 2007, 23:33

Donc où est le problème ? :wink:

par Invité » 04 oct. 2007, 21:22

les fichiers "aspect1.gif et aspect2.gif" sont déjà sur le serveur...

par Invité » 04 oct. 2007, 21:21

ben alors, comment je peux faire? :cry: