Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 31

Discussione: Trasformare codice js in jQuery

  1. #1
    Guest

    Predefinito Trasformare codice js in jQuery

    Ho un codice js che è un po' lungo, volevo sapere se esiste un metodo (anche online) che inserendo il js lo trasforma in jQuery.

    Codice HTML:
    <script>
    function GetCookie (name) {  
    var arg = name + "=";  
    var alen = arg.length;  
    var clen = document.cookie.length;  
    var i = 0;  
    while (i < clen) {
    var j = i + alen;    
    if (document.cookie.substring(i, j) == arg)      
    return getCookieVal (j);    
    i = document.cookie.indexOf(" ", i) + 1;    
    if (i == 0) break;   
    }  
    return null;
    }
    function SetCookie (name, value) {  
    var argv = SetCookie.arguments;  
    var argc = SetCookie.arguments.length;  
    var expires = (argc > 2) ? argv[2] : null;  
    var path = (argc > 3) ? argv[3] : null;  
    var domain = (argc > 4) ? argv[4] : null;  
    var secure = (argc > 5) ? argv[5] : false;  
    document.cookie = name + "=" + escape (value) + 
    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
    ((path == null) ? "" : ("; path=" + path)) +  
    ((domain == null) ? "" : ("; domain=" + domain)) +    
    ((secure == true) ? "; secure" : "");
    }
    function DeleteCookie (name) {  
    var exp = new Date();  
    exp.setTime (exp.getTime() - 1);   
    var cval = GetCookie (name);  
    document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
    }
    var expDays = 30;
    var exp = new Date(); 
    exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
    
    // Modificare il nome del cookie per ogni articolo
    function amt(){
    var count = GetCookie('count3')
    if(count == null) {
    SetCookie('count3','1')
    return 1
    }
    else {
    var newcount = parseInt(count) + 1;
    DeleteCookie('count3')
    SetCookie('count3',newcount,exp)
    return count
       }
    }
    function getCookieVal(offset) {
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1)
    endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
    }
    document.write("<span style=\"color:#cc0000\">"+ amt() +"</span>");
    </script>

  2. #2
    Guest

    Predefinito

    JQuery è scritto in Javascript, quindi non penso si possa...

  3. #3
    Guest

    Predefinito

    A me interessa trasformarlo in jQuery perché diventerà più corto.

    Non ho capito dopo quanto scade il cookie, come faccio a renderlo permanente?
    Ultima modifica di photoman : 19-05-2016 alle ore 20.42.14

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Citazione Originalmente inviato da photoman Visualizza messaggio
    A me interessa trasformarlo in jQuery perché diventerà più corto.
    Metti tutte le tue funzioni dentro un file esterno e includilo come fai con jQuery. Ti verrà corto anche il tuo codice.

    Citazione Originalmente inviato da photoman Visualizza messaggio
    Non ho capito dopo quanto scade il cookie, come faccio a renderlo permanente?
    Sei obbligato ad impostare una data di scadenza, anche di anni.

    Ciao!

  5. #5
    Guest

    Predefinito

    Sei obbligato ad impostare una data di scadenza, anche di anni.
    Per impostare 100 anni.

    Ho notato che la parte funzione che viene richiamata è questa

    Codice HTML:
    function amt(){
    var count = GetCookie('count3')
    if(count == null) {
    SetCookie('count3','1')
    return 1
    }
    else {
    var newcount = parseInt(count) + 1;
    DeleteCookie('count3')
    SetCookie('count3',newcount,exp)
    return count
       }
    }
    Ammesso che abbia 2 funzioni uguali da richiamare nella stessa pagina, come le modifico senza farle entrare in conflitto senza dover modificare il nome del cookie?
    Ultima modifica di photoman : 19-05-2016 alle ore 21.48.28

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ammesso che abbia 2 funzioni uguali da richiamare nella stessa pagina, come le modifico senza farle entrare in conflitto senza dover modificare il nome del cookie?
    In generale:
    • dai loro nomi diversi: se fanno cose (anche solo leggermente) diverse, è naturale che si chiamino diversamente
    • rendile parametriche, se possibile con parametri impliciti: quando una può essere vista come caso particolare dell'altra, ad esempio una funzione setCookie che non imposta una durata è un caso particolare di una che la imposta

    Nel codice che hai mostrato nel primo messaggio, la funzione setCookie è già parametrica. Se le passi un terzo parametro lo usa per impostare la scadenza del cookie.

  7. #7
    Guest

    Predefinito

    Non ho capito molto bene.In ogni funzione ho cambiato i nomi in modo che si distinguono, difatti i contatori che ho in ogni pagina conteggiano a sé. In pratica ho aggiunto un numero diverso per ognuna:

    Codice HTML:
    function amt1() {
    var count = GetCookie('count1')
    if(count == null) {
    SetCookie('count1','1')
    return 1
    }
    else {
    var newcount = parseInt(count) + 1;
    DeleteCookie('count1')
    SetCookie('count1',newcount,exp)
    return count
       }
    }
    Io le devo richiamare anche in un'altra pagina, ed è questo il problema: siccome in questa pagina le devo richiamare tutte, se clicco su un link, sale il contatore di tutte, qui non conteggiano in modo indipendente, es:

    Codice HTML:
    <a href="pagina1.php">Link1</a>
    <span class="letto">Letto <script>document.write("<span class=\"number\">"+ amt1() +"</span>");</script> volte</span>
    </div>
    <a href="pagina2.php">Link2</a>
    <span class="letto">Letto <script>document.write("<span class=\"number\">"+ amt2() +"</span>");</script> volte</span>
    </div>
    <a href="pagina3.php">Link3</a>
    <span class="letto">Letto <script>document.write("<span class=\"number\">"+ amt3() +"</span>");</script> volte</span>
    </div>
    -Altra cosa: ho notato che se apro le pagine con browser diversi il numero dei conteggi nelle pagine cambia a seconda dei browser, presumo perché non ci sia un database. Come posso mettere un file .txt che funge da database?
    Ultima modifica di photoman : 20-05-2016 alle ore 11.11.47

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La funzione che avevi prima andava bene: già catturava i comportamenti delle attuali amt1, amt2... amtn (ed è meglio averne una sola...).

    È naturale che con browser diversi (così come con lo stesso browser una volta cancellati i cookie) siano mostrati valori diversi, tali valori sono memorizzati nel client.
    Esattamente, cosa vuoi ottenere? Se è una sorta di contatore visite che ti serve, non puoi ottenerlo con JavScript (poiché non offre persistenza dei dati lato server), ti servono piuttosto PHP e una base di dati.

  9. #9
    Guest

    Predefinito

    La funzione che avevi prima andava bene: già catturava i comportamenti delle attuali amt1, amt2... amtn (ed è meglio averne una sola...).
    Ho dovuto modificare anche il nome dei cookie (ho aggiunto il numero) altrimenti nelle pagine non calcolavano in modo indipendente.

    Esattamente, cosa vuoi ottenere? Se è una sorta di contatore visite che ti serve, non puoi ottenerlo con JavScript (poiché non offre persistenza dei dati lato server), ti servono piuttosto PHP e una base di dati.
    Io l'avrei messo in php, difatti ho fatto molti tentativi, ma il mio forum phpbb ha una struttura che non me lo permette. Addirittura avevo anche creato una tabella nel db, ma non funziona.

    Perciò ho optato per js o jQuery. Ora a me serve un file.txt che funge da database in modo che le visite si memorizzano lì e tutti i browser segnano uguale.

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Non ho esperienza con phpBB, ma temo non ci sia modo di realizzare un contatore persistente in JavaScript (o qualunque suo derivato, come jQuery), poiché esso non offre meccanismi di persistenza per motivi di sicurezza.

    Hai cercato plugin/estensioni per phpBB (ammesso che ce ne siano e siano installabili)?
    L'unica alternativa è PHP...

  11. #11
    Guest

    Predefinito

    In questo mio caso, non è necessario conoscere phpbb, è una questione di normale programmazione, questi sono miei articoli che ho inserito nel forum in modo indipendente, questi articoli devono stare esclusivamente in file .html non li posso creare in php (lavorano però assieme ad un file php), percui non entrano nel db di phpbb. Non è proprio possibile creare creare un db in formato .txt? A me sembra di averlo visto ancora. Oppure creare un piccolo db indipendente in php

    Per farti capire meglio, per ogni articolo ho 2 file, uno in php e l'altro in html (con nomi diversi ovviamente):

    file a-istinti-del-body.php
    Codice PHP:
    <?php
    define
    ('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include(
    $phpbb_root_path . 'common.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    page_header('L’istinto del corpo verso il cibo'); // Questo è ciò che apparirà come frase principale nel motore di ricerca

    $template->set_filenames(array(
    'body' => 'a-istinti-del-body.html', // Questo file si trova nella cartella template
    ));

    make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
    page_footer();
    ?>
    che richiama il file a-istinti-del-body.html
    Ultima modifica di photoman : 20-05-2016 alle ore 15.20.00

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Javscript può salvare dei dati nella memoria del browser (e quindi cambiando browser cambieranno i dati) nei cookie o nel web storage.

    Al più puoi inviare una richiesta ajax ad una pagina PHP che si preoccuperà di incrementare il contatore visite.

    Citazione Originalmente inviato da photoman Visualizza messaggio
    Oppure creare un piccolo db indipendente in php
    Puoi usare sqlite.

    Ciao!

  13. #13
    Guest

    Predefinito

    Aspetto mzanella

  14. #14
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Lusingato , ma alemoppo ha già dato un'ottima risposta.

  15. #15
    Guest

    Predefinito

    Ho inserito questo //Contavisite ho trovato un articolo in rete e sto vedendo di mettere una tabella funzionale nel database http://www.codicefacile.it/tutorials...i_in_PHP-MySQL

    Codice PHP:
    <?php
    define
    ('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include(
    $phpbb_root_path . 'common.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    page_header('L’istinto del corpo verso il cibo'); // Questo è ciò che apparirà come frase principale nel motore di ricerca

    $template->set_filenames(array(
    'body' => 'a-istinti-del-body.html', // Questo file si trova nella cartella template
    ));

    make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));

    //Contavisite

    // identificativo numerico della pagina
    $pagina = 1;

    // connessione al database MySQL
    mysql_connect("localhost", "root", "root", "benessereforum");

    //---connessione----------------------------------------------------
    $connessione = mysql_connect(localhost,root,root);
    if (!
    $connessione) {
    die (
    'Non riesco a connettermi: ' . mysql_error());
    }

    //---e selezione del db----------------------------------------------------
    $db = mysql_select_db(benessereforum, $connessione);
    if (!
    $db) {
    die (
    "Errore nella selezione del database: " . mysql_error());
    }

    // numero di visite attuali
    $res = mysql_query("UPDATE phpbb_contatore SET visite = visite + 1 WHERE pagina = $pagina");
    if (!
    mysql_num_rows($res)) {
    // Inserisce i dati nel db
    mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)");
    }

    // Estrae i dati dal DB
    $res = mysql_query("SELECT visite FROM phpbb_contatore WHERE pagina = $pagina");
    $visite = mysql_fetch_assoc($res);
    echo
    "La pagina è stata visitata ".$visite['visite']." volte";

    page_footer();
    ?>
    Mi da questo errore

    [phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 62: mysql_num_rows() expects parameter 1 to be resource, boolean given
    Ultima modifica di photoman : 21-05-2016 alle ore 09.41.59

  16. #16
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Mi da questo errore

    [phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 62: mysql_num_rows() expects parameter 1 to be resource, boolean given
    Significa che $res, che dovrebbe contenere il risultato della query, contiene invece un booleano. In altri termini, la query è fallita.
    Per sapere cosa è andato storto, aggiungi questo dopo la query, prima del controllo su mysql_num_rows:
    Codice PHP:
    if (!$res) {
    echo
    "[Error] " . mysql_error();
    }
    In questo modo verrà stampato un messaggio che indica che errore si è verificato.

  17. #17
    Guest

    Predefinito

    Un po' l'ho sistemato, inserisce i dati nel db e li mostra colorati (nell'angolo alto a sinistra del monitor) fuori dal template. Non riesco a farlo entrare nella pagina.




    Ora non da più errore e conteggia giusto, è così:

    Codice HTML:
    // Aggiorna il contatore  
    mysql_query("UPDATE phpbb_contatore SET visite = visite + 1 WHERE pagina = $pagina"); 
    
    // Inserisce i dati nel db
    mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)");

    Codice PHP:
    <?php
    define
    ('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include(
    $phpbb_root_path . 'common.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    page_header('L’istinto del corpo verso il cibo'); // Questo è ciò che apparirà come frase principale nel motore di ricerca

    $template->set_filenames(array(
    'body' => 'a-istinti-del-body.html', // Questo file si trova nella cartella template
    ));

    make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));

    //Contavisite, connessione al database
    $link = mysql_connect('localhost', 'root', 'root');
    if (!
    $link) {
    die (
    'Non riesco a connettermi: ' . mysql_error());
    }
    $db_selected = mysql_select_db('benessereforum', $link);
    if (!
    $db_selected) {
    die (
    "Errore nella selezione del database: " . mysql_error());
    }

    // Identificativo numerico della pagina
    $pagina = 1;

    // Aggiorna il contatore
    mysql_query("UPDATE phpbb_contatore SET visite = visite + 1 WHERE pagina = $pagina");

    // Inserisce i dati nel db
    mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)");

    // Estrae i dati dal DB
    $res = mysql_query("SELECT visite FROM phpbb_contatore WHERE pagina = $pagina");
    $visite = mysql_fetch_assoc($res);
    echo
    "<span class=\"letto\">Letto <span class=\"number\">".$visite['visite']."</span> volte</span>";
    page_footer();
    ?>
    Ultima modifica di photoman : 21-05-2016 alle ore 23.55.12

  18. #18
    Guest

    Predefinito

    Ho quasi risolto del tutto, ho creato una variabile php che ho poi richiamato nel file HTML

    Codice PHP:
    // Crea la variabile-echo che viene poi richiamata nel file HTML
    $template->assign_vars(array(
    'conta_visite1' => $visite['visite'],
    ));
    File HTML
    Codice HTML:
    <!-- Contavisite, richiama la variabile del file php -->
    <span class="letto">Letto <span class="number">{conta_visite1}</span> volte</span>
    Il richiamo l'ho messo anche in un'altra pagina esterna ma non lo richiama

    - Come vedi nel db stampa consecutivamente i click nella colonna visite, mi sembra un incolonnamento inutile. Come posso fare per far aggiornare solo il numero precedente? Es: se prima era 1 ora diventa 2, ecc.

    Ultima modifica di photoman : 22-05-2016 alle ore 15.52.33

  19. #19
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Il richiamo l'ho messo anche in un'altra pagina esterna ma non lo richiama
    Mostra il codice di questa pagina esterna, la parte in cui passi la variabile.

    Come posso fare per far aggiornare solo il numero precedente? Es: se prima era 1 ora diventa 2, ecc.
    Al momento stai creando una nuova riga ad ogni visita. Questo frammento va sostituito
    Codice PHP:
    // Aggiorna il contatore
    mysql_query("UPDATE phpbb_contatore SET visite = visite + 1 WHERE pagina = $pagina");

    // Inserisce i dati nel db
    mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)");
    in questo modo:
    Codice PHP:
    // Aggiorna il contatore
    mysql_query("UPDATE phpbb_contatore SET visite = visite + 1 WHERE pagina = $pagina");

    // Nessuna riga con pagina = $pagina: inserisce i dati nel db
    if (mysql_affected_rows() == 0) {
    mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)");
    }

  20. #20
    Guest

    Predefinito

    Ok, a posto l'update.

    Mostra il codice di questa pagina esterna, la parte in cui passi la variabile.
    Come vedi ho messo gli stessi richiami che ho nella pagina

    Codice PHP:
    <div class="articolo1"><a class="linksX" href="a-istinti-del-body.php"><img class="rasize" src="styles/prosilver/template/Articoli/articoliSmall/imgSmall/istintoX.jpg" alt="istinti" title="">L’istinto del corpo verso il cibo</a>
    <
    span class="letto">Letto <span class="number">{conta_visite1}</span> volte</span>
    </
    div>
    <
    div class="articolo2"><a class="linksX" href="a-libero.php"><img class="rasize" src="styles/prosilver/template/Articoli/articoliSmall/imgSmall/liberoX.jpg" alt="libero" title="">Cosa si intende per Libertà? Libero DI o libero DA?</a>
    <
    span class="letto">Letto <span class="number">{conta_visite2}</span> volte</span>
    </
    div>
    <
    div class="articolo3"><a class="linksX" href="a-bugia.php"><img class="rasize" src="styles/prosilver/template/Articoli/articoliSmall/imgSmall/bugiaX.jpg" alt="bugia" title="">La stanchezza deriva davvero dall'assenza di cibo?</a>
    <span class="letto">Letto <span class="number">{conta_visite3}</span> volte</span>
    </div>

  21. #21
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Come vedi ho messo gli stessi richiami che ho nella pagina
    E nel PHP le variabili sono assegnate correttamente al template?

  22. #22
    Guest

    Predefinito

    Si, perché nelle pagine singole stampa giusto.

    - Come mai che mi accetta solo numeri? $pagina = 1;
    Nel db ho varchar (50) utf8_bin

    Codice PHP:
    // Identificativo numerico della pagina
    $pagina = 1;

    // Aggiorna il contatore
    mysql_query("UPDATE phpbb_contatore SET visite = visite+ 1 WHERE pagina = $pagina");

    // Inserisce i dati nel db e sovrascrive il numero-visite precedente
    if (mysql_affected_rows() == 0) {
    mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)");
    }

    // Estrae i dati dal DB
    $res = mysql_query("SELECT visite FROM phpbb_contatore WHERE pagina = $pagina");
    $visite = mysql_fetch_assoc($res);

    // Crea la variabile-echo che viene poi richiamata nel file HTML
    $template->assign_vars(array(
    'conta_visite1' => $visite['visite'],
    ));
    Ultima modifica di photoman : 23-05-2016 alle ore 01.08.22

  23. #23
    Guest

    Predefinito

    Ho quasi sistemato tutto, ora il counter si vede dappertutto.

    - Poi come ultima cosa vorrei impedire che quando clicco io, conteggi. Però qui dovrebbe bloccare il mio id utente.

    Codice PHP:
    $pagina = 25;
    // Aggiorna il contatore
    mysql_query("UPDATE phpbb_contatore SET visite = visite WHERE pagina = $pagina");

    // Inserisce i dati nel db e sovrascrive il numero-visite precedente
    if (mysql_affected_rows() == 0) {
    mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 0)");
    }

    // Estrae i dati dal DB
    $res = mysql_query("SELECT visite FROM phpbb_contatore WHERE pagina = $pagina");
    $visite = mysql_fetch_assoc($res);

    // Crea la variabile-echo che viene poi richiamata nel file HTML
    $template->assign_vars(array(
    'conta_visite25' => $visite['visite'],
    Ultima modifica di photoman : 24-05-2016 alle ore 00.11.34

  24. #24
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    - Poi come ultima cosa vorrei impedire che quando clicco io, conteggi. Però qui dovrebbe bloccare il mio id utente.
    Supponendo che il tuo id utente sia "42", e che tu abbia recuperato l'id dell'utente corrente in una variabile $user_id:
    Codice PHP:
    if ($user_id != 42) {
    mysql_query("UPDATE phpbb_contatore SET visite = visite WHERE pagina = $pagina");

    // Inserisce i dati nel db e sovrascrive il numero-visite precedente
    if (mysql_affected_rows() == 0) {
    mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 0)");
    }
    }

  25. #25
    Guest

    Predefinito

    Con phpBB, l'ID utente si recupera facilmente entrando nel Profilo Utente, è il numero che appare nella parte finale dell'URL viewprofile&u=75

    Sono riuscito a bloccare i conteggi quando clicco io. PhpBB permette di creare pagine personalizzate, ma per inserire o modificare codici in queste pagine bisogna seguire una procedura particolare che non è il normale metodo di programmazione.

    Nel mio caso per bloccare il mio ID ai click ho fatto così:

    Codice PHP:
    if($user->data['user_id'] <> 75 ) {
    // Aggiorna il contatore
    mysql_query("UPDATE phpbb_contatore SET visite = visite+ 1 WHERE pagina = $pagina");
    }
    Non riesco a capire perché accetta solo valori numerici

    Codice PHP:
    // Identificativo numerico della pagina
    $pagina = 24;
    ...
    Ultima modifica di photoman : 25-05-2016 alle ore 00.58.35

  26. #26
    Guest

    Predefinito

    Ora va meglio ma mi da errori

    phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 32: mysqli_query() expects at least 2 parameters, 1 given
    [phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 37: mysqli_query() expects at least 2 parameters, 1 given
    [phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 41: mysqli_query() expects at least 2 parameters, 1 given


    Codice PHP:
    //Contavisite, connessione al db tramite i parametri in config.php
    $link = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
    if (!
    $link) {
    die (
    "Non riesco a connettermi:" . mysqli_error());
    }

    // Identificativo della pagina
    $pagina = "'a-istinti-del-body'";

    // il 314 è l'ID admin (il mio) da non calcolare nel conteggio
    if($user->data['user_id'] <> 314 ) {
    // Aggiorna il contatore
    mysqli_query("UPDATE phpbb_contatore SET visite = visite+ 1 WHERE pagina like $pagina"); <-------- 32
    }

    // Inserisce i dati nel db LA PRIMA VOLTA e mette "1" o "0" se clicco io
    if($user->data['user_id'] <> 314 ) {
    mysqli_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)"); <------------- 37
    }

    // Estrae i dati dal DB
    mysqli_query("SELECT visite FROM phpbb_contatore WHERE pagina like $pagina"); <--------------------- 41

    if ( $tot_visite['visite'] == 1) {
    $volte = "volta";
    }
    else {
    $volte = "volte";
    }

    // Crea la variabile-echo che viene poi richiamata nel template e nel file articoliX.html
    $template->assign_vars(array(
    'CONTA_VISITE1' => "<span class=\"letto\">Letto </span><span class=\"number\">". $tot_visite['visite'] ."</span> <span class=\"letto\">". $volte ."</span>",
    ));

  27. #27
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Devi passare anche $link quando interroghi la base di dati con mysqli_query:
    Codice PHP:
    mysqli_query("UPDATE phpbb_contatore SET visite = visite+ 1 WHERE pagina like $pagina", $link);

    mysqli_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)", $link);

    mysqli_query("SELECT visite FROM phpbb_contatore WHERE pagina like $pagina", $link);
    Quando hai dubbi di questo genere, dai un'occhiata alla documentazione di PHP: mysqli_query. È pià veloce che aspettare qualcuno qui sul forum .

  28. #28
    Guest

    Predefinito

    Mi da questi errori:

    phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 33: mysqli_query() expects parameter 1 to be mysqli, string given
    [phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 39: mysqli_query() expects parameter 1 to be mysqli, string given
    [phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 44: mysqli_query() expects parameter 1 to be mysqli, string given


    Se però metto così non errore ma non inserisce i dati nel db

    Codice PHP:
    mysqli_query($link,"UPDATE phpbb_contatore SET visite = visite+ 1 WHERE pagina like $pagina");

    mysqli_query($link,"INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)");

    mysqli_query($link,"SELECT visite FROM phpbb_contatore WHERE pagina like $pagina");

  29. #29
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Se però metto così non errore ma non inserisce i dati nel db
    Sì, nella fretta avevo sbagliato io invertendo l'ordine dei parametri .

    Il problema è solo nell'inserimento, o anche nell'aggiornamento con update?
    Prova a controllare la presenza di errori durante la query:
    Codice PHP:
    $result = mysqli_query($link, "INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)");
    if (
    $result === false) {
    echo
    "Errore: " . mysqli_error($link));
    }

  30. #30
    Guest

    Predefinito

    Nel frattempo ho fatto delle modifiche, questa è la tabella, come vedi il numero visite_tot è corretto, ma negli altri campi ne inserisce uno in meno (il primo click non lo inserisce), ho fatto 4 click come ospite.



    - Come puoi vedere dal mio sito, non inserisce il contatore nelle immagini-link in fondo, nel file ovviamente c'è lo stesso echo che ho nella pagina {CONTA_VISITE1}

    Ho creato un include per ogni file php così modifico solo il file esterno.

    Questo è il nuovo codice

    Codice PHP:
    <?php
    //Contavisite, connessione al db tramite i parametri in config.php
    $link = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
    if (!
    $link) {
    die (
    "Non riesco a connettermi:" . mysqli_error());
    }

    // Aggiorna il contatore
    if($user->data['user_id'] <> 314 ) { // il 314 è l'ID admin (il mio), non viene conteggiato
    if ($user->data['user_id'] == 1 ) { // Conteggia solo gli Utenti Registrati e gli Ospiti
    mysqli_query($link,"UPDATE phpbb_contatore SET visite_tot = visite_tot + 1, visite_ospiti = visite_ospiti + 1 WHERE pagina = $pagina");
    } else {
    // Aggiorna il contatore generale e quello degli Utenti Registrati
    mysqli_query($link,"UPDATE phpbb_contatore SET visite_tot = visite_tot + 1, visite_users = visite_users + 1 WHERE pagina = $pagina");
    }
    }

    // Inserisce i dati nel db LA PRIMA VOLTA e mette "1" o "0" se clicco io
    if($user->data['user_id'] <> 314 ) {
    mysqli_query($link,"INSERT INTO phpbb_contatore (pagina, visite_tot) VALUES ($pagina, 1)");
    } else {
    mysqli_query($link,"INSERT INTO phpbb_contatore (pagina, visite_tot) VALUES ($pagina, 0)");
    }

    // Estrae i dati dal DB
    $res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE pagina like $pagina");
    $tot_visite = mysqli_fetch_assoc($res);

    if (
    $tot_visite['visite_tot'] == 1) {
    $volte = "volta";
    }
    else {
    $volte = "volte";
    }
    Ultima modifica di photoman : 03-06-2016 alle ore 00.02.27

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •