• User Attivo

    Controllo numero su campo mysql di 2 tabelle diverse

    Salve ragazzi..un piccolo quesito

    con un if vorrei controllare nel campo:
    idfattura della tabella vendite
    se esite un numero uguale nel campo:
    id della tabella fatture

    la connessione alle 2 tabella la eseguo cosi:

    [php]
    $tab1 = mysql_query("select id from fatture") or die ("la query sulla tab1 nn va");

    $tab2 = mysql_query("select idfattura FROM vendite ") or die ("la query sulla tab2 nn va");

    for ( $i=0; ;$i++ ) {
    $array = mysql_fetch_array($tab1);
    $array2 = mysql_fetch_array($tab2);

    if ( $array[id] == NULL )
    break;

    // ********* QUI non so cosa devo fare
    if($array2[non so cosa fare]==0)echo "esiste";
    else echo "non esiste";

    [/php]
    ...grazie anticipatamente a tutti..ciao


  • User

    Ciao, io farei fare tutto a mysql con una query di questo tipo:

    [PHP]
    SELECT
    fatture.id, vendite.idfattura
    FROM
    fatture, vendite
    WHERE
    vendite.idfattura = fatture.id
    [/PHP]


  • User Attivo

    ok..ma poi un if di controllo se il dato esiste o meno come lo creo?


  • User

    Devi solo controllare se ci sono dati nel risultato della tua query:

    [PHP]
    $query = //la tua query
    $result = mysql_query($query, $db) or die (mysql_error($db));
    if (mysql_num_rows($result) > 0) {
    // istruzioni da eseguire se ho trovato almeno una corrispondenza
    }
    [/PHP]


  • User Attivo

    non ci riesco in quanto primo non sono un guru del php e poi la cosa è un pochino + complessa...credo......del tipo che ovviamente le due tabella non sono uguali se non per l'id e quindi per la prima che è questa io stampo a video un tabella con tutti i risultati:

    [PHP]
    $obj->connessione();
    $tab1 = mysql_query("select fattura,datapagamento,rif_data_scad_importo_1,rif_data_scad_importo_2,rif_data_scad_importo_3,rif_data_scad_importo_4,pagato,id,dataemissione,progressivo,idpagamento,idcliente from fatture where SUBSTRING(dataemissione,7,10)='$array2[annoemissione]' order by progressivo desc") or die ("la query sulla tab1 nn va");

    echo "<td>".$array[id]."</td>";
    echo "<td>".$array[fattura]."</td>";
    echo "<td>".$array[datapagamento]."</td>";
    ......eccc

    [/PHP]

    con la seconda ricerca nella tabella vendita se mi trovo un id identico alla tabella fatture volevo creare un cambio immagine del colore campo in questo modo:

    [PHP]
    if($array[id]==1)echo "<td><img src="images/1.png" border=0></td>";
    else echo "<td ><img src="images/2.png" border=0></td>";

    [/PHP]

    ..spero di essere stato un pochino + chiaro.....grazie cmq per il precedente..ciao


  • User

    Sono ancora in alto mare in quanto non riesco a capire cosa intendi fare esattamente.

    Dunque,
    con la prima select ti trovi un elenco di fatture;
    con la seconda vai ad interrogare una tabella di vendite.

    Che risultato devi ottenere?
    Tirare fuori tutte le vendite con idfattura identico all'id della ricerca precedente?
    Tirare fuori tutte le vendite a prescindere e distinguere le righe di vendita secondo il confronto precedente?


  • User Attivo

    allora....

    ho una tabella fatture con:
    id, campo2, campo3, campo4..ecc

    poi un'altra tabella vendite con:
    id, campo2, campo3 campo4..ecc

    NB: le 2 tabelle anno solo id come campo uguale i restanti sono diversi per nome e quantità.

    Poi ho una bella paginetta che mi mostra tutto l'elenco delle fatture, dati presi dalla tabella fatture usando questa query:
    [PHP]
    $tab1 = mysql_query("select id,fattura,datapagamento,pagato,dataemissione,progressivo,idpagamento,idcliente from fatture );
    [/PHP]

    a questo punto con un link sull'elenco di ogni fattura vado a fare un INSERT nella tabella vendite dove vado ad inserire solo parziali (e ovviamente anche l'id della fattura) dati della fattura che serviranno per avere una situazione contabile.

    Ora volevo far si che nella paginetta dell'elenco fatture se ho gia inserito una vendita (che ovviamente ha lo stesso id) il link che menzionavo prima con un if cambiava immagine....e quindi mi dava visivamente informazione che la fatture è già stata inserita nella contabile....ossia nella tabella vendite.

    Quindi credo che in questa famigerata paginetta occorra una query sulla tabella vendite che controlla anche sulla tabella fatture la corrispondenza dello stesso id.

    Al momento sto provando con questo:

    [PHP]
    $obj->connessione();
    $tab1 = mysql_query("select fattura,datapagamento,rif_data_scad_importo_1,rif_data_scad_importo_2,rif_data_scad_importo_3,rif_data_scad_importo_4,pagato,id,dataemissione,progressivo,idpagamento,idcliente from fatture where SUBSTRING(dataemissione,7,10)='$array2[annoemissione]' order by progressivo desc") or die ("la query sulla tab1 nn va");

    $tab2 = mysql_query("SELECT fatture.id, vendite.id FROM fatture, vendite WHERE vendite.id = fatture.id order by vendite.id desc");

    for ( $i=0; ;$i++ ) {
    $array = mysql_fetch_array($tab1);
    $array3 = mysql_fetch_array($tab2);

    if ( $array[id] == NULL )
    break;

    if($array[progressivo]==0) echo "<tr bgcolor="#FFDC63">";
    else echo "<tr>";
    echo "<td class="textDisplay1">".$array3[id]."</td>";
    if($array[progressivo]==0) echo "<td align="center"class="textDisplay1"><strong>PRE</strong></td>";
    else echo "<td align="center"class="textDisplay1">".$array[progressivo]."</td>";
    echo "<td class="textDisplay1">".cliente($array[idcliente])."</td>";
    echo "<td class="textDisplay1">".$array[dataemissione]."</td>";
    if($array[rif_data_scad_importo_1]==$array[dataemissione]) echo "<td align="center" class="textDisplay1">-</td>";
    else echo "<td align="center" class="textDisplay2">
    <table width="100%" border="0" cellspacing="3" cellpadding="0">
    <tr>
    <td bgcolor="#FFFF99" align="center"><span class="tabred">".$array[rif_data_scad_importo_1]."</span></td>
    <td bgcolor="#CCFFFF" align="center"><span class="tabred">".$array[rif_data_scad_importo_2]."</span></td>
    </tr>
    <tr>
    <td bgcolor="#D6FFC1" align="center"><span class="tabred">".$array[rif_data_scad_importo_3]."</span></td>
    <td bgcolor="#FFCCFF" align="center"><span class="tabred">".$array[rif_data_scad_importo_4]."</span></td>
    </tr>
    </table>
    </td>";
    if($array[pagato]==1)echo "<td align="center" class="textDisplay1"><a href="mod_data_pagamento.php?id=$array[id]">".$array[datapagamento]."</a></td>";
    else echo "<td align="center" class="textDisplay1"><a href="mod_data_pagamento.php?id=$array[id]"><img src="images/no_pagato.png" border=0></a></td>";

    if($array[progressivo]==0) echo"<td align="center" class="textDisplay1"><a href="pdf/crea_pdf/fattura_non_valida_ellepi.php?id=$array[id]" target="_blank"><img src="images/pdf_out.png" border=0></a></td>";
    else echo"
    <td align="right" class="textDisplay1"> € ".$fattura=number_format($array[fattura], 2, ',', '.')." </td>
    ";

    if($array3[id]>0)
    echo"<td align="center" class="textDisplay1"><a href="vendita_add.php?id=$array[id]"><img src="images/acquisti_pic.png" border=0></a></td>";
    else echo"<td align="center" class="textDisplay1"><a href="vendita_add.php?id=$array[id]"><img src="images/no_pagato.png" border=0></a></td>";

    if($array[progressivo]==0) echo"<td align="center" class="textDisplay1"><a href="pdf/crea_pdf/fattura.php?id=$array[id]" target="_blank"><img src="images/pdf.png" border=0></a></td>";
    else echo"<td align="center" class="textDisplay1"><a href="pdf/crea_pdf/fattura.php?id=$array[id]" target="_blank"><img src="images/pdf.png" border=0></a></td>";

    if($array[progressivo]==0) echo"<td align="center" class="textDisplay1"><a href="vedi_prefattura.php?id=$array[id]"><img src="images/seleziona.png" border=0></a></td>";
    else echo"<td align="center" class="textDisplay1"><a href="vedi_fattura.php?id=$array[id]"><img src="images/seleziona.png" border=0></a></td>";

    if($array[progressivo]==0) echo"<td align="center" class="textDisplay1"><a href="mod_prefattura.php?id=$array[id]"><img src="images/reload.png" border=0></a></td>";
    else echo"<td align="center" class="textDisplay1"><a href="mod_fattura.php?id=$array[id]"><img src="images/tools.png" border=0></a></td>";

    echo"<td align="center" class="textDisplay1"><a href="sel_fatture.php?id=$array[id]&op=del" onclick="return(confirm('Sei sicuro di voler cancellare??'))"><img src="images/cancella.png" border=0></a></td>";
    echo "</tr>";

    }
    [/PHP]

    ...e funziona solo per il fatto che mi tira fuori l'id della tabella vendita in questa riga:
    [PHP]
    echo "<td class="textDisplay1">".$array3[id]."</td>";
    [/PHP]

    ma non riesco ad associarla nella riga rispettiva della fattura a quale corrisponde uguale id, ossia in questo punto:
    [PHP]
    if($array3[id]>0)
    echo"<td align="center" class="textDisplay1"><a href="vendita_add.php?id=$array[id]"><img src="images/acquisti_pic.png" border=0></a></td>";
    else echo"<td align="center" class="textDisplay1"><a href="vendita_add.php?id=$array[id]"><img src="images/no_pagato.png" border=0></a></td>";
    [/PHP]

    ....non so se saro riuscito ad essre chiaro...ma almeno avremmo fatto del nostro meglio:fumato:


  • User

    Forse ho capito.

    A questo punto mi sa che ti convenga interrogare la tabella delle vendite, solo per controllare che ce ne sia almeno una corrispondente all'id della fattura che stai stampando a video, all'interno del tuo ciclo for.

    [PHP]
    $query = "SELECT * FROM vendite WHERE id = ". $array[id];
    $result = mysql_query($query, $db) or die (mysql_error($db));
    if (mysql_num_rows($result) > 0) {
    // istruzioni da eseguire se ho trovato almeno una corrispondenza
    // che penso sia questa
    echo"<td align="center" class="textDisplay1"><a href="vendita_add.php?id=$array[id]"><img src="images/acquisti_pic.png" border=0></a></td>";
    }
    else {
    // istruzioni da eseguire se non ho trovato almeno una corrispondenza
    // che penso sia questa
    echo"<td align="center" class="textDisplay1"><a href="vendita_add.php?id=$array[id]"><img src="images/no_pagato.png" border=0></a></td>";
    }
    [/PHP]

    Spero che la strada giusta sia questa.
    Ciao


  • User Attivo

    si bravo anche cosi funziona....ma instanto nella notte ho elaborato questa:

    [PHP]
    <?
    function corrispondente($id){
    $obj=new sast1com();
    $obj->connessione();
    $dati=mysql_query("select idfattura from vendite where idfattura='$id'");
    while($array=mysql_fetch_array($dati)){
    return $array[idfattura];
    }
    }
    ?>
    [/PHP]

    e poi nella tabella questa:

    [PHP]
    if(corrispondente($array[id])==0)
    echo"<td align="center" class="textDisplay1"><a href="vendita_add.php?id=$array[id]"><img src="images/insert_vendita.png" border=0></a></td>";
    else echo"<td align="center" class="textDisplay1"><img src="images/acquisti_pic.png" border=0></td>";
    [/PHP]

    ed il tutto sembra funzionare.....ma ora sto testando la tua xchè mi aiuta anche in altre cose.

    grazie mille..ciaoo