Mailinglisten-Archive |
Folgendes Problem: Ich habe eine Tabelle, in welche ich Strings legen möchte. Wenn ein String schon in der Tabelle ist so möchte ich, daß ein anderes Feld in der Zeile mit dem String um Eins erhöht wird. Ich habe mir da die folgende Funktion zu geschrieben, bin mir aber ziemlich sicher, daß das noch einfacher / eleganter geht: function updateTable( $table, $field, $string, $mode = 1 ) { // check, if this string already has an entry $this->db->query( "select count(*) as number from $table where $field = '$string'" ); $this->db->Next_Record(); // string already has an entry, update it if( $this->db->f( "number" ) > 0 ) { // get data $this->db->query( "select * from $table where $field = '$string'" ); $this->db->Next_Record(); // get string's id $id = $this->db->f( "ID" ); // update data if( $mode == 1 ) { $hits = $this->db->f( "HITS" ) + 1; $this->db->query( "update $table set HITS = '$hits' where ID = '$id'" ); } // return result return $id; } // string has no entry yet, create one else { $this->db->query( "insert into $table ( $field ) values( '$string' )" ); return $this->updateTable( $table, $field, $string, 0 ); } } Hier ein Beispiel für die Art von Tabelle auf die updateTable() angewendet werden soll: CREATE TABLE phpOpenCounter_agents ( ID int(8) NOT NULL auto_increment, USER_AGENT char(255) NOT NULL, HITS int(11) DEFAULT '1' NOT NULL, PRIMARY KEY (ID), KEY ID (ID), UNIQUE USER_AGENT (USER_AGENT) ); AHA -- Sebastian Bergmann Homepage : http://gravedancer.rc5.de \ eMail: sebastian.bergmann_(at)_web.de Fax/Voice: +49 180 50 52 54 04 86 39 \ Mobil: +49 170 125 85 78
php::bar PHP Wiki - Listenarchive