Post by exo » Thu Aug 23, 2012 4:15 pm

Καλημέρα σας,

Θα ήθελα να ρωτήσω αν ξέρετε κάποιο τρόπο που κάθε φορά που κάνει εγγραφή κάποιος νέος χρήστης στο website να αποθηκεύω τις πληροφορίες που θέλω(π.χ. customer_id, firstname, lastname, e-mail...) σε μία άλλη βάση δεδομένων με σκοπό την εξαγωγή κάποιων στατιστικών στοιχείων.

Το αρχείο που θέλει να επέμβουμε νομίζω είναι το παρακάτω :
catalog\model\account\customer.php

Στην συνάρτηση addCustomer($data){} εκεί προσθέτω τον παρακάτω κώδικα αλλά δεν μου ενημερώνεται η βάση μου.

Code: Select all

mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("login_db") or die(mysql_error());

// Insert a row of information into the table "example"
mysql_query("INSERT INTO customer(customer_id,firstname,lastname,email,telephone,fax,address_id,customer_group_id,status,approved) 
VALUES(2,'testfirst','testlast','testmail@yahoo.com',2810301740,'',1,8,1,1)" or die(mysql_error())); 
Περιμένω την βοήθειά σας.

Ευχαριστώ :)

exo
Newbie

Posts

Joined
Wed Jul 25, 2012 10:25 pm
Location - Heraklion, Crete

Post by People's Code » Thu Aug 23, 2012 8:16 pm

Δοκίμασε αυτό μετά τη γραμμή 70

Code: Select all

$connection = mysql_connect("localhost", "root", "");

if (!$connection) {
    die('Unable to connect to secondary DB: ' . mysql_error());
}

if (!mysql_select_db("login_db")) {
    die('Unable to select login_db: ' . mysql_error());
}
   
mysql_query("INSERT INTO customer(customer_id,firstname,lastname,email,telephone,fax,address_id,customer_group_id,status,approved)
    VALUES(2,'testfirst','testlast','testmail@yahoo.com',2810301740,'',1,8,1,1)") or die('Unable to submit query: ' . mysql_error());

Last edited by People's Code on Thu Aug 23, 2012 8:52 pm, edited 1 time in total.

PeoplesCode.com
Επίσημος Αντιπρόσωπος OpenCart | Extensions - Φιλοξενία - Αναβάθμιση - Τεχνική Υποστήριξη OpenCart
Opencart-Hellas.gr - Η Ελληνική κοινότητα του Opencart
Πλήρης Ελληνική μετάφραση OpenCart


User avatar
Active Member

Posts

Joined
Fri Jul 27, 2012 5:30 am
Location - Hellas

Post by exo » Thu Aug 23, 2012 8:47 pm

Το έκανα και μου εμφανίζει τα παρακάτω error...

Code: Select all

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\opencart\system\library\mail.php on line 157Warning: mysql_real_escape_string(): 105 is not a valid MySQL-Link resource in C:\xampp\htdocs\opencart\system\database\mysql.php on line 55Warning: mysql_real_escape_string(): 105 is not a valid MySQL-Link resource in C:\xampp\htdocs\opencart\system\database\mysql.php on line 55Warning: mysql_query(): 105 is not a valid MySQL-Link resource in C:\xampp\htdocs\opencart\system\database\mysql.php on line 21Warning: mysql_error(): 105 is not a valid MySQL-Link resource in C:\xampp\htdocs\opencart\system\database\mysql.php on line 49Warning: mysql_errno(): 105 is not a valid MySQL-Link resource in C:\xampp\htdocs\opencart\system\database\mysql.php on line 49Notice: Error:
Error No:
SELECT * FROM customer WHERE LOWER(email) = '' AND password = '' AND status = '1' in C:\xampp\htdocs\opencart\system\database\mysql.php on line 49
Fatal error: Call to a member function get() on a non-object in C:\xampp\htdocs\opencart\index.php on line 103
Η εγγραφή όμως πέρασε κανονικότατα απο ότι είδα.. Μάλλον κάνω σύνδεση με την άλλη βάση ενώ δεν έχει ολοκληρωθεί η διαδικασία που αφορά την αρχική βάσης του opencart.

Τον κώδικα τον έχω γράψει στο τέλος της παρακάτω συνάρτησης :

Code: Select all

	public function addCustomer($data) {
      	$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET store_id = '" . (int)$this->config->get('config_store_id') . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', password = '" . $this->db->escape(md5($data['password'])) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "', status = '1', date_added = NOW()");
      	
		$customer_id = $this->db->getLastId();
			
      	$this->db->query("INSERT INTO " . DB_PREFIX . "address SET customer_id = '" . (int)$customer_id . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', company = '" . $this->db->escape($data['company']) . "', address_1 = '" . $this->db->escape($data['address_1']) . "', address_2 = '" . $this->db->escape($data['address_2']) . "', city = '" . $this->db->escape($data['city']) . "', postcode = '" . $this->db->escape($data['postcode']) . "', country_id = '" . (int)$data['country_id'] . "', zone_id = '" . (int)$data['zone_id'] . "'");
		
		$address_id = $this->db->getLastId();

      	$this->db->query("UPDATE " . DB_PREFIX . "customer SET address_id = '" . (int)$address_id . "' WHERE customer_id = '" . (int)$customer_id . "'");
		
		if (!$this->config->get('config_customer_approval')) {
			$this->db->query("UPDATE " . DB_PREFIX . "customer SET approved = '1' WHERE customer_id = '" . (int)$customer_id . "'");
		}	
		
		$this->language->load('mail/customer');
		
		$subject = sprintf($this->language->get('text_subject'), $this->config->get('config_name'));
		
		$message = sprintf($this->language->get('text_welcome'), $this->config->get('config_name')) . "\n\n";
		
		if (!$this->config->get('config_customer_approval')) {
			$message .= $this->language->get('text_login') . "\n";
		} else {
			$message .= $this->language->get('text_approval') . "\n";
		}
		
		$message .= $this->url->link('account/login', '', 'SSL') . "\n\n";
		$message .= $this->language->get('text_services') . "\n\n";
		$message .= $this->language->get('text_thanks') . "\n";
		$message .= $this->config->get('config_name');
		
		$mail = new Mail();
		$mail->protocol = $this->config->get('config_mail_protocol');
		$mail->parameter = $this->config->get('config_mail_parameter');
		$mail->hostname = $this->config->get('config_smtp_host');
		$mail->username = $this->config->get('config_smtp_username');
		$mail->password = $this->config->get('config_smtp_password');
		$mail->port = $this->config->get('config_smtp_port');
		$mail->timeout = $this->config->get('config_smtp_timeout');				
		$mail->setTo($data['email']);
		$mail->setFrom($this->config->get('config_email'));
		$mail->setSender($this->config->get('config_name'));
		$mail->setSubject($subject);
		$mail->setText($message);
		$mail->send();
		
		// Send to main admin email if new account email is enabled
		if ($this->config->get('config_account_mail')) {
			$mail->setTo($this->config->get('config_email'));
			$mail->send();
			
			// Send to additional alert emails if new account email is enabled
			$emails = explode(',', $this->config->get('config_alert_emails'));
			
			foreach ($emails as $email) {
				if (strlen($email) > 0 && preg_match('/^[^\@]+@.*\.[a-z]{2,6}$/i', $email)) {
					$mail->setTo($email);
					$mail->send();
				}
			}
		}
		
		/*************************************************************/
		$connection = mysql_connect("localhost", "root", "");

		if (!$connection) {
        die('Unable to connect to secondary DB: ' . mysql_error());
		}

		if (!mysql_select_db("login_db")) {
        die('Unable to select login_db: ' . mysql_error());
		}
       
		mysql_query("INSERT INTO customer(customer_id,firstname,lastname,email,telephone,fax,address_id,customer_group_id,status,approved)
        VALUES(2,'testfirst','testlast','testmail@yahoo.com',2810301740,'',1,8,1,1)") or die('Unable to submit query: ' . mysql_error());

		mysql_close($connection); 
		/*************************************************************/
	}
Καμιά ιδέα ?
Last edited by exo on Thu Aug 23, 2012 8:55 pm, edited 1 time in total.

exo
Newbie

Posts

Joined
Wed Jul 25, 2012 10:25 pm
Location - Heraklion, Crete

Post by People's Code » Thu Aug 23, 2012 8:54 pm

Ποια version έχεις ?

PeoplesCode.com
Επίσημος Αντιπρόσωπος OpenCart | Extensions - Φιλοξενία - Αναβάθμιση - Τεχνική Υποστήριξη OpenCart
Opencart-Hellas.gr - Η Ελληνική κοινότητα του Opencart
Πλήρης Ελληνική μετάφραση OpenCart


User avatar
Active Member

Posts

Joined
Fri Jul 27, 2012 5:30 am
Location - Hellas

Post by exo » Thu Aug 23, 2012 8:58 pm

Η version που χρησιμοποιώ είναι : Version 1.5.1.3

***Έκανα EDIT την παραπάνω απαντησή μου...***

exo
Newbie

Posts

Joined
Wed Jul 25, 2012 10:25 pm
Location - Heraklion, Crete

Post by People's Code » Thu Aug 23, 2012 9:03 pm

Οκ αφαίρεσε το mysql_close($connection);

PeoplesCode.com
Επίσημος Αντιπρόσωπος OpenCart | Extensions - Φιλοξενία - Αναβάθμιση - Τεχνική Υποστήριξη OpenCart
Opencart-Hellas.gr - Η Ελληνική κοινότητα του Opencart
Πλήρης Ελληνική μετάφραση OpenCart


User avatar
Active Member

Posts

Joined
Fri Jul 27, 2012 5:30 am
Location - Hellas

Post by exo » Thu Aug 23, 2012 9:19 pm

Τώρα βγάζει αυτό :

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\opencart\system\library\mail.php on line 157Notice: Error: Unknown column 'password' in 'where clause'
Error No: 1054
SELECT * FROM customer WHERE LOWER(email) = 'hahaha@yahoo.gr' AND password = '01cfcd4f6b8770febfb40cb906715822' AND status = '1' in C:\xampp\htdocs\opencart\system\database\mysql.php on line 49

exo
Newbie

Posts

Joined
Wed Jul 25, 2012 10:25 pm
Location - Heraklion, Crete

Post by People's Code » Thu Aug 23, 2012 9:22 pm

Έχεις ρυθμίσει το opencart να στέλνει mail με SMTP ?
Last edited by People's Code on Thu Aug 23, 2012 9:33 pm, edited 2 times in total.

PeoplesCode.com
Επίσημος Αντιπρόσωπος OpenCart | Extensions - Φιλοξενία - Αναβάθμιση - Τεχνική Υποστήριξη OpenCart
Opencart-Hellas.gr - Η Ελληνική κοινότητα του Opencart
Πλήρης Ελληνική μετάφραση OpenCart


User avatar
Active Member

Posts

Joined
Fri Jul 27, 2012 5:30 am
Location - Hellas

Post by exo » Thu Aug 23, 2012 9:30 pm

Όχι, γιατί είναι Localhost. Δουλέυει κανονικά η όλη διαδικασία αν δεν γράψω αυτές τις επιπλέον γραμμές κώδικα στην συνάρτηση. Απλά δέν στέλνει mail κάθε φορά που κάνει κάποιος εγγραφή. ???

Μπήκα στο backoffice του opencart και είδα οτι τους πελάτες που πέρασε με τις επιπλέον γραμμές κώδικα τους περνάει με IP = 0(μηδενική IP), ενω κανονικά έπρεπε να γράφει 127.0.0.1. :choke:
Last edited by exo on Thu Aug 23, 2012 9:34 pm, edited 1 time in total.

exo
Newbie

Posts

Joined
Wed Jul 25, 2012 10:25 pm
Location - Heraklion, Crete

Post by People's Code » Thu Aug 23, 2012 9:33 pm

Σε εμένα πάντως λειτουργεί κανονικά αν αφαιρεθέι το mysql_close($connection);

Το δοκίμασα με mysqli functions και δουλέυει άψογα... που έτσι κι αλλιώς έτσι θα έπρεπε να είναι (άσχετα αν το opencart είναι ακόμα σε mysql...)

Code: Select all

$connection = mysqli_connect("localhost", "root", "", "login_db");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
mysqli_query($connection, "INSERT INTO customer(customer_id,firstname,lastname,email,telephone,fax,address_id,customer_group_id,status,approved)
        VALUES('','testfirst','testlast','testmail@yahoo.com',2810301740,'',1,8,1,1)") or die('Unable to submit query: ' . mysql_error());
mysqli_close($connection);
* Δοκίμασε το σε ένα καινούργιο αρχείο customer.php μήπως έχεις κατά λάθος αφαιρέσει κάτι ...

PeoplesCode.com
Επίσημος Αντιπρόσωπος OpenCart | Extensions - Φιλοξενία - Αναβάθμιση - Τεχνική Υποστήριξη OpenCart
Opencart-Hellas.gr - Η Ελληνική κοινότητα του Opencart
Πλήρης Ελληνική μετάφραση OpenCart


User avatar
Active Member

Posts

Joined
Fri Jul 27, 2012 5:30 am
Location - Hellas

Post by exo » Thu Aug 23, 2012 9:52 pm

Θα το κάνω και αν δουλέψει θα σου στείλω.

Ευχαριστώ πολύ για το support! ;D

Να σαι καλά!!!! Καλή σου μέρα!!! O0

exo
Newbie

Posts

Joined
Wed Jul 25, 2012 10:25 pm
Location - Heraklion, Crete

Post by exo » Fri Aug 24, 2012 3:12 pm

Δούλεψε τελικά! Με τον παρακάτω τρόπο.

Code: Select all

/*************************************************************/
//Connect to secondary DB
$connection2 = mysql_connect("localhost", "root", "");

if (!$connection2) {
    die('Unable to connect to secondary DB: ' . mysql_error());
}

//Select secondary DB
if (!mysql_select_db("login_db",$connection2)) {
        die('Unable to select login_db: ' . mysql_error());
}
       
 //INSERT QUERY TO SECOND DATABASE
mysql_query("INSERT INTO customers(cust_id,cust_firstname,cust_lastname,cust_email,cust_telephone,cust_fax,cust_address_id,cust_group_id,cust_status,cust_approved) VALUES(4,'testfirst','testlast','testmail@yahoo.com',2810301740,'',1,8,1,1)") or die('Unable to submit query: ' . mysql_error());

mysql_close($connection2); 
		
//Connect to default DB
$connection = mysql_connect("localhost", "root", "");
		
//Select default DB
if (!mysql_select_db("opencart_db")) {
    die('Unable to select login_db: ' . mysql_error());
}
/*************************************************************/

exo
Newbie

Posts

Joined
Wed Jul 25, 2012 10:25 pm
Location - Heraklion, Crete

Post by People's Code » Sat Aug 25, 2012 10:43 am

Καταρχάς δοκίμασες τις mysqli functions ... ?

Στο προηγούμενο post κλεινεις το κώδικα σου με αυτό ...
//Connect to default DB
$connection = mysql_connect("localhost", "root", "");

//Select default DB
if (!mysql_select_db("opencart_db")) {
die('Unable to select login_db: ' . mysql_error());
}
Ανοίγεις πάλι connection στη βάση του opencart (που κανονικά γίνεται από το MySQL class).
θα μπορούσες να ανοίξεις ένα νέο link για τη προηγούμενη σύνδεση :

Code: Select all

 $connection2 = mysql_connect("localhost", "root", "", $new_link = true);
Έτσι ο κώδικας γίνεται:

Code: Select all

  /*************************************************************/
    //Connect to secondary DB
    $connection2 = mysql_connect("localhost", "root", "", $new_link = true);

    if (!$connection2) {
        die('Unable to connect to secondary DB: ' . mysql_error());
    }

    //Select secondary DB
    if (!mysql_select_db("login_db",$connection2)) {
            die('Unable to select login_db: ' . mysql_error());
    }
           
     //INSERT QUERY TO SECOND DATABASE
    mysql_query("INSERT INTO customers(cust_id,cust_firstname,cust_lastname,cust_email,cust_telephone,cust_fax,cust_address_id,cust_group_id,cust_status,cust_approved) VALUES(4,'testfirst','testlast','testmail@yahoo.com',2810301740,'',1,8,1,1)") or die('Unable to submit query: ' . mysql_error());

    mysql_close($connection2);          
    /*************************************************************/

PeoplesCode.com
Επίσημος Αντιπρόσωπος OpenCart | Extensions - Φιλοξενία - Αναβάθμιση - Τεχνική Υποστήριξη OpenCart
Opencart-Hellas.gr - Η Ελληνική κοινότητα του Opencart
Πλήρης Ελληνική μετάφραση OpenCart


User avatar
Active Member

Posts

Joined
Fri Jul 27, 2012 5:30 am
Location - Hellas
Who is online

Users browsing this forum: No registered users and 2 guests