2017-01-13 3 views
1

J'utilise dhtmlxgrid pour afficher les informations de base de données MySQL aux utilisateurs ayant la possibilité d'éditer les données de la cellule ligne. Une colonne productionstage s'affiche en tant que colonne de liste déroulante avec la possibilité de modifier la valeur en Staged Done. Cela met à jour la table DB parfaitement. Cependant, j'ai besoin de vérifier la valeur de la colonne productionstage pour tester la valeur Staged Done. Si productionstage est défini sur cette valeur, j'ai besoin d'une autre colonne stagestatus dans la même table pour également mettre à jour sa valeur à Production. Il est préférable que la colonne stagestatus de la table DB ne soit PAS une colonne visible pour l'utilisateur final et qu'elle soit déclenchée au niveau de l'extrémité arrière.Besoin d'une autre valeur de base de données mise à jour lorsque l'option de sélection de colonne dhtmlxgrid change

Toute aide est appréciée. Je vous remercie!

Mon CODE:

//update row 
$sql = "UPDATE invoices SET editby='".$editBy."', editpage='".$editPage."', serverip='".$serverIp."', ip='".$Ip."',floornotes='".$_GET["floornotes"]."',productionstage='".$_GET["productionstage"]."' where id=".$_GET["gr_id"]."'"; 
$res = mysqli_query($sql); 


if (($_GET['productionstage']) == 'Staged Done') { 
    //update stagestatus from 'Scheduled' to Production if moved to 'Staged Done' in Glass Prep. 
$sql1 = "UPDATE invoices SET stagestatus = 'Production') WHERE id=".$_GET["gr_id"]."'"; 
$res1 = mysqli_query($sql1); 

} 

NOTE :: Je comprends que la méthode utilisée actuellement par le programmeur précédent expose le script aux attaques par injection SQL - Je vais aussi mettre à jour ce script pour utiliser les commandes préparées ... Je vous remercie!

+0

Avez-vous des erreurs? Vous avez des parenthèses supplémentaires dans '$ sql1', mais il peut s'agir d'une faute de frappe. –

+0

Je n'obtiens aucune erreur lors de l'inspection de la page, mais je vois que dhtmlxgrid échoue toute mise à jour de ligne en raison de la deuxième instruction UPDATE. Dhtmlxgrid est-il uniquement destiné à gérer une instruction UPDATE par grille? Si c'est le cas, je vais ajuster le code pour tester la valeur et exécuter l'instruction UPDATE correcte basée sur la logique d'instruction IF. – rdimouro

Répondre

0

Donc je dois avoir juste eu un bug dans le code quelque part. Lors de certains tests et éditions, le code suivant a résolu le problème (et oui, dhtmlxgrid peut gérer plus d'une instruction UPDATE par grille).

Solution:

//update row 
$sql = "UPDATE invoices SET editby='".$editBy."', editpage='".$editPage."', serverip='".$serverIp."', ip='".$Ip."',floornotes='".$_GET["floornotes"]."',productionstage='".$_GET["productionstage"]."' where id=".$_GET["gr_id"].""; 
$res = mysqli_query($sql); 



if (($_GET['productionstage']) == 'Staged Done') { 


    $sql1 = "UPDATE invoices SET stagestatus = 'Production' WHERE id=".$_GET["gr_id"].""; 
    $res1 = mysqli_query($sql1); 

} else { 

    print("<action type='error'>SQL query error</action>"); 

} 

S'il vous plaît noter: Ma prochaine étape est de mettre à jour le code en outre l'utilisation des instructions préparées pour sécuriser davantage le script.

Merci!