Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Valore cookie

  1. #1

    Valore cookie

    codice:
    if ($user=="" AND $ospite=="") {
    $query = "INSERT INTO ospiti_connessi (Ultimo) VALUES (now())";
    $result = mysql_query($query, $db);
    $ospite = mysql_insert_id($db);
    setcookie("ospite", $ospite, mktime (0,0,0,date("m"),date("d"),date("Y")+1));
    }
    if ($ospite!="") {
    $query = "SELECT * FROM ospiti_connessi WHERE ID = '$ospite'";
    $result = mysql_query($query, $db);
    $presente = mysql_num_rows($result);
    if ($presente==1) {
    $query = "UPDATE ospiti_connessi SET Ultimo=now() WHERE ID = '$ospite'";
    $result = mysql_query($query, $db);
    } else {
    $query = "INSERT INTO ospiti_connessi (Ultimo) VALUES (now())";
    $ospite2 = mysql_insert_id($db);
    $result = mysql_query($query, $db);
    setcookie("ospite", $ospite2, mktime (0,0,0,date("m"),date("d"),date("Y")+1));
    }
    }
    Come si vede in questo codice uso l'ultimo id come valore del cookie, però se la tabella è piena tutto liscio, mentre se è vuota il valore del cookie è 0, come posso risolvere?

  2. #2
    $ospite e $ospite2 sono a seguito di un INSERT, quindi l'id auto_increment deve essere come minimo a 1 nel caso di tabella vuota.

    Nella sequenza dei controlli che fai hai qualcosa di poco convincente:
    La seconda if dovrebbe essere un elseif in cascata al primo if. Altrimenti fai sempre una select inutile nel caso tu l'abbia appena inserito con la if precedente ($ospite sarebbe valorizzato), in piu' faresti pure l'update inutilmente.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Siccome devo svuotare per forza la tabella, non si può fare in altro modo per il primo record?

  4. #4
    Originariamente inviato da poeta1978
    Siccome devo svuotare per forza la tabella, non si può fare in altro modo per il primo record?
    Mi pare che auto_increment parta da 1. Comunque puoi settarlo al valore che ti pare dopo aver svuotato la tabella (penso usi truncate table) con un alter table.

    TRUNCATE TABLE tabella;
    ALTER TABLE tabella AUTO_INCREMENT = 1000.

    Cosi' la numerazione partirebbe da 1001.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Non uso TRUNCATE ma DELETE quindi la numerazione deve partire da dov'è ferma. Pensandoci, se il DELETE lo faccio alla fine risolvo il problema, dato che l'ultimo record resta e vengono eliminati solo i vecchi?

  6. #6
    Originariamente inviato da poeta1978
    Non uso TRUNCATE ma DELETE quindi la numerazione deve partire da dov'è ferma. Pensandoci, se il DELETE lo faccio alla fine risolvo il problema, dato che l'ultimo record resta e vengono eliminati solo i vecchi?
    Meglio fare un chiarimento. Delete cancella i record, ma non inizializza la tabella, quindi l'autoincrement rimane dove'. Truncate reinizializza la tabella azzerando pure l'auto increment. ti lascia la tabella come nuova, dopo il create table.

    Se usi il delete non capisco dove tu trovi il problema degli id. A meno che tu l'id non lo inserisca manualmente, ma allora mi sfugge il senso del "mysql_insert_id"....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Anche usando delete mi dava il problema, comunque ora dovrebbe andare.
    Grazie

  8. #8
    Originariamente inviato da poeta1978
    Anche usando delete mi dava il problema, comunque ora dovrebbe andare.
    Grazie
    Un appunto...

    if ($ospite!="")

    Non e' corretto. essendo un valore numerico e NOT NULL, potrebbe essere zero, ma non "".


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.