requête condensée ou multi-requête?

Mammouth du PHP | 702 Messages

30 mars 2012, 07:44

Bonjour, pour des raisons pratiques, je me demandais s'il n'était pas plus simple parfois de faire une requête pour chaque donnée qui doit être insérée dans la BDD, qu'est-ce que cela représente en termes de capacité du server etc. car si je fais un if isset pour chaque champ de ma requête si un seul n'est pas défini, la requête ne sera pas exécutée, donc je me demandais s'il n'était pas judicieux de faire une requête pour chaque donnée (à savoir cela me ferait une 50aine de requêtes), mais est-ce en terme de capacité dur a supporter pour le server? d'avance merci, car je souhaites tout insérer et si les variables ne sont pas définies alors on ne les prends pas en compte, mais si je ne mets pas le isset, alors il renvoi un message d'erreur de type undefined var, etc... et je veux que si elles ne sont pas définies tout simplement elles ne soit pas insérées, ... mais du coup si je le fais dans une requête condensée, toute la requête ne vas pas s'exécuter...

ViPHP
xTG
ViPHP | 7331 Messages

30 mars 2012, 10:09

Tu parles dans quel cas de requête ?
Un UPDATE ? Un INSERT ?

Dans tous les cas cela dépend de la dépendance des données ton problème avant de se poser la question de la charge serveur...
Tu soulèves toi même le point. Si tu requêtes une donnée mais que la seconde est manquante il n'y a eu qu'une requête.
La première veut-elle toujours dire quelque chose malgré le manque de la seconde ?

Par contre ce qui me fait peur c'est quand tu parles de ne pas faire de test d'existence des variables...
ON VERIFIE TOUJOURS LEUR EXISTENCE AVANT DE LES UTILISER ! :evil:

Je te met au défi de ne pas tester l'existence de la plaque d’égout avant de poser ton pied dessus...

Mammouth du PHP | 702 Messages

30 mars 2012, 10:29

non je me suis mal exprimmé, en fait j'ai des variables qui seront vides par défautt, par exemple j'ai un champs de type select et si l'option autre est selectionnée, alors un input en javascript apparait, mais comme je ne peut pas nommer les deux chamlps pareils j'ai du mettre des noms differents (champs1 et champs2)...

ViPHP
xTG
ViPHP | 7331 Messages

30 mars 2012, 10:31

Et donc où veux-tu en venir ? :|
Car je vois pas du tout d'où peut venir ton undefined index/variable du coup si tu testes bien l'existence des variables avant de les utiliser.

Mammouth du PHP | 702 Messages

30 mars 2012, 10:33

le soucis c'est que si jamais une variable n'existe pas alors ella requ^ête ne sera pas exécutée.

ViPHP
xTG
ViPHP | 7331 Messages

30 mars 2012, 12:22

Cela paraît on ne peut plus logique... Si une variable est obligatoire on ne va pas effectuer un traitement si on ne la possède pas.
Bref, expliques un peu mieux ce que tu veux, car là je ne vois qu'une évidence que tu ne sembles pas comprendre. :)

Mammouth du PHP | 702 Messages

30 mars 2012, 13:03

en fait j'ai ce formulaire ci progeris.comyr.com/create-client.php le soucis est que certains champs n'ont pas vocations à être remplis (car un javascript peut gé,érer d'autres champs selon ce que l'utilisateur va choisir, selon cela il faut que je fasse ma requête pour insérer les données.

ViPHP
xTG
ViPHP | 7331 Messages

30 mars 2012, 13:16

Une requête c'est une simple chaîne de caractères.
Donc elle peut être construite dynamiquement. ;)

Donc soit tu formes ta requête en fonction des variables que tu reçois.
Soit tu renseignes les variables qui n'existent pas avec une valeur par défaut.

Mammouth du PHP | 702 Messages

30 mars 2012, 13:40

mais dans le cadre des input de type radio, cela fonctionne comment?

Mammouth du PHP | 702 Messages

30 mars 2012, 14:13

enfin je veux dire si les boutons ne sont pas cochés? j'ai un message d'erreur?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 mars 2012, 14:36

Les radios portent le même nom pour une même "option" donc le problème ne se pose pas (c'est d'ailleurs comme ça que l'on sais que l'on peux pas sélectionner plusieurs radio pour une option.

Pour le reste tu n'a pas le choix tu test le champ par défaut et s'il n'a pas la valeur attendu tu test le second champ (voir s'il est pas vide.

Tu peux très bien imaginer une fonction qui prend en paramètre $_POST et un nom. Tu normalise les noms de champs. Par exemple truc et truc_autre. Le deuxiemme argument de la fonction aura pour valeur truc et validera la chose pour te retourner la bonne valeur.
Comme ça dans ta requête lafonction($_POST,'truc').

Tu peux aussi imaginer une classe de validation, tu passe post au constructeur et une méthode validation auquel tu passe le nom du 1er champ et en second le nom du champ autre, tu te passe ainsi de la normalisation des champs.

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 702 Messages

30 mars 2012, 17:12

admettons que je rajoute partout value="" si l'utilisateur rempli le input type text, lors de la requête il va prendre en compte le value ou ce que l'user rentre?

ViPHP
xTG
ViPHP | 7331 Messages

30 mars 2012, 23:01

Ce que l'utilisateur rentre, encore heureux. :roll:

Mammouth du PHP | 702 Messages

31 mars 2012, 09:30

par précaution je demandais ^^ merci :)