Senza categoria

EdiSES – Attributi Grezzi & Completi

<?php
// Connessione al database WooCommerce
$servername = "localhost";
$username = "fabio";
$password = "aaa";
$dbname = "edises_1";
$conn = new mysqli($servername, $username, $password, $dbname);

// Verifica della connessione
if ($conn->connect_error) {
  die("Connessione fallita: " . $conn->connect_error);
}

// Esegui la query per estrarre gli attributi dei prodotti
$sql = "SELECT p.ID as id_prodotto, pm.meta_value as attributi_serializzati
FROM ed2024_posts p
JOIN ed2024_postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'product'
  AND pm.meta_key = '_product_attributes'";

$result = $conn->query($sql);

// Creazione del file CSV
$csvFileName = 'attributi_grezzi.csv';
$csvFile = fopen($csvFileName, 'w');

// Inizializza un array per tenere traccia di tutti i nomi degli attributi
$attributi_header = array('id_prodotto');
$attributi_rows = array();

// Elabora i risultati della query e costruisci l'array degli attributi
if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    $attributi = unserialize($row['attributi_serializzati']);
    $attributi_row = array('id_prodotto' => $row['id_prodotto']);
    foreach ($attributi as $nome_attributo => $dettagli_attributo) {
      if (!in_array($nome_attributo, $attributi_header)) {
        $attributi_header[] = $nome_attributo;
      }
      if (isset($dettagli_attributo['value'])) {
        $attributi_row[$nome_attributo] = $dettagli_attributo['value'];
      } elseif (isset($dettagli_attributo['name'])) {
        $attributi_row[$nome_attributo] = $dettagli_attributo['name'];
      }
    }
    $attributi_rows[] = $attributi_row;
  }
} else {
  echo "Nessun risultato trovato";
}

// Scrivi l'intestazione nel file CSV
fputcsv($csvFile, $attributi_header);

// Scrivi i valori degli attributi nel file CSV
foreach ($attributi_rows as $attributi_row) {
  $csvRow = array();
  foreach ($attributi_header as $header) {
    $csvRow[] = isset($attributi_row[$header]) ? $attributi_row[$header] : '';
  }
  fputcsv($csvFile, $csvRow);
}

// Chiudi la connessione al database e il file CSV
$conn->close();
fclose($csvFile);

echo "File CSV creato con successo: " . $csvFileName;
?>

<?php
// Connessione al database WooCommerce
$servername = "localhost";
$username = "fabio";
$password = "aaa";
$dbname = "edises_1";
$conn = new mysqli($servername, $username, $password, $dbname);

// Verifica della connessione
if ($conn->connect_error) {
    die("Connessione fallita: " . $conn->connect_error);
}

// Prima query per estrarre gli attributi dei prodotti
$sql = "SELECT p.ID as id_prodotto, pm.meta_value as attributi_serializzati
        FROM ed2024_posts p
        JOIN ed2024_postmeta pm ON p.ID = pm.post_id
        WHERE p.post_type = 'product' AND pm.meta_key = '_product_attributes'";

$result = $conn->query($sql);

// Inizializza un array per tenere traccia di tutti i nomi degli attributi
$attributi_header = array('id_prodotto');
$attributi_rows = array();

// Elabora i risultati della prima query e costruisci l'array degli attributi
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $attributi = unserialize($row['attributi_serializzati']);
        $attributi_row = array('id_prodotto' => $row['id_prodotto']);
        foreach ($attributi as $nome_attributo => $dettagli_attributo) {
            if (!in_array($nome_attributo, $attributi_header)) {
                $attributi_header[] = $nome_attributo;
            }
            $attributi_row[$nome_attributo] = $dettagli_attributo['value'] ?? $dettagli_attributo['name'] ?? '';
        }
        $attributi_rows[$row['id_prodotto']] = $attributi_row;
    }
} else {
    echo "Nessun risultato trovato per la prima query";
}

// Seconda query per ottenere informazioni aggiuntive
$sql2 = "SELECT
            t.name AS attribute_name,
            tt.taxonomy AS attribute_taxonomy,
            tr.object_id AS product_id,
            p.post_title AS product_name
         FROM
            ed2024_terms t
         JOIN
            ed2024_term_taxonomy tt ON t.term_id = tt.term_id
         JOIN
            ed2024_term_relationships tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
         JOIN
            ed2024_posts p ON tr.object_id = p.ID
         WHERE
            p.post_type = 'product'
         ORDER BY
            p.ID, tt.taxonomy;";

$result2 = $conn->query($sql2);

// Elabora i risultati della seconda query
if ($result2->num_rows > 0) {
    while($row2 = $result2->fetch_assoc()) {
        $product_id = $row2['product_id'];
        $attribute_taxonomy = $row2['attribute_taxonomy'];
        $attribute_name = $row2['attribute_name'];

        // Aggiungi il nuovo header se non esiste
        if (!in_array($attribute_taxonomy, $attributi_header)) {
            $attributi_header[] = $attribute_taxonomy;
        }

        // Assicurati che l'array per questo prodotto esista
        if (!isset($attributi_rows[$product_id])) {
            $attributi_rows[$product_id] = array('id_prodotto' => $product_id);
        }

        // Aggiorna l'array dei dati del prodotto
        $attributi_rows[$product_id][$attribute_taxonomy] = $attribute_name;
    }
} else {
    echo "Nessun risultato trovato per la seconda query";
}

// Creazione del file CSV
$csvFileName = 'attributi_completi.csv';
$csvFile = fopen($csvFileName, 'w');

// Scrivi l'intestazione nel file CSV
fputcsv($csvFile, $attributi_header);

// Scrivi i valori degli attributi nel file CSV
foreach ($attributi_rows as $product_id => $attributi_row) {
    $csvRow = array();
    foreach ($attributi_header as $header) {
        $csvRow[] = $attributi_row[$header] ?? '';
    }
    fputcsv($csvFile, $csvRow);
}

// Chiudi la connessione al database e il file CSV
$conn->close();
fclose($csvFile);

echo "File CSV creato con successo: " . $csvFileName;
?>