Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 26

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Questo tuo codice funziona se le due tabelle sono "uguali" cioè hanno lo stesso numero di righe e i record sono nello stesso ordine.
    Verifica che ciò. Ad esempio fai due inserimenti e poi modifica l'ultimo: se nella tabella b hai i due record inseriti (il secondo dovebbe avere i vecchi valori) nello stesso ordine allora non dovresti aver problemi

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    24
    Si infatti le due tabelle sono uguali, hanno gli stessi campi con gli stessi nomi ma ancora non riesco a capire come far per ovviare al problema della condizione "se il record è nuovo, non colorare nessun campo"<<<-invece lui me li colora tutti
    Sto provando con alcuni if ma ancora nn ci sono riuscito

  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Si, ma il record nuovo si trova anche sull altra tabella ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    24
    ah no. Il record nuovo va su TabellaA. Solo e se si modifica un campo di un qualsiasi record già inserito in tabellaA, viene creata una copia di backup dell'intero record originale nella tab ellaB.

    Nuovorecord--->TabellaA
    ModificaCampoXRecordId12---->TabellaB(record senza modifica) ---> TabellaA (record con campo modificato)

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    quindi se ci pensi, il tuo codice è errato...pensa ad una situazione del genere, in cui il record 2 non è stato mai modificato:
    codice:
    TabA   TabB
    1        1
    2        3
    3
    Quando fai :
    codice:
    while($arr=mysql_fetch_array($result1)) { 
        $arr2=mysql_fetch_array($result2)  ?>
    Il primo passo va bene. Nel secondo vai a confrontare il record 2 con la copia del 3 (sbagliato) ed infine il 3 con null (in realtà dovresti avere un errore, visto che le tabelle hanno dimensioni diverse).
    Allora, o copi lo stesso il record in B quando fai l'inserimento, oppure puoi fare una cosa del genere:

    Codice PHP:
    <?php
    $query2
    " SELECT * FROM tabella2 ";
    $result2=mysql_query($query2) or die (mysql_error());
    $olds = [];
    while(
    $row mysql_fetch_assoc($result2)){
        
    $olds[$row['id']] = $row;
    }

    while(
    $arr=mysql_fetch_array($result1)) {
        
    $idd = (isset($olds[$arr['id']]) && $arr['id'] != $olds[$arr['id']]['id']) ?
                  
    'red' 'normal'?>
        <td width='5'> <?php echo $idd ?></td>
        <td width='5'> <?php echo $arr['owner'?> </td>
        <?php $cod = (isset($olds[$arr['id']]) && $arr['cod_mat'] != $olds[$arr['id']]['cod_mat']) ?
                        
    'red' 'normal'?>
        <td width='5'> <?php echo $cod ?></td>
        etc...
    }
    Ultima modifica di boots; 04-11-2016 a 19:52

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    24
    Niente. Solite scritte tutte rosse.
    Ma secondo te può essere dovuto dal fatto che in tabellaB vanno riscritti tutti i record modificati ogni qualvolta si modifica un campo?

    TabellaA TabellaB
    id1-2,3,4,5 id1-3,4,5,6
    id1-3,4,5,7
    id1-4,4,5,7
    id2-1,1,1,1 id2-1,1,1,2
    id2-2,1,1,2
    ----
    Nel senso che nella tabellaB ci sono più record con lo stesso ID ma con valori dei campi diversi.

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Aspetta...la cosa mi sembra più complicata del previsto

    Come è fatta questa tabella B ? l'id di B corrisponde a quello di A, oppure hai usato un altro campo per fare l'associazione?

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    24
    TabellaA TabellaB
    id id
    campo1 campo1
    campo2 campo2
    ....
    campoN campoN

    stessissima tabella con nomi uguali per i campi. Solo che nella tabella2 l'id non è Chiave ma viene inserito manualmente(appunto per creare doppioni dello stesso record se di questi si modificano più campi)

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Allora il codice che ti ho postato dovrebbe funzionare (se la select ti da i record in ordine di insermento).

    Posta quello che hai fatto

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    24
    Questo è il codice che ho inserito nella mia pagina

    <?php
    $query1= " SELECT * FROM foglio1 ORDER BY id";
    $result1=mysql_query($query1) or die (mysql_error());
    $query2= " SELECT * FROM mod_foglio1 ";
    $result2=mysql_query($query2) or die (mysql_error());
    $olds = [];
    while($arr2 = mysql_fetch_assoc($result2)){
    $olds[$arr2['id']] = $arr2;
    }


    while($arr=mysql_fetch_array($result1)) {
    $idd = (isset($olds[$arr['id']]) && $arr['id'] != $olds[$arr['id']]['id']) ?
    '<font color="red">'.$arr['id'].'</b>' : $arr['id']; ?>
    <td width='5'> <?php echo $idd ?></td>
    <td width='5'> <?php echo $arr['owner'] ?> </td>
    <?php $cod = ($arr['cod_mat'] == $arr2['cod_mat']) ? '<font color="red">'.$arr['cod_mat'].'</b>' : $arr['descriz']; ?>
    <td width='5'> <?php echo $cod ?></td>
    .......
    }

    Risultato: id in nero;cod_mat nero e tutti gli altri campi in rosso.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.