Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Contatore php

  1. #1

    Contatore php

    Salve a tutti, ho bisogno di una mano.
    Sto scrivendo il codice per un contatore visite in php utilizzando un database mySql su un dominio Aruba.
    Innanzitutto ho creato in uno dei cinque database una tabella 'contatore' e ho inserito due campi

    'pagina' int(4) not null
    'visite' int(10) not null con valore predefinito 0

    poi ho realizzato i codici php.
    Il file con i dati di accesso al database

    dati.php

    Codice PHP:
    <?php
    $dbhost 
    "aruba_db_host";
    $dbname "nome_stabase";
    $dbuser "database_user";
    $dbpasswd "database_password";
    ?>
    e poi il file per il conteggio delle visite

    contatore.php

    Codice PHP:
    <?php
    require("dati.php");

    $pagina 1;

    mysql_connect("$dbhost","$dbuser$","$dbpasswd");
    mysql_select_db("$dbname");

    $res mysql_query("UPDATE contatore SET visite = visite + 1 WHERE pagina = $pagina"); 
    if (!
    mysql_num_rows($res)){ 
    mysql_query("INSERT INTO contatore (pagina, visite) VALUES ($pagina, 1)");
    }


    $res mysql_query("SELECT visite FROM contatore WHERE pagina = $pagina");
    $visite mysql_fetch_assoc($res);
    echo 
    "La pagina  stata visitata ".$visite['visite']." volte";  
    ?>
    Ho quindi uploadato i due file nella cartella 'public' sul mio dominio su aruba, ma quando carico il file contatore.php l'unica cosa che appare è

    'La pagina stata visitata volte'

    e per di più il campo 'visite' nel database non si incrementa.
    Qualcuno sa dirmi cosa sbaglio?
    Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    Prova con la mysql_affected_rows([resource link_identifier]) qui :

    Codice PHP:
    if (!mysql_num_rows($res)){
    mysql_query("INSERT INTO contatore (pagina, visite) VALUES ($pagina, 1)");

    quindi


    Codice PHP:
    if (mysql_affected_rows($res) == 0){
    mysql_query("INSERT INTO contatore (pagina, visite) VALUES ($pagina, 1)");

    La num_rows ha senso fatta su una SELECT non su un UPDATE.
    Formalmente ti restituisce il numero di linee risultanti appunto da quella specifica SELECT.

    Dato che tu prima fai un UPDATE ha poco senso controllare dopo con un num_rows, per questo utilizzi la "affected_rows" ossia quante righe sono state UPDATATE.

    In questo caso si ha senso , nel caso non sia stata updatata nessuna, fare un INSERT della pagina con il valore visite a 1.

    Prova cosí e fammi sapere.

  3. #3
    Siccome non sono molto esperto non ho capito se devo SOSTITUIRE il tuo if a quello che ho messo io oppure metterlo dopo.
    comunque ho provato entrambe le cose e ancora non va.

    'La pagina stata visitata volte'

    e il database è fermo...
    potrebbe essere un problema di permessi o roba simile? Ma nella cartella public su Aruba dovrebbe andare bene no?

    grazie

  4. #4
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    Metti gli "or die(mysql_error())" quando ti connetti almeno se c'è un errore di connessione lo vedi.

  5. #5
    sei gentilissimo DydBoy ma purtroppo io sono un caprone con php. sto facendo tutto a mezzo tutorial e non sono capace di mettere quello che tu mi dici. Quindi ti chiedo: se hai voglia di postarmi il codice modificato correttamente te ne sarei grado. Se non ne hai voglia lo capisco.
    Grazie comunque.

  6. #6
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    Codice PHP:
    <?php
    require("dati.php");

    $pagina 1;

    mysql_connect($dbhost,$dbuser,$dbpasswd) or die ("Non riesco a connettermi al DB");
    mysql_select_db($dbname);

    $res mysql_query("UPDATE contatore SET visite = visite + 1 WHERE pagina = $pagina");

    if (
    mysql_affected_rows($res) == 0)
          
    mysql_query("INSERT INTO contatore (pagina, visite) VALUES ($pagina, 1)");

    $res mysql_query("SELECT visite FROM contatore WHERE pagina = $pagina");
    $visite mysql_fetch_assoc($res);
    echo 
    "La pagina  stata visitata ".$visite['visite']." volte";  
    ?>
    Prova cosí, ti ho tolto le virgolette che erano di troppo.
    Dimmi cosa ti esce.

  7. #7
    Sei un GENIO ASSOLUTO. Funziona perfettamente. Non so davvero come ringraziarti!

  8. #8
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    Figurati

  9. #9
    lol solo un'ultima domandina... ora devo sostituire il mio contatore vecchio (che scriveva su un txt) con questo, ma non vorrei perdere le visite (sono più di 6000)... come faccio ad aggiungere 6000 righe nel campo?

    thanks

  10. #10
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    Originariamente inviato da -demianlz-
    lol solo un'ultima domandina... ora devo sostituire il mio contatore vecchio (che scriveva su un txt) con questo, ma non vorrei perdere le visite (sono più di 6000)... come faccio ad aggiungere 6000 righe nel campo?

    thanks
    6000 righe?
    ti basta mettere il valore 6000 in visite no ?
    perchè fare 6000 righe ?

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