Salve sto creando u progetto abbastanza complesso ma mi sono arenato subito all’inizio , spiego quello che vorrei fare , devo estrarre i campionati da una pagina web , per fare questo utilizzo le espressioni regolari e riesco ad estrarli senza problemi , vorrei però che non venissero inseriti valori duplicati allora faccio un controllo ma piuntalmente ho alcuni valori che si ripetono , allego le due funzioni del controller :
public function controllaDuplicati($nomeCampo,$tabellaDb,$valoreDaCercare){
//mi connetto al db
$connection = \Yii::$app->db;
//creo la query
$sql="SELECT $nomeCampo FROM $tabellaDb WHERE $nomeCampo='$valoreDaCercare'";
//eseguo il comando
$command = $connection->createCommand($sql);
//conto i risultati
$numRighe=$command->execute();
if($numRighe>0){
$duplicato=true;
}
else{
$duplicato=false;
}
return $duplicato;
}
public function inserisciTorneo(){
//inserisco la pagina nella variabile
$page='http://www.futbol24.com/';
//creo un array conposto da tutte le linee della pagina
$lines = file($page);
//creo unarray vuoto da popolare
$parole=array();
//scorro le linee della pagina
foreach ($lines as $testo) {
//cerco il testo compreso tra /national e la /
preg_match_all('(/national/(.*?)/)', $testo, $ris);
//controllo se esiste la parola nella riga se esiste metto il risultato nella variabile
if(isset($ris[1][0])){
$risultato =$ris[1][0];
}
//se non esiste setto $risultato come null
else{
$risultato=null;
}
//se risultato è diverso da null
if($risultato!=null){
//e se non è duplicato
$duplicato=$this->controllaDuplicati('nomeCampionato','tbl_campionato',$risultato);
if(!$duplicato){
array_push($parole, $risultato);
}
}
}
foreach ($parole as $value) {
//mi connetto al db
$connection = \Yii::$app->db;
//creo la query
$sql="INSERT INTO tbl_campionato (nomeCampionato) values ('$value') ";
//eseguo il comando
$command = $connection->createCommand($sql);
$command->execute();
}