Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Modifica record

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360

    Modifica record

    Salve ragazzi,

    il seguente codice
    Codice PHP:
    <?php 

    include '../../config.php';

    //Recupero il valore del parametro "id" 
    $id $_GET['id'];

    if(
    $_POST && isset($_GET['id']))
    {
        
    aggiorna_record();
        }

    // esecuzione prima query 
    $query "SELECT titolo,descrizione FROM images WHERE id = $id"
    $res mysql_query($query) or die (mysql_error()); 

      
    // ciclo tutti i record recuperati attraverso la nostra query 
      
    while ($f=mysql_fetch_array($res)){ 
        
    $titolo      stripslashes($f['titolo']); 
        
    $descrizione stripslashes($f['descrizione']); 
        }

    function 
    aggiorna_record()
    {
        
    // recupero i campi di tipo "stringa"
        
    $titolo      trim($_POST['titolo']);
        
    $descrizione trim($_POST['descrizione']);

        
    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
        
    if(get_magic_quotes_gpc())
        {
            
    $titolo      stripslashes($titolo);
            
    $descrizione stripslashes($descrizione);
        }
        
        
    // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
        
    $titolo      mysql_real_escape_string($titolo);
        
    $descrizione mysql_real_escape_string($descrizione);

        
    $titolo      htmlentities($titolo);
        
    $descrizione htmlentities($descrizione);

        
    $id intval($_GET['id']);

        
    // verifico la presenza dei campi obbligatori
        
    if(!$titolo)
        {
        echo 
    'Non hai inserito il Titolo!

    [url="javascript:history.back()"]Torna indietro[/url]'
    ;
        exit;
        }

        if(!
    $descrizione)
        {
        echo 
    'Non hai inserito la Descrizione!

    [url="javascript:history.back()"]Torna indietro[/url]'
    ;
        exit;
        }

        
    // preparo la query
        
    $query "UPDATE images SET titolo='$titolo',descrizione='$descrizione' WHERE id = $id";

        
    // invio la query
        
    $result mysql_query($query);

        
    // controllo l'esito
        
    if (!$result) {
            die(
    "Errore nella query $query: " mysql_error());
        }

        
    // chiudo la connessione a MySQL
        
    mysql_close();

        echo 
    'Modifica effettuata con successo!';

    }

    ?>

    <form method="post" action="">
    Titolo:

    <input name="titolo" type="text" value="<?php echo $titolo?>" size="20">

    Descrizione:

    <textarea name="descrizione" cols="20" rows="4"><?php echo $descrizione?></textarea>

    <input type="submit" name="Submit" value="Submit">



    </form>
    funziona perfettamente ma vorrei sapere perché quando modifico un record mi appare il messaggio
    codice:
    Modifica effettuata con successo!No database selected
    quel "No database selected" da dove/perchè esce visto che la modifica viene registrata nel DB?

    Altra cosuccia, quardando questa parte di funzione
    Codice PHP:
    function aggiorna_record()
    {
        
    // recupero i campi di tipo "stringa"
        
    $titolo      trim($_POST['titolo']);
        
    $descrizione trim($_POST['descrizione']);

        
    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
        
    if(get_magic_quotes_gpc())
        {
            
    $titolo      stripslashes($titolo);
            
    $descrizione stripslashes($descrizione);
        }
        
        
    // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
        
    $titolo      mysql_real_escape_string($titolo);
        
    $descrizione mysql_real_escape_string($descrizione);

        
    $titolo      htmlentities($titolo);
        
    $descrizione htmlentities($descrizione); 
    è giusto mettere trim, stripslashes, mysql_real_escape_string e htmlentities per ovviare ai soliti problemi di riconoscimento/scrittura di caratteri strani come " e cose varie oppure esiste una sintassi migliore per queste situazioni?

    Se c'è qualche errore di sintassi/impostazione per migliorare il codice, sono gradite segnalazioni, il funzionamento pratico c'è, a parte queste cose che ho segnalato poco sopra.

  2. #2
    E' la select che non va dato che prima di eseguirla, nella funzione aggiorna_record(), chiudi la connessione con mysql_close().
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Originariamente inviato da satifal
    E' la select che non va dato che prima di eseguirla, nella funzione aggiorna_record(), chiudi la connessione con mysql_close().
    E' vero!

    Ho posizionato mysql_close(); alla fine così
    Codice PHP:
        echo 'Modifica effettuata con successo!';

    }

        
    // chiudo la connessione a MySQL
        
    mysql_close();

    ?> 
    ed è OK!

    E riguardo al fatto del riconoscimento/scrittura di caratteri strani come " e cose varie, io utilizzo in successione stripslashes, mysql_real_escape_string e htmlentities, oppure esiste una sintassi migliore per queste situazioni?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Qualche suggerimento?

  5. #5
    Personalmento mi trovo spesso ad utilizzare mysql_real_escape_string, dato che con htmlentitles se vai a recuperare i valori per stamparli su schermo (questo ipoteticamente) te le considera come entità html e ti potrebbe creare fastidi.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Originariamente inviato da Dario Alise
    Personalmento mi trovo spesso ad utilizzare mysql_real_escape_string, dato che con htmlentitles se vai a recuperare i valori per stamparli su schermo (questo ipoteticamente) te le considera come entità html e ti potrebbe creare fastidi.
    Grazie... trovata la soluzione... ho tolto htmlentities ma visto che mi creava ancora problemi a stampare, mai nel salvataggio nel DB, ho capito che vi era un conflitto con
    Codice PHP:
    value="<?php echo $titolo?>"
    ovvero con le virgolette e ho modificato in
    Codice PHP:
    value=<?php echo $titolo?>

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Torno a parlare un attimo di un problema che pensavo di aver risolto, invece...

    Se scrivo
    Codice PHP:
    <input name="titolo" type="text" value="<?php echo $titolo?>" size="20">
    Riesco a recuperare i dati di $titolo ma se ci sono delle virgolette la stringa recuperata viene troncata. se ci sono apici tutto OK.

    se scrivo
    Codice PHP:
    <input name="titolo" type="text" value='<?php echo $titolo?>' size="20">
    Riesco a recuperare i dati di $titolo ma se ci sono apici la stringa recuperata viene troncata, se ci sono virgolette tutto OK.

    se scrivo
    Codice PHP:
    <input name="titolo" type="text" value=<?php echo $titolo?> size="20">
    ho probemi sia con gli apici, sia con le virgolette, come posso risolvere?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Nessuno sa dirmi come risolvere?

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