2012-01-04 4 views
0

J'utilise PHPMaker. Il a la capacité de faire des choses personnalisées avec son code .... Cela vient de la documentation: "Cet événement sera appelé après la mise à jour d'un enregistrement.Les arguments de l'événement sont les tableaux de l'ancien et du nouvel enregistrement mis à jour. Cet événement est un membre de classe de table. "simple requête SQL nécessaire pour le code php

Voici le code à modifier pour cet événement:

// Row Updated event 
function Row_Updated($rsold, &$rsnew) { 
    //echo "Row Updated";  
} 

Quand je modifier un enregistrement Je veux que les anciennes données à insérer dans une autre table à des fins historiques. La table "historique" aura les mêmes champs plus un champ ID qui sera incrémenté automatiquement et sera la clé primaire. Donc, je vais avoir un historique complet des changements disponibles.

La disposition de la table est comme ceci;

(Information) 
ip (primary key), status, hostname, last_scanned, mac, ManualHost, Reservation 

Ils ont quelques exemples de code pour insérer un enregistrement, mais je ne suis pas un gourou et ne savent pas le jargon MySQL/PHP pour obtenir des données sur le tableau de rsold de $.

// Insert record 
// NOTE: Modify your SQL here, replace the table name, field name and field values 
$sInsertSql = "INSERT INTO MyTable (Field1, Field2, Field3) VALUES (Value1, Value2, Value3)"; 
$GLOBALS["conn"]->Execute($sInsertSql); 

Est-ce que quelqu'un peut m'aider/me diriger dans la bonne direction?

Répondre

1

En supposant qu'ils retournent la ligne, vous pouvez simplement récupérer les champs comme s'il s'agissait d'un tableau. Utilisez simplement la variable et mentionnez le champ entre crochets, par exemple: $row['field'].

$sInsertSql = "INSERT INTO information (status, hostname, last_scanned, mac, ManualHost, Reservation) 
       VALUES ('" . $rsold['status'] . "', '" . $rsold['hostname'] . "', '" . $rsold['last_scanned'] . "', '" . $rsold['mac'] . "', 
         '" . $rsold['ManualHost'] . "', 
         '". $rsold['Reservation'] . "')"; 
$GLOBALS["conn"]->Execute($sInsertSql); 

Quant à votre question sur « tout l'espacement et les périodes » Je fais cela pour garder mes variables séparées de la chaîne. Un bon (mauvais) exemple pour vous montrer une raison possible est le suivant:

$juice = "apple"; 
echo "He drank some $juice juice."; 

//Now imagine I want to write "He drank some juice made of apples 
echo "He drank some juice made of $juices."; 
//^^^ Is invalid. "s" is a valid character for a variable name, but the variable is $juice. 
//So it'd be better to 
echo "He drank some juice made of " . $juice . "s."; 
+0

Qu'est-ce qui est avec l'espacement et toutes les périodes et autres? me semble drôle .... – AaronJAnderson

+0

Il rend la requête plus facile à lire. C'est une bonne pratique de ne pas placer vos variables dans une variable String. Et cela évite de mal citer. Mise à jour ma réponse pour vous montrer pourquoi. – Jules

+0

Cela prend tout son sens. Beaucoup de respect pour faire les choses correctement :) – AaronJAnderson