Avatar billede morpheus Nybegynder
04. marts 2007 - 00:54 Der er 1 løsning

Fortsæt, selvom der ikke er fundet data

Hej,

Jeg er igang med at bygge et lille faktureringssystem... Men det har voldet mig lidt problemer.

Jeg er nu kommet til et sted, hvor jeg skal have en liste over alle domænerne ud, selvom der kun er skrevet en faktura på enkelte af domænerne.

Koden:

// Vi skifter til DK navne i måneder
mysql_query("SET lc_time_names = 'da_DK'");
// Array bestående af domæner der ikke skal have faktura i dette system
$notInSystem = array('lamour-webshop.dk','qubix.dk','looni.dk','l-amour.dk','byenserotikshop.dk','byens-erotikshop.dk','thomas.e-cms.dk','techsite.dk','bsd-box.dk','test.dk','dansite.dk');
// Hent domæner fra PSA
$getDomainsQuery = mysql_query("SELECT id,cr_date,name,cl_id,p_type,p_pay FROM psa.domains WHERE name NOT IN ('". implode("','", $notInSystem) ."')",$link0) or die (mysql_error());
print "<table border=\"1\" cellpadding=\"6\" cellspacing=\"0\" class=\"importTable\">";
print "<tr>";
print "<th>Oprettet</th>";
print "<th>Dom&aelig;ne</th>";
print "<th>Klient ID</th>";
print "<th>Produkt</th>";
print "<th>Betalingsperiode</th>";
print "<th>Senest faktureret</th>";
print "<th>Forfaldsdato</th>";
print "<th>N&aelig;ste faktura</th>";
print "</tr>";
while ($getDomainsRow = mysql_fetch_array($getDomainsQuery, MYSQL_ASSOC)) {
    // Find forbindelsen til klienten
    $getClientQuery = mysql_query("SELECT cname,pname FROM psa.clients WHERE id = ".$getDomainsRow['cl_id']."",$link0) or die(mysql_error());
    $getClientRow = mysql_fetch_array($getClientQuery, MYSQL_ASSOC);
    // Find produktet til domænet
    $getProductsQuery = mysql_query("SELECT p_name FROM pleskcrm.products_dansite WHERE p_type_id = ".$getDomainsRow['p_type']."",$link1);
    $getProductsRow = mysql_fetch_array($getProductsQuery, MYSQL_ASSOC);
    // Find det højeste ID der passer til klienten i fakturaerne
    $findNewestInvoice = mysql_fetch_array(mysql_query("SELECT MAX(id) as NewestInvoiceID FROM pleskcrm.invoices WHERE cl_id = ".$getDomainsRow['cl_id']." GROUP BY cl_id", $link1), MYSQL_ASSOC) or die(mysql_error());
    // Find div info omkring fakturering
    $getInvoiceInfoQuery = mysql_query("SELECT invoiceDate, DATE_FORMAT(DATE_ADD(invoiceDate, INTERVAL 8 DAY), '%e. %M %Y') AS duePay, DATE_ADD(invoiceDate, INTERVAL paymentTerm MONTH) as nextInvoice FROM pleskcrm.invoices WHERE id = ".$findNewestInvoice['NewestInvoiceID']." GROUP BY cl_id", $link1) or die(mysql_error());
    $getInvoiceInfoRow = mysql_fetch_array($getInvoiceInfoQuery, MYSQL_ASSOC) or die(mysql_error());
    print "<tr>";
    print "<td>".$getDomainsRow['cr_date']."</td>";
    print "<td>".$getDomainsRow['name']."</td>";
    print empty($getClientRow['cname']) ? "<td>".$getClientRow['pname']."(".$getDomainsRow['cl_id'].")</td>" : "<td>".$getClientRow['cname']."(".$getDomainsRow['cl_id'].")</td>";
    print empty($getDomainsRow['p_type']) ? "<td>&nbsp;</td>" : "<td>".$getProductsRow['p_name']."</td>";
    print "<td>".$getDomainsRow['p_pay']."</td>";
    print "<td>&nbsp;</td>";
    print "<td>".$getInvoiceInfoRow['duePay']."</td>";
    print "<td>&nbsp;</td>";
    print "</tr>";
}
print "</table>";

Det skete at efter jeg lavede udtrækket omkring fakturering "// Find div info omkring fakturering", at jeg kun fik de domæner ud, der var data på omkring fakturering - her skulle listen jo gerne fortsætte..
Avatar billede morpheus Nybegynder
04. marts 2007 - 01:40 #1
Knækkede nøden:

mysql_query("SET lc_time_names = 'da_DK'");
function invoiceInfo($invoiceID, $what = null) {
    global $link1;
    switch ($what) {
        case null : return null;       
            break;
        case 'invoiceDate' :     $invoiceDate = mysql_fetch_array(mysql_query("SELECT invoiceDate FROM pleskcrm.invoices WHERE id =". $invoiceID."",$link1), MYSQL_ASSOC) or die(mysql_error());
                                return $invoiceDate['invoiceDate'];
            break;
        case 'duePay' :         $duePay = mysql_fetch_array(mysql_query("SELECT DATE_FORMAT(DATE_ADD(invoiceDate, INTERVAL 8 DAY), '%e. %M %Y') AS duePay FROM pleskcrm.invoices WHERE id = ".$invoiceID."",$link1), MYSQL_ASSOC);
                                return $duePay['duePay'];
            break;
        case 'nextInvoice' :     $nextInvoice = mysql_fetch_array(mysql_query("SELECT DATE_FORMAT(DATE_ADD(invoiceDate, INTERVAL paymentTerm MONTH), '%e. %M %Y') AS nextInvoice FROM pleskcrm.invoices WHERE id = ".$invoiceID."",$link1), MYSQL_ASSOC);
                                return $nextInvoice['nextInvoice'];
            break;
        default: return null;
            break;
    }
   
}
// Array bestående af domæner der ikke skal have faktura i dette system
$notInSystem = array('lamour-webshop.dk','qubix.dk','looni.dk','l-amour.dk','byenserotikshop.dk','byens-erotikshop.dk','thomas.e-cms.dk','techsite.dk','bsd-box.dk','test.dk','dansite.dk');
// Hent domæner fra PSA
$getDomainsQuery = mysql_query("SELECT id,cr_date,name,cl_id,p_type,p_pay FROM psa.domains WHERE name NOT IN ('". implode("','", $notInSystem) ."')",$link0) or die (mysql_error());
print "<table border=\"1\" cellpadding=\"6\" cellspacing=\"0\" class=\"importTable\">";
print "<tr>";
print "<th>Oprettet</th>";
print "<th>Dom&aelig;ne</th>";
print "<th>Klient ID</th>";
print "<th>Produkt</th>";
print "<th>Betalingsperiode</th>";
print "<th>Senest faktureret</th>";
print "<th>Forfaldsdato</th>";
print "<th>N&aelig;ste faktura</th>";
print "</tr>";
while ($getDomainsRow = mysql_fetch_array($getDomainsQuery, MYSQL_ASSOC)) {
    // Find forbindelsen til klienten
    $getClientQuery = mysql_query("SELECT cname,pname FROM psa.clients WHERE id = ".$getDomainsRow['cl_id']."",$link0) or die(mysql_error());
    $getClientRow = mysql_fetch_array($getClientQuery, MYSQL_ASSOC);
    // Find produktet til domænet
    $getProductsQuery = mysql_query("SELECT p_name FROM pleskcrm.products_dansite WHERE p_type_id = ".$getDomainsRow['p_type']."",$link1);
    $getProductsRow = mysql_fetch_array($getProductsQuery, MYSQL_ASSOC);
    // Find det højeste ID der passer til klienten i fakturaerne
    // Find div info omkring fakturering
    $findNewestInvoiceQuery = mysql_query("SELECT MAX(id) as NewestInvoiceID FROM pleskcrm.invoices WHERE cl_id = ".$getDomainsRow['cl_id']." GROUP BY cl_id", $link1);
    //$getInvoiceInfoQuery = mysql_query("SELECT invoiceDate, DATE_FORMAT(DATE_ADD(invoiceDate, INTERVAL 8 DAY), '%e. %M %Y') AS duePay, DATE_ADD(invoiceDate, INTERVAL paymentTerm MONTH) as nextInvoice FROM pleskcrm.invoices WHERE id = ".$findNewestInvoice['NewestInvoiceID']." GROUP BY cl_id", $link1) or die(mysql_error());
    //$getInvoiceInfoRow = mysql_fetch_array($getInvoiceInfoQuery, MYSQL_ASSOC) or die(mysql_error());
    print "<tr>";
    print "<td>".$getDomainsRow['cr_date']."</td>";
    print "<td>".$getDomainsRow['name']."</td>";
    print empty($getClientRow['cname']) ? "<td>".$getClientRow['pname']."(".$getDomainsRow['cl_id'].")</td>" : "<td>".$getClientRow['cname']."(".$getDomainsRow['cl_id'].")</td>";
    print empty($getDomainsRow['p_type']) ? "<td>&nbsp;</td>" : "<td>".$getProductsRow['p_name']."</td>";
    print "<td>".$getDomainsRow['p_pay']."</td>";
    print "<td>&nbsp;</td>";

    if (mysql_num_rows($findNewestInvoiceQuery)) {
        $findNewestInvoiceRow = mysql_fetch_array($findNewestInvoiceQuery, MYSQL_ASSOC);
        print "<td>".invoiceInfo($findNewestInvoiceRow['NewestInvoiceID'], 'nextInvoice')."</td>";
    } else {
        print "<td>&nbsp;</td>";
    }
    print "<td>&nbsp;</td>";
    print "</tr>";
}
print "</table>";

mysql_num_rows var svaret. Samtidig fik jeg lige lavet en lille funktion
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester