Aiuto ecommerce in php

danielelepre

Nuovo Utente
11 Ott 2009
6
0
0
Stockholm
Ciao a tutti!
complimenti a tutti e spero che qualcuno mi possa aiutare...

ho un sito e-commerce (x-cart) in php e mysql per la vendita di elettronica di consumo. Il mio problema é relativo all´aggiornamento delle schede tecniche o descrizioni dei nuovi prodotti inseriti nel database (mysql).
Attualmente le descrizioni dei prodotti vengono copiate manualmente dal sito icecat.biz (il piú grande database di schede tecniche di prodotti tradotti in piú di 25 lingue). Si tratta di una semplice tabella con tutti i dati tecnici del prodotto (un esempio lo trovate quí).

Sto pensando di sviluppare un´applicazione in php che é in grado di copiare queste schede tecniche e incollarle nel database mysql.

Io avevo pensato ad un html parser in php ma a me interesserebbe copiare l´intero codice html di quella tabella nel database perché la stessa tabella verrebbe riprodotta all´interno del mio carrello.

Spero di aver esposto il mio problema in modo comprensibile e spero in un piccolo aiutino.

ciao a tutti!
 
Ciao, dovresti accedere al sito con la libreria curl oppure usando direttamente fsockopen, quindi recuperare il codice HTML della pagina e usare delle espressioni regolari per recuperare la porzione che interessa a te.

È sempre un parser, solamente che recupera una parte della pagina più ampia. Spero di esserti stato utile, ma al momento non posso farlo di persona perché non ho tempo.

In ogni caso sul Web trovi migliaia di guide, e se conosci abbastanza bene le espressioni regolari non dovresti avere particolari problemi.
 
Utilissimo!
Grazie per la dritta! Curl sembra perfetto per quello che devo fare. Inizio subito a lavorarci e spero di farcela con la mia conoscenza media di php.

Poi posto il risultato del lavoro quí.
 
Sono riuscito a copiare i tag che volevo da una determinata pagina web e visualizzarli a schermo con il codice sottostante. Come faccio a inviare il tutto a una tabella di un database mysql?

thanks


Codice:
<?php

$config['url']       = "http://www.esempio.com/index.html"; // url della pagina html da copiare
$config['start_tag'] = "<body>"; // tag di inizio copia
$config['end_tag']   = "</body>"; // tag di fine copia
$config['show_tags'] = 1; // mostra tags nel risultato? 1 = si, 0 = no

class grabber
{
	var $error = '';
	var $html  = '';
	
	function grabhtml( $url, $start, $end )
	{
		$file = file_get_contents( $url );
		
		if( $file )
		{
			if( preg_match_all( "#$start(.*?)$end#s", $file, $match ) )
			{				
				$this->html = $match;
			}
			else
			{
				$this->error = "Tags cannot be found.";
			}
		}
		else
		{
			$this->error = "Site cannot be found!";
		}
	}
	
	function strip( $html, $show, $start, $end )
	{
		if( !$show )
		{
			$html = str_replace( $start, "", $html );
			$html = str_replace( $end, "", $html );
			
			return $html;
		}
		else
		{
			return $html;
		}
	}
}

$grab = new grabber;
$grab->grabhtml( $config['url'], $config['start_tag'], $config['end_tag'] );

echo $grab->error;

foreach( $grab->html[0] as $html )
{
	echo htmlspecialchars( $grab->strip( $html, $config['show_tags'], $config['start_tag'], $config['end_tag'] ) ) . "<br>";
}

?>
 
Basta che ti connetti al database e inserisci i dati:
PHP:
<?php
$conn = mysql_connect('localhost', 'root', 'password') or die(mysql_error());
mysql_select_db('nome') or die(mysql_error());

mysql_query("INSERT INTO dati (codice) VALUES ('$html')");
?>

Ovviamente devi modificare il codice secondo le tue esigenze. Ti consiglio di leggerti una guida su come interagire con MySQL tramite PHP.
 
Avevo provato questo ma mi restituisce errore alla riga $result.
Credo che $html non vada bene.


Codice:
//imposto un codice prodotto per il test
$pr_code="34567812";

//Mi connetto al MySql Server
$myconn = mysql_connect('hostname', 'user', 'password') or die("Connessione non riuscita");

//Mi connetto al database dei prodotti
mysql_select_db('nomedb', $myconn) or die("Database non trovato");

//Imposto ed eseguo la query che inserisce il contenuto nel campo descrizione del prodotto $pr_code della tabella products
$query = "UPDATE products SET description='$html' WHERE productcode='$pr_code'";
$result = mysql_query($query, $myconn) or die("Errore nella scrittura dei dati");
echo "Record aggiornato con successo!";
mysql_close($myconn);
 
Modifica il codice nel modo seguente e vedi cosa ti dice:

PHP:
$result = mysql_query($query, $myconn) or die("Errore nella scrittura dei dati: ".mysql_error());

Di che tipo è il campo description?
 
Funziona ora!
Ho cambiato il tipo di campo nella tabella del database da VARCHAR a TEXT e funziona.

Il problema ora é di automatizzare il tutto per una serie di links.
Secondo voi é possibile leggere i codici prodotto e i links delle pagine da copiare da un file excel oppure da un .csv costituito da 2 colonne?

Spero di essere comprensibile
 
Ultima modifica:

Discussioni simili