Optimisation d'un srcipt php
Résolu/Fermé
nicelife90
Messages postés
615
Date d'inscription
vendredi 24 septembre 2010
Statut
Membre
Dernière intervention
10 avril 2018
-
31 août 2011 à 03:26
nicelife90 Messages postés 615 Date d'inscription vendredi 24 septembre 2010 Statut Membre Dernière intervention 10 avril 2018 - 31 août 2011 à 22:13
nicelife90 Messages postés 615 Date d'inscription vendredi 24 septembre 2010 Statut Membre Dernière intervention 10 avril 2018 - 31 août 2011 à 22:13
A voir également:
- Optimisation d'un srcipt php
- Optimisation pc - Accueil - Utilitaires
- Easy php - Télécharger - Divers Web & Internet
- Optimisation découpe panneau gratuit - Télécharger - Outils professionnels
- Optimisation windows 10 - Guide
- Glary Utilities : l'outil référence pour entretenir un PC - Télécharger - Nettoyage
4 réponses
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
31 août 2011 à 17:43
31 août 2011 à 17:43
Pourquoi ne pas simplement créer dynamique la requête d'update vis à vis de ce que tu reçois en POST ?
Exemple :
Exemple :
$sChamps = ''; if ($webmailmain = ''){ if($sChamps != ''){ $sChamps .= ','; } $sChamps .= 'nom_du_champ = Valeur_a_setter'; } if ($webmailmain2 = ''){ if($sChamps != ''){ $sChamps .= ','; } $sChamps .= 'nom_du_champ_2 = Valeur_a_setter_2'; } if($sChamps != ''){ $insertion = "UPDATE membres SET $sChamps WHERE membre_id='$uid' "; }else{ //aucun champs a update. }
nicelife90
Messages postés
615
Date d'inscription
vendredi 24 septembre 2010
Statut
Membre
Dernière intervention
10 avril 2018
151
31 août 2011 à 21:36
31 août 2011 à 21:36
Bonjour Zep3k!GnO,
J'ai trouver une autre solution pour valider mes champs.
Étant donné que je n'est jamais besoin de supprimer des info de la base de donné j'ai ceci.
// Initialisation des champs de la base à vérifier en POST
$champsExistants = array();
$champsExistants[] = "marque";
$champsExistants[] = "annee";
$champsExistants[] = "modele";
//....
// Fonction vérifiant si un champ doit être ajouter à la clause SET de la fonction, et
// si oui, donnant la partie correspondante de la clause SET.
function ajouteClause($champ)
{
global $champsExistants;
$resultat = "";
if (array_search($champ, $champsExistants) !== FALSE
&& $_POST[$champ] != '')
$resultat = " $champ='".mysql_real_escape_string($_POST[$champ])."' ";
return $resultat;
}
$sqlSET = "";
foreach($_POST as $champ => $valeur)
{
$sqlSET .= ajouteClause($champ);
}
$insertion = "UPDATE voiture SET $sqlSET WHERE id='1'";
mysql_query($insertion);
en fais je la trouve super bien cette fonction puisqu'elle allège mon code de beaucoup mais elle ne mais pas les virgules. je vais donc tester ta solution aussi mais elle n'allège pas de beaucoup le code.
Merci de ta solution je te reviens bientôt.
J'ai trouver une autre solution pour valider mes champs.
Étant donné que je n'est jamais besoin de supprimer des info de la base de donné j'ai ceci.
// Initialisation des champs de la base à vérifier en POST
$champsExistants = array();
$champsExistants[] = "marque";
$champsExistants[] = "annee";
$champsExistants[] = "modele";
//....
// Fonction vérifiant si un champ doit être ajouter à la clause SET de la fonction, et
// si oui, donnant la partie correspondante de la clause SET.
function ajouteClause($champ)
{
global $champsExistants;
$resultat = "";
if (array_search($champ, $champsExistants) !== FALSE
&& $_POST[$champ] != '')
$resultat = " $champ='".mysql_real_escape_string($_POST[$champ])."' ";
return $resultat;
}
$sqlSET = "";
foreach($_POST as $champ => $valeur)
{
$sqlSET .= ajouteClause($champ);
}
$insertion = "UPDATE voiture SET $sqlSET WHERE id='1'";
mysql_query($insertion);
en fais je la trouve super bien cette fonction puisqu'elle allège mon code de beaucoup mais elle ne mais pas les virgules. je vais donc tester ta solution aussi mais elle n'allège pas de beaucoup le code.
Merci de ta solution je te reviens bientôt.
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 975
31 août 2011 à 21:59
31 août 2011 à 21:59
Au contraire, son code est 100 fois plus optimisé et donc plus léger! Moins de requetes = plus de rapidité!
nicelife90
Messages postés
615
Date d'inscription
vendredi 24 septembre 2010
Statut
Membre
Dernière intervention
10 avril 2018
151
31 août 2011 à 22:13
31 août 2011 à 22:13
Bonjour Zep3k!GnO et graffx,
Effectivement, après étude de la situation et quelque modification je confirme que le code de Zep3k!GnO est beaucoup plus adapter à mes besoins.
Au départ mon problème était que lorsque mes case dans mon formulaire restait vide ma requête update effaçais le champ.
Grâce au code proposer ici ce problème est régler de plus le problème des virgules non pris en compte dans l'autre code l'ai ici. j'ai apporter certaine modification du fais qu'il y avais erreur dans ce code à la ligne : if ($webmailmain = ''){ qui aurrais du être if ($webmailmain != ''){
j'ai donc tester tous ceci avec un formulaire vite fais et une table voiture à 4 champ et j'ai fais quelque modification au code donc voici mon résultat.
Le formulaire :
Et le valide.php:
Tous ceci fonctionne à merveille merci beaucoup pour votre aide et vos conseils
Effectivement, après étude de la situation et quelque modification je confirme que le code de Zep3k!GnO est beaucoup plus adapter à mes besoins.
Au départ mon problème était que lorsque mes case dans mon formulaire restait vide ma requête update effaçais le champ.
Grâce au code proposer ici ce problème est régler de plus le problème des virgules non pris en compte dans l'autre code l'ai ici. j'ai apporter certaine modification du fais qu'il y avais erreur dans ce code à la ligne : if ($webmailmain = ''){ qui aurrais du être if ($webmailmain != ''){
j'ai donc tester tous ceci avec un formulaire vite fais et une table voiture à 4 champ et j'ai fais quelque modification au code donc voici mon résultat.
Le formulaire :
<html> <body> <form action="valide.php" method="post" name="test"> <input name="marque" type"text" size="11" maxlength="11"> marque : <br/> <input name="modele" type"text" size="40" maxlength="40"> modele : <br/> <input name="annee" type"text" size="40" maxlength="40"> annee : <br/> <input type="submit" value="envoyer" name="submit"> </form> </body> </html>
Et le valide.php:
<?php $sChamps = ''; if ($_POST['marque'] != ''){ if($sChamps != ''){ $sChamps .= ', '; } $sChamps .= "marque='".$_POST['marque']."'"; } if ($_POST['modele'] != ''){ if($sChamps != ''){ $sChamps .= ', '; } $sChamps .= "modele='".$_POST['modele']."'"; } if ($_POST['annee'] != ''){ if($sChamps != ''){ $sChamps .= ', '; } $sChamps .= "annee='".$_POST['annee']."'"; } if($sChamps != ''){ $insertion = "UPDATE voiture SET $sChamps WHERE id='1' "; }else{ //rien na updater } ?>
Tous ceci fonctionne à merveille merci beaucoup pour votre aide et vos conseils