• User

    allora visto la mia poca esperienza... da quanto ho capito questo script prende i file da un file access? o sbaglio? comunque vi posto il codice sotto:
    [php]<?php
    }
    else
    {
    $cat = "______";
    while (!$rs->EOF)
    {
    $nRiga++;
    $class = "";

            if ($rs->fields["ID_categoria"] != $cat)
            {
              $nRiga = 1;
              $cat = $rs->fields["ID_categoria"];
            ?>
            
        <p><font color="#FF0000"><strong>:: 
          <?= $rs->fields["categoria"] ?>
          </strong></font><br>
          <br>
          <?
            }
            if ($rs->fields["data"]."" != "0000-00-00 00:00:00")
              $data = $rs->fields["data"];
            else
              $data = "-";
        ?>
          <img src="imgs/pdf-icon.gif" width="16" height="16"> <a href="getProduct.php?i=<?= $rs->fields["ID_file"] ?>&check1=<?= md5($rs->fields["ID_file"]) ?>&check2=<?= md5($rs->fields["titolo"]) ?>">
          <?= $rs->fields["titolo"] ?>
          </a><br>
          <br>
          <?php
            $rs->MoveNext();
          }
        }
        ?>[/php]perchè la variabile WHERE non c'è io ho provato a leggermi qualcosa tipo:
    

    http://forum.html.it/forum/showthread.php?s=&threadid=439411&perpage=15&highlight=&pagenumber=1
    http://php.html.it/articoli/leggi/857/paginazione-di-dati/1/
    ma non saprei come fare ad aplicarli perchè non riesco a capire come richiama la tabello questo script...


  • User Attivo

    Come da regolamento ho dovuto eliminare i link attivi:

    5.0. NON sono graditi link attivi specialmente a siti propri (salvo nelle Aree Annunci), anche quando approfondiscono l'argomento in modo unico ed originale.
    In questi casi è consigliato riportare l'Url della risorsa **NON attivo.**Detto ciò, veniamo a noi: il codice che hai riportato nel post precedente è diverso da quello riportato nel post di apertura... nel post precedente utilizzi le classi: cerca nei file richiamati all'inizio dello script (con i comandi include o require😞 probabilmente le query le trovi lì.

    Se sei poco avvezzo al php la modifica di una classe potrebbe risultarti un po' complicata, perché non provi a scegliere un'altra strada?

    Ad esempio perché non entri nel merito del perché modificare il paging?
    :ciauz:


  • User

    Prima cosa Mi scuso per i link diretti.. 🙂
    Comunque per me sbattere la testa è una cosa mi aiuta molto e poi pratica in tutto...:vaiii:
    Però il paging bisogna farlo perchè diventerebbe una pagina troppo lunga dopo un pò di tempo con gli aggiornamenti...
    tornando a noi i due codici che ho postato son attaccati nella pagina production.php
    in includes.php
    [PHP]<?
    ///
    header("Content-type: text/html; charset=iso-8859-1");
    //error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    error_reporting(E_ERROR | E_WARNING | E_PARSE );
    ini_set ("display_errors", "1");
    //
    /

    require_once($_SERVER["DOCUMENT_ROOT"].'/include/parametri_globali.php');
    require_once(DOCUMENT_ROOT.'include/functions.php');
    require_once(DOCUMENT_ROOT.'include/class.phpmailer/class.phpmailer.php');
    require_once(DOCUMENT_ROOT.'include/markdown.php');
    require_once(DOCUMENT_ROOT.'private/common/funzioni_comuni.php');
    require_once(DOCUMENT_ROOT.'private/common/adodb/adodb.inc.php');
    require_once(DOCUMENT_ROOT.'private/common/class_form_validation.php');

    // Apro la connessione
    $db = ADONewConnection('mysql'); # eg. 'mysql' or 'oci8'
    $db->Connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    $db->SetFetchMode(ADODB_FETCH_ASSOC);
    ?>[/PHP]
    c'è questo....


  • User Attivo

    Comunque per me sbattere la testa è una cosa mi aiuta molto
    Non posso che straquotarti ed elogiarti per l'affermazione. Credo sia l'unico modo di imparare per bene un linguaggio di programmazione.

    Detto ciò, prova ad inserire tra le righe in rosso quella in verde:

    ON NE.ID_categoria = NC.ID_categoria
    WHERE NE.ID_categoria=1

    **ORDER BY categoria, data DESC ";

    **ovviamente al posto di 1 metti una categoria che sei sicuro esista. Prova anche delle varianti analoghe: quello che cerchi, in prima battuta, è un elenco ridotto alla sola categoria 1.


  • User

    Quindi inserendo:**
    WHERE NE.ID_categoria=x
    **pubblchiamo solo la categoria selezionata?

    Ho provato mettendo numeri o scheda_1 (ci sono 10 categorie in archivio) ma mi viene questo errore:

    Fatal error: Call to a member function RecordCount() on a non-object in /products.php on line **82

    **ora ho chiesto i dati per entrare nel pannello di contro dell'hosting per vedere nel db come li cataloga...


  • User Attivo

    pubblchiamo solo la categoria selezionata?In teoria si... ovviamente senza gli estremi del problema, dare una soluzione esatta è difficile.
    Cosa c'è alla riga 82 di products.php?


  • User

    [php] if ( $rs->RecordCount() == 0 [/php]alla riga 82 di products.php c'è questo....


  • User Attivo

    Prova a postare com'è fatto il database e un record di dati, vediamo di venirne a capo...:D


  • User

    Ok ho avuto quello che volevo:

    -- 
    -- Struttura della tabella `files_categorie`
    -- 
    
    CREATE TABLE `files_categorie` (
      `ID_categoria` int(10) NOT NULL auto_increment,
      `categoria` varchar(150) NOT NULL default '',
      `in_homepage` tinyint(1) default '1',
      PRIMARY KEY  (`ID_categoria`)
    ) ENGINE=MyISAM AUTO_INCREMENT=19 DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;
    
    -- 
    -- Dump dei dati per la tabella `files_categorie`
    -- 
    
    INSERT INTO `files_categorie` (`ID_categoria`, `categoria`, `in_homepage`) VALUES (9, 'Dairy foodstuff', 1),
    (10, 'Sweets', 1),
    (11, 'Canned foodstuff', 1),
    (12, 'Pasta & Rice', 1),
    (13, 'Vegetables & Seafood in oil', 1),
    (14, 'Coffee & Coffee machines', 1),
    (15, 'Truffles', 1),
    (16, 'Fruits', 1),
    (17, 'Pork Salami range', 1),
    (18, 'Balsamic vinegar', 1);
    
    ```quindi si parte da 9 ? mmm... ma in hompage son tutte 1? :o

  • User Attivo

    in_homepage ha il sapore di un flag... la selezione la devi effettuare sul campo ID_categoria. Prova a mettere:

    WHERE NE.ID_categoria=9


    sperando di ottenere Dairy foodstuff.


  • User

    ehh no ho già provato a mettere i numeri dal 9 in su... :mmm:


  • User Attivo

    e cosa ti restituisce mettendo 9?


  • User
    Fatal error:  Call to a member function RecordCount() on a non-object in /products.php on line 82
    ``` sempre questo

  • User Attivo

    Leggendo la query nel primissimo post di questo thred, si può notare che i file pdf sono archiviati nella tabella files mentre in files_categorie c'è il tipo di file associato ad ogni categoria.

    Pertanto sarebbe utile vedere un record di files non di files_categorie...
    :ciauz:


  • User

    Allora dopo aver divorato una guida sulla programmazione php e dopo aver letto tutti gli script per fare il paging da una lista file dal db mysql ho cercato in tutti i modi ma ne sono venuto a capo solo staticamente...
    ho incluso la clausola LIMIT e ho creato una seconda pagina products.php
    ovvero:
    nella pagina products.php ci sarà questo:
    [php] $sql = "SELECT *
    FROM files NE
    LEFT JOIN files_categorie NC
    ON NE.ID_categoria = NC.ID_categoria
    ORDER BY categoria, data DESC
    LIMIT 0, 9";[/php]e nella pagina products2.php ci sarà questo:
    [php] $sql = "SELECT *
    FROM files NE
    LEFT JOIN files_categorie NC
    ON NE.ID_categoria = NC.ID_categoria
    ORDER BY categoria, data DESC
    LIMIT 10, 18";[/php]e inserido i link manualmente a fondo lista.
    Però ormai è una questione personale implementare il paging a questo script❌x❌x❌x
    Intanto ti lascio questo per la tabella files:

    CREATE TABLE `files` (
      `ID_file` int(10) unsigned NOT NULL auto_increment,
      `titolo` varchar(150) collate latin1_bin NOT NULL default '',
      `descrizione` text collate latin1_bin,
      `slug` varchar(150) collate latin1_bin default NULL,
      `data` date default NULL,
      `ID_categoria` int(10) NOT NULL default '0',
      `nome_file_effettivo` varchar(200) collate latin1_bin NOT NULL default '',
      `nome_file` varchar(200) collate latin1_bin NOT NULL default '',
      PRIMARY KEY  (`ID_file`)
    ) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=latin1 COLLATE=latin1_bin AUTO_INCREMENT=31 ;
    
    -- 
    -- Dump dei dati per la tabella `files`
    -- 
    
    INSERT INTO `files` (`ID_file`, `titolo`, `descrizione`, `slug`, `data`, `ID_categoria`, `nome_file_effettivo`, `nome_file`) VALUES (14, 0x224c6174204272692220636865657365, '', 0x5f4c61745f4272695f5f636865657365, '2007-09-07', 9, 0x4c61745f4272695f6269732e32303037313030325f3137333130352e706466, 0x4c617420427269206269732e706466),
    
    ```Giuro che se dovessi farlo da zero riuscire ad occhi chiusi :lol:ma implementarlo a questo strano e ripeto strano script mi stà risultando un pò difficile :cry: (contando la mia poca esperienza) in futuro mi ricorderò di questa situazione...:D

  • User Attivo

    Cosa contiene il controllo if che inizia alla riga 82?

    lasciando
    WHERE NE.ID_categoria=9
    prova a commentarlo/eliminarlo del tutto!

    Giuro che se dovessi farlo da zero riuscire ad occhi chiusi :ehehq:ma implementarlo a questo strano e ripeto strano script mi stà risultando un pò difficile 😢 (contando la mia poca esperienza) in futuro mi ricorderò di questa situazione...:D

    E' un classico, mettere le mani su script complessi fatti da altri è notoriamente moooolto più difficile... :bho:
    ...ma più istruttivo!


  • User

    82 if ( $rs->RecordCount() == 0 )

    Ho certo questa funzione da tutte le parti da quanto ho capito e letto che "restituisce, all?interno di una variabile intera, il numero di record presenti in una tabella."
    quindi non posso cencellarlo.. e se provo a mettere:
    **WHERE NE.ID_categoria=9
    **mi dà errore...

    Fatal error: Call to a member function RecordCount() on a non-object in /products.php on line **82
    ❌x❌x
    **


  • User Attivo

    la dovresti avere all'interno dei file inclusi:

    function RecordCount()

    comunque ti chiedevo di eliminare tutto il cilco if

    if ( $rs->RecordCount() == 0 )

    e riga/righe seguenti e vedere cosa restituisce


  • User

    Parse error: parse error, unexpected T_ELSE in /products.php on line **87

    **se elimino tutto il ciclo if e aggiungo la clausola **WHERE NE.ID_categoria=9
    **viene l'errore scritto sopra...

    [php]85 <?php
    86 }
    87 else
    88 {
    89 $cat = "______";
    90 while (!$rs->EOF)
    91 {
    92 $nRiga++;
    93 $class = "";
    94
    95 if ($rs->fields["ID_categoria"] != $cat)
    96 {
    97 $nRiga = 1;
    98 $cat = $rs->fields["ID_categoria"];
    99 ?>[/php]

    comunque **RecordCount **non c'è nel file includes.php che l'unico file incluso...