Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Consiglio aggiornamento dati database

    Ciao ragazzi, io ho un database così composto

    articolo | id | nome_prodotto | marca | prezzo | ecc...

    ora ho il nuovo listino in excel, e dovrei modificare solo il prezzo, inoltre dovrei vedere se esistono nuovi articolo ed aggiungerli.

    Come posso fare?

    Qualche consiglio?

    Ciao

  2. #2
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    bhe... se hai un db mysql potresti trasformare il file in csv
    poi lanci uno script che:

    1- estrapoli riga per riga i dati dal csv
    2- confronti il codice del file con quello del db:
    Se esiste confronti il prezzo e lo aggiorni
    se non esiste aggiungi il nuovo record.

    ciao

  3. #3
    Ciao, ho provato ha fare una prova, solo che ci stà un'eternità a caricare anche soo un dato..

    Qualche consiglio?

    Codice PHP:
    echo "<table border=\"0\" width=\"100%\">";

    $pathfile "file_new.csv";
    $array_contenuto file($pathfile);
    foreach(
    $array_contenuto as $row){
    $dati explode(';'$row);


    $result mysql_query("select * FROM shop_prodotti ORDER BY id asc ");
    while (
    $records mysql_fetch_assoc($result)) {
    $articolo $records['articolo'];
    $id $records['id'];
    $nome_prod $records['nome_prod'];
    $descrizione $records['descrizione'];
    $marca $records['marca'];
    $prezzo $records['prezzo'];
    $pzxsc $records['pzxsc'];
    $mqxsc $records['mqxsc'];
    $unita $records['unita'];
    $immagine $records['immagine'];
    $img_offerta $records['img_offerta'];
    $costo_offerta $records['costo_offerta'];
    $offerta $records['offerta'];


    echo 
    "<tr>";
    echo 
    "<td align=\"left\">";

    if(
    $dati[0] == $articolo)
    {
    echo 
    $articolo;
    }
    else{
    echo 
    $dati[0];
    }


    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[1];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[2];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[3];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[4];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[5];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[6];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[7];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[8];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[9];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[10];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[11];
    echo 
    "</td>";
    echo 
    "<td align=\"left\">";
    echo 
    $dati[12];
    echo 
    "</td>";
    echo 
    "</tr>";


    }

    }
    ?>
    </table> 
    zau

  4. #4
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    humm ... doppio ciclo... bruttino ...

    se puoi cerca sempre di evitarli i doppi cicli.

    al posto di usare quella query potresti :

    1-estrai le righe del file(lo hai fatto)
    2-fai una query con un where
    SELECT COUNT(prezzo) FROM tabella WHERE codice = 'codicenelfile[indice]';

    cosi che se ti restituisce un record lo aggiorni altrimenti lo inserisci

  5. #5
    Mi è venuto in testa solo questo mi riesci ha fare un esempio sul secondo punto?

    Ciao e grazie

  6. #6
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    tu hai un csv impostato cosi

    0 1 2 3 = indici
    ID;CODPRODOTTO;PREZZO;QUANTITA =valore del file

    Codice PHP:
    $arrayFile file('file.csv');
    for(
    $i $i count($arrayFile) ; $i++){

      
    $riga explode(';' $arrayFile[$i]);

      
    $codiceProdotto  $riga[1];//questo è il codice univoco del prodotto

     
    $eseguo mysql_query('SELECT * FROM my_table WHERE codiceprodotto_db = '".$codiceProdotto."'");
    $conto = mysql_num_rows($eseguo);

    if ($conto == 1 ){
    //aggiorno
    }else{
    //inserisco
    }


    una roba del genere

  7. #7
    Ho fatto come mi hai consigliato tu, solo che ho provato ad inserire un solo dato nel file csv e però mi stampa la parola inserisco anche se il dato è presente all'interno del db

    Codice PHP:
    $arrayFile file('file_new.csv'); 
    for(
    $i $i count($arrayFile) ; $i++){ 

      
    $riga explode(';' $arrayFile[$i]); 

      
    $codiceProdotto  $riga[0];//questo è il codice univoco del prodotto 

    $eseguo mysql_query("SELECT * FROM shop_prodotti WHERE articolo = $codiceProdotto"); 
    $conto mysql_num_rows($eseguo); 

    echo 
    $codiceProdotto ;

    if (
    $conto == ){ 
    echo 
    "aggiorno";
    }else{ 
    echo 
    "inserisco";



  8. #8
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    dipende se il valore del file è uguale a quello del db...

    fatti stampare il valore che restituisce la query ...

    nella query devi mettere un codice univoco ... altrimenti potresti avere piu di una riga

  9. #9
    No no gli articoli sono unici, essendo cmq un catalogo di prodotti, mi da questo messaggio

    Resource id #6

  10. #10
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    quella è una risorsa ...

    mysql_num_rows($eseguo) ti dovrebbe restituire il numero di record tirati su ...


    questo invece :
    $eseguo = mysql_query("SELECT * FROM shop_prodotti WHERE articolo = $codiceProdotto");
    ti restituisce una risorsa

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.