Visualizzazione dei risultati da 1 a 4 su 4

Discussione: ciclo di cancellazione

  1. #1

    ciclo di cancellazione

    Ciao, ho creato uno script che va ad estrarre i dati da un tabella e verificando la data di inserimento se è più vecchia del giorno odierno cancella i dati relativi a quela campo della tabella, in tutto strutturato in un ciclo while.
    ma quando l oeseguo mi cancella il primo dei vecchi dati eseguendo solo il primo ciclo poi si blocca dando i lseguente errore:

    Warning: Supplied argument is not a valid MySQL result resource in c:\programmi\easyphp\www\worksheet\cancella.php on line 19

    Lo script è questo:

    <?
    $db_nome="Sql18907_1";
    $nome_tabella="guestbook_sd";
    $connessione=@mysql_connect("localhost", "Sql18907_1", "")
    or die ("Impossibile stabilire una connessione");

    $control_giorno = date("j");
    $control_mese = date("n");

    $db=@mysql_select_db($db_nome, $connessione) or die("Impossibile selezionare il database");

    $sql= "SELECT
    id, fine_lavoro
    FROM $nome_tabella
    ORDER BY id desc";

    $risultato=mysql_query($sql, $connessione) or die ("Impossibile eseguire l' interrogazione");

    while($riga=mysql_fetch_array($risultato)){
    $id=$riga['id'];
    $data2=$riga['fine_lavoro'];

    //controlla le attitvità terminate e le cancella

    $my_array = explode("-", $data2, 3);

    if($my_array[0]<=$control_giorno && $my_array[1]== $control_mese){
    $sql = "DELETE FROM $nome_tabella WHERE id = \"$id\"";
    $risultato = mysql_query($sql, $connessione) or die("impossbile eseguire la cancellazione");
    }
    }
    ?>


    <html>


    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title></title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="author" content="Unregistered user">
    <meta name="generator" content="AceHTML 5 Freeware">
    </head>
    <body>

    ok
    </body>
    </html>


    Mi potete dire se vedete qulcosa di sbagliato,probabilmente è uan questioen di strutturazione.
    cia ograzie a tutti.

  2. #2
    Prova ad eliminare l'order by che cmq non ti serve a niente!

  3. #3

    Re: ciclo di cancellazione

    [QUOTE$sql= "SELECT
    id, fine_lavoro
    FROM $nome_tabella
    ORDER BY id desc";

    $risultato=mysql_query($sql, $connessione) or die ("Impossibile eseguire l' interrogazione");
    [/QUOTE]

    Esegui direttamente la query con :

    $sql = mysql_query("SELECT id, fine_lavoro FROM '$nome_tabella'
    ORDER BY id desc");

    usando gli apici (') opportunamente ...

    Perchè poi su $risultati passi anche la $connessione ? Mica serve ...
    Windows è un qualcosa che fà accender la macchina e non si sà come, linux è un s/o che la fà funzionare (by ©innovatel)

  4. #4
    1) La connessione può anche essere omessa ma la sintassi corretta vuole che sia inserita

    2) per i nomi dei campi e delle tabelle non vanno usati gli apici( ' ) ma questi " ` " che si ottengono premendo alt+96.

    Ripeto che l'order by è inutile, fa sprecare solo tempo.

    La query corretta è questa:

    $sql = "DELETE FROM $nome_tabella WHERE id = '$id'";

    Cmq il carattere alt+96 serve quando si ha a che fare con nomi di tabelle formati da più parole tipo "data creazione"
    Se invece scrivi "data_creazione" non è necessario inserirli.

    Prova la query che ti ho postato e fammi sapere se funziona. Ciao!

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.