Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    differenza fra due array

    Buongiorno dopo vari test ho deciso di chiedere il vostro aiuto.

    Ho due tabelle che devono essere messe a confronto.

    In una tabella DATI io ho ABCD (valore che ovviamente può cambiare e che si riferisce a dei dati che un amministratore va a caricare), in un'altra tabella UTENTE ho ACD (sono i dati della precedente tabella associati ad un cliente, anche questi possono cambiare).

    Quello che vorrei fare è far scrivere a schermo A = esiste B= checkbox da selezionare C=esiste
    D= esiste.

    Quindi vorrei che tutti i dati non presenti fossero accompagnati da una checkbox, ovviamente devono essere ordinati in ordine alfabetico.


    Quello che io ho fatto non è altro che creare due cicli while che estraggono i dati dalle due tabelle

    WHILE PER PRIMA TABELLA UTENTE

    <?php
    $sqlquerypdfpres = "SELECT * FROM utente WHERE idutente='$idclienteins'";
    $resultpdfpres = mysql_query($sqlquerypdfpres);
    $numberpdfpres = mysql_numrows($resultpdfpres);


    $ipres = 0;
    if ($numberpdfpres < 1) {
    print "<center><p>Nessuna associazione trovata</p></center>";
    }else{
    while ($numberpdfpres > $ipres) {
    $thenamepdfpres = mysql_result($resultpdfpres,$ipres,"nomepdf");
    $lenco=array($thenamepdfpres);


    $ipres++;
    }
    }
    ?>




    WHILE PER LA SECONDA TABELLA DATI ovviamente è quella con più dati, o meglio o le tabelle hanno il solito contenuto oppure questa è quella che ha più dati.


    <?php
    $sqlquerypdf = "SELECT * FROM dati";
    $resultpdf = mysql_query($sqlquerypdf);
    $numberpdf = mysql_numrows($resultpdf);


    $i = 0;
    if ($numberpdf < 1) {
    print "<center><p>La ricerca non ha prodotto nessun risultato</p></center>";
    }else{
    while ($numberpdf > $i) {
    $thenamepdf = mysql_result($resultpdf,$i,"FILE_NAME");
    $idpdf = mysql_result($resultpdf,$i,"id");


    $elencomancante=array($thenamepdf);


    Quì ho provato a fare la diffenza, ma senza successo perchè mi estrapola solamente l'ultimo dato

    $differenza=array_diff($elencomancante,$lenco);

    foreach( $differenza as $valore)
    {





    echo $valore."<br />";
    }

    $i++;
    }
    }




    ?>



    COME POSSO RISOLVERE? GRAZIE IN ANTICIPO.
    eccomiiiiiiii

  2. #2
    Ho provato a fare così, tenete presente che potete anche non guardare il codice di prima, questo perchè il presente è un test

    CON QUESTO associo all'array l'estrazione della prima tabella


    <?php


    $ress = mysql_query ("SELECT utente FROM utente ") or die(mysql_error());
    $temps=array();
    if (mysql_num_rows($ress) != 0){
    while ($rows=mysql_fetch_assoc($ress))
    $temps[]=$rows;
    } else
    echo "No Records!";
    foreach($temps as $valoris){
    foreach($valoris as $valores){
    echo $valores." ";
    }
    echo "
    \n";
    }






    ?>




    CON QUESTO ASSOCIO LA SECONDA TABELLA


    <?php



    $res = mysql_query ("SELECT FILE_NAME FROM dati") or die(mysql_error());
    $temp=array();
    if (mysql_num_rows($res) != 0){
    while ($row=mysql_fetch_assoc($res))
    $temp[]=$row;
    } else
    echo "No Records!";
    foreach($temp as $valori){
    foreach($valori as $valore){

    echo $valore." ------<br>";
    echo $valores." ";
    }
    echo "
    \n";
    }


    ?>






    COME FACCIO A FARE LA DIFFERENZA FRA LA PRIMA ARRAY E LA SECONDA, cioè fra $valore e $valores
    il loro risultati al termine del ciclo li vedo, ma non capisco come fare, le ho provate tutte


    così

    $differenza=array_diff($valore,$valores);
    foreach( $differenza as $valoreddddd)
    {





    echo $valoreddddd."<br />";
    }


    ma non riesco a tirare fuori niente
    eccomiiiiiiii

  3. #3
    Quindi vorrei che tutti i dati non presenti fossero accompagnati da una checkbox, ovviamente devono essere ordinati in ordine alfabetico.
    Facci capire cosa cerchi in queste tabelle.. vediamo se ho capito: tu stai cercando tutti i dati della tabella ACD che non hanno la checkbox spuntata nella tabella ABCD ?

  4. #4
    Quello che vorrei cercare di fare è confrontare i nomi di un campo tra due tabelle A e B e vedere cosa manca nella tabella B rispetto alla tabella A, e stampare a video NOM1 = esiste NOME2= checkbox da checckare.

    Tieni presente che nella seconda tabella devono essere selezionati i record con id=quello che gli passo
    Ultima modifica di lorenzofranc; 05-03-2014 a 16:19
    eccomiiiiiiii

  5. #5
    Quote Originariamente inviata da lorenzofranc Visualizza il messaggio
    Quello che vorrei cercare di fare è confrontare i nomi di un campo tra due tabelle A e B e vedere cosa manca nella tabella B rispetto alla tabella A, e stampare a video NOM1 = esiste NOME2= checkbox da checckare
    Nell'ipotesi che gli elementi della colonna nomi di B sia un sottoinsieme della colonna nomi di A:
    La procedura sarà:
    Query per estrarre la colona dei nomi dalla tabella A
    Riempi un array con i risultati della query (Array A)
    Query per estrarre la colona dei nomi dalla tabella B
    Riempi un array con i risultati della query (Array B)

    Esegui la differenza Array A - Array B
    codice:
    $differenza=array_diff(Array A, Array B);
    $differenza è un array che contiene gli elementi di A che non sono contenuti in B ovvero quello che manca in B rispetto ad A

    Restituisci a video il tutto:
    per ogni elemento che c'è nell'array $differenza mostri la checkbox
    per ogni elemento che è contenuto in A ma non in $ differenza mostri la scritta esiste ( puoi fare un'altra differenza per ottenere questo array o fare un test.. ci sono diverse vie)

    P.S lorenzofranc... quando inserisci il codice mettilo tra i tag è molto più leggibile.
    Ultima modifica di W Thunderbird; 05-03-2014 a 16:27

  6. #6
    Ops scusami.

    Io ho cercato di fare quello che dici, ma non riesco a tirar fuori la differenza
    eccomiiiiiiii

  7. #7
    Dimenticavo che nella seconda devo anche prendere un determinato id
    Ultima modifica di lorenzofranc; 05-03-2014 a 16:41
    eccomiiiiiiii

  8. #8
    Aggiungi la colonna id alla query:
    codice:
     SELECT FILE_NAME, id FROM dati
    Attenzione che poi il risultato sarà un array di array..
    una cosa del tipo:
    codice:
     
    Array(
    nome1, id1;
    nome2, id2;
    ...
    );
    quindi un array bidimensionale.

    P.S. Per visualizzare a video il contenuto e la descrizione delle variabili puoi ricorrere al codice
    codice:
     var_dump(VARIABILE INTERESSATA)
    Ultima modifica di W Thunderbird; 05-03-2014 a 16:53

  9. #9
    OK L?ID L?HO MESSO E TUTTO OK MA IL PROBLEMA RESTA IL SOLITO:


    WHILE PER PRIMA TABELLA UTENTE

    <?php
    $sqlquerypdfpres = "SELECT * FROM utente WHERE idutente='$idclienteins'";
    $resultpdfpres = mysql_query($sqlquerypdfpres);
    $numberpdfpres = mysql_numrows($resultpdfpres);


    $ipres = 0;
    if ($numberpdfpres < 1) {
    print "<center><p>Nessuna associazione trovata</p></center>";
    }else{
    while ($numberpdfpres > $ipres) {
    $thenamepdfpres = mysql_result($resultpdfpres,$ipres,"nomepdf");
    $lenco=array($thenamepdfpres);


    $ipres++;
    }
    }
    ?>

    E questo è il While per la seconda

    <?php



    $res = mysql_query ("SELECT FILE_NAME FROM dati") or die(mysql_error());
    $temp=array();
    if (mysql_num_rows($res) != 0){
    while ($row=mysql_fetch_assoc($res))
    $temp[]=$row;
    } else
    echo "No Records!";
    foreach($temp as $valori){
    foreach($valori as $valore){

    echo $valore." ------<br>";
    echo $valores." ";
    }
    echo "
    \n";
    }


    ?>
    Non riesco a fare la differenza
    Ultima modifica di lorenzofranc; 05-03-2014 a 17:00
    eccomiiiiiiii

  10. #10
    <?php
    $sqlquerypdfpres = "SELECT * FROM utente WHERE idutente='$idclienteins'";
    $resultpdfpres = mysql_query($sqlquerypdfpres);
    $numberpdfpres = mysql_numrows($resultpdfpres);


    $ipres = 0;
    if ($numberpdfpres < 1) {
    print "<center><p>Nessuna associazione trovata</p></center>";
    }else{
    while ($numberpdfpres > $ipres) {
    $thenamepdfpres = mysql_result($resultpdfpres,$ipres,"nomepdf");
    $lenco=array($thenamepdfpres);


    $ipres++;
    }
    }
    ?>
    La variabile $lenco.. forse.. elenco ?.. alla fine non è un array.. o meglio alla fine di tutto il ciclo sarà un array contenente un singolo valore, l'ultimo del ciclo.
    Forse è per questo che non riesci a fare la differenza..
    per aggiungere elementi ad un array in un ciclo devi fare così:
    codice:
    $array[INDICE, SE IN UN CICLO LA VARIABILE DI ITERAZIONE]= QUELLO CHE VUOI INSERIRE, VARIABILE O ARRAY
    Questi cicli fanno tutt'altro rispetto a quello che chiedevi. Perchè non implementi la procedura che ti ho descritto ?
    Ultima modifica di W Thunderbird; 05-03-2014 a 17:38

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