• User Attivo

    E' altamente consigliato usare una libreria per "parlare" con il tuo DB, e nello specifico sarebbe meglio usare MDB2: eviti un sacco di problemi e scrivi del codice più portabile ed efficiente


  • User Attivo

    Perdona l'ignoranza, ma cosa è MDB2 e a cosa mi serve?


  • User Attivo

    Hai cliccato sul link? MDB2 è una libreria per gestire l'accesso e l'interrogazione di un database tramite PHP e ha notevoli vantaggi rispetto all'utilizzo delle funzioni "native" mysql_xxx che tu utilizzi


  • User Attivo

    Non sono molto ferrata con l'inglese e non sono riuscita a capire come funziona. Potresti riassumermelo in 2 parole?
    E poi: devo istallarmo sul server dove si trova il db o posso istalllarlo anche sul mio pc?


  • User Attivo

    Uhm, in realtà non è facile riassumerlo in breve - si tratta di una libreria che fornisce una API comune per dialogare con tutti i principali DB supportati da PHP (MySQL, PostgreSQL, MSSQL, ...). In sostanza invece di usare
    [php]mysql_query[/php]o
    [php]pg_query[/php]esegui sempre e solo
    [php]$db->query[/php]senza preoccuparti di quale database stai utilizzando (ovviamente a patto di usare SQL standard)

    Ulteriori vantaggi dell'utilizzo di questa libreria (Object-Oriented quindi piuttosto facile da usare) sono:

    • utilizzo dei placeholder (con escaping "automatico"): questo è quello che serve a te in questo caso
    • gestione automatica dell'autoincrement (per DB che non lo supportano "nativamente")
    • supporto per transactions

    Comunque il vantaggio principale è l'astrazione dal DB sottostante. Pensa se un giorno invece di usare MySQL dovessi usare MSSQL: se non astrai dovrai cambiare tutto il codice che hai scritto, se usi questa libreria probabilmente non dovrai cambiare neanche una riga.

    Comunque, detto ciò, se proprio vuoi continuare ad usare la funzione mysql_query, il mio suggerimento è di fare la tua query così:
    [php]$query1 = "INSERT INTO agenzie
    (ragsoc, indirizzo, ...)
    VALUES
    ('" . mysql_real_escape_string($dati[ragsoc]) . "', '" . mysql_real_escape_string($dati[Indirizzo]) . "', ... "[/php]HTH, ciao! 🙂


  • User Attivo

    Credo che momentaneamente userò la seoconda ipotesi, ovvero usare il mysql_real_escape_string.
    Per il MDB2 prima voglio capire alcune cose.
    Grazie comunque della pazienza.


  • User Attivo

    Quando il testo di un campo è contenuto tra gli apici, ho qualche difficoltà a gestirlo sul form.
    Mi spiego meglio.
    Il campo Ragione_sociale della mia tabella Agenzie è il seguente:
    Agriturismo "Della Valle";

    ora io vado a prelevarlo dal mio database nel seguente modo
    [php]
    $query = "SELECT * FROM agenzie WHERE id = "$_GET[id]" ";
    $result = mysql_query($query,$db);
    if(!$result) {
    echo "$query<br><br>";
    echo mysql_error($db); echo "<br>";
    die($err_query_fallita);
    }
    $dati = mysql_fetch_array($result);

    $Ragione_sociale = $dati['Ragione_sociale'];
    [/php]

    Se lo visualizzo con un echo, mi viene visualizzato in modo corretto. Ma quando lo vado a visualizzare all'interno di una casella testo di un form, il testo viene troncato.
    Questo il codice del form

    [php]
    <input name="'Ragione_sociale'" type="text" id="'Ragione_sociale'" value="<?php echo $'Ragione_sociale'?>" size="30" maxlength="100" />
    [/php]

    Praticamente sul form mi viene visualizzato solo Agriturismo e manca il testo tra apici.
    Come posso risolvere il problema?


  • ModSenior

    Ciao,
    dovresti fare cosi:
    [php]
    <input name="'Ragione_sociale'" type="text" id="'Ragione_sociale'" value="<?php echo $Ragione_sociale?>" size="30" maxlength="100" />
    [/php]


  • User Attivo

    Scusa, ho sbagliato io a scrivere. L'avevo scritta esattamente come hai detto tu ed il problema si propone lo stesso.


  • User Attivo

    Prova così:
    [php]<input name="'Ragione_sociale'" type="text" id="'Ragione_sociale'" value="<?php echo htmlspecialchars($Ragione_sociale) ?>" size="30" maxlength="100" />[/php]http://php.net/htmlspecialchars


  • User Attivo

    Ottimo, così funziona.
    Grazie 🙂