Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Errore inserim. database

    Sentite, forse è la stanchezza, io non vedo errori...
    Eppure mi restituisce il die errore inserimento.

    Codice PHP:
    if(isset($_POST[id])){
        
    $curr_scolastico $_POST[curr_scolastico];
        
    $curr_scolastico stripslashes($curr_scolastico);
        
    $curr_lavorativo $_POST[curr_lavorativo];
        
    $curr_lavorativo stripslashes($curr_lavorativo);
        
    $id $_POST[id];
        
    // inizio controllo campi
        
    if ($curr_scolastico == "Scrivi una descrizione dettagliata del tuo percorso di studi teatrale o di recitazione."){
        
    $a 1;
        
    $err 1;
        } else if (
    strlen($curr_scolastico) >= "2500"){
        
    $a 2;
        
    $err =1;
        } else {
        
    $a =0;
        }
        if (
    $curr_lavorativo == "Scrivi una descrizione dettagliata del tuo percorso lavorativo."){
        
    $a 1;
        
    $err 1;
        } else if (
    strlen($curr_lavorativo) >= "2500"){
        
    $a 2;
        
    $err =1;
        } else {
        
    $a =0;
        }
        
    // CONTROLLO SE HA GENERATO ERRORI
        
    if($err == "1"){
        
    // e rimando alla pagina di esperienza
        
    header("Location: iscrizione_fase2.php?id=$id&err=1");
        } else {
        
    // ALTRIMENTI PROCEDO E INSERISCO IN DATABASE
        // Includo dati per connessione al server

        
    include ("conn_database/config.stage.inc.php");
        include (
    "conn_database/conn_database.php");
        
    $query "INSERT INTO ISC_curriculum (gen_id,curr_scolastico,curr_lavorativo) VALUES ('$id','$curr_scolastico','$curr_lavorativo')";
        
    $risultato mysql_query($query$db) or die("Errore"); 
    Dov'è l'errore?

  2. #2
    $risultato = mysql_query($query, $db) or die("Errore " .mysql_error());

    fallo dire a mysql di che errore si tratta

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

  3. #3
    La prima cosa che mi salta all'occhio è il recupero delle variabili passate via POST.
    Devi scrivere così:

    Codice PHP:

        $curr_scolastico 
    $_POST['curr_scolastico']; 
        
    $curr_scolastico stripslashes($curr_scolastico); 
        
    $curr_lavorativo $_POST['curr_lavorativo']; 
        
    $curr_lavorativo stripslashes($curr_lavorativo); 
    Suppongo che id sia passato con un campo hidden dalla tua form, altrimenti (se presente nella action) devi prelevarlo con $_GET['id'].

    Poi--- il campo gen_id della tabella è un INT?
    Se lo è, devi scrivere la query così:
    Codice PHP:
    $query "INSERT INTO ISC_curriculum
    (gen_id,curr_scolastico,curr_lavorativo)
    VALUES (
    $id,'$curr_scolastico','$curr_lavorativo') ";
    // togli gli apici da $ID in quanto non è una stringa
    // ma un INT 
    Ad ogni modo, nel DIE della query aggiungi quanto segue:

    Codice PHP:
    $risultato mysql_query($query$db) or die("
    <hr />
    Errore Numero: "
    .mysql_errno()."

    Descrizione: "
    .mysql_error()."
    <hr />
    "
    ); 
    In questo modo scopri qual è la causa che genera l'errore e ti risulterà più facile andare a capire come intervenire.

    Un'ultima annotazione.
    Lo stripslashes da solo non è certo un metodo sicuro per passare stringhe ad un DB.... a prescindere dai problemi di hacking, sappi che alcuni caratteri (tipo l'apice singolo) possono andare ad inficiare la buona riuscita di una query.
    Fossi in te, farei un controllo sugli input di tipo stringa.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    Intanto grazie per le risposte!

    Le variabili post stampate sono corrette.

    Poi--- il campo gen_id della tabella è un INT?
    Si, ma io l'ho sempre passto con gli apici e non ha mai dato problemi!

    Fossi in te, farei un controllo sugli input di tipo stringa.
    Che tipo di controllo?

  5. #5
    Beh..... sostanzialmente dovresti fare in modo che tutti i caratteri passati siano adatti ad essere inseriti in un DB (per esempio evitare che siano inseriti apici e doppi apici), che caratteri tipo < > & @ # non vengano presi come buoni (potrebbero significare un tentativo di hacking), ma anche che siano resi "innocui" i caratteri accentati che danno sempre problemi di compatibilità con i charset.
    Se dai un'occhiata alla Guida sicurezza di PHP che trovi in questo sito, capisci subito cosa intendo.

    Puoi dare una bella ripulita alla stringa con poche righe di codice.
    Te ne riporto un esempio al volo:

    Codice PHP:
    // recuperi un bell'array con tutti i caratteri speciali ed il 
    // corrispettivo valore da sostituire
    $caratteri get_html_translation_table(HTML_ENTITIESENT_QUOTES);
    // sostituisco i caratteri della tabella in ogni stringa
    $stringa_bonificata strtr($stringa_da_bonificare$caratteri);
    // faccio l'escape finale prima di inserire i dati nel DB
    $stringa_parsata = = mysql_escape_string($stringa_bonificata);
    // ora si può effettuare l'inserimento nel DB 
    Ti consiglio di andare a vedere i particolari di ogni funzione che non conosci, e che ho riportato nello script qui sopra, nel manuale di PHP.net.

    Le variabili post stampate sono corrette.
    OK, fosse anche solo per un formalismo, ricorda che per accedere ai valori contenuti in un array è sempre meglio utilizzare gli apici all'interno della parentsi quadra.

    In ultimo: con il DIE formattato come ti è stato consigliato (e non solo da me), che tipo di errore ottieni????

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Ok, ora inserisce, e senza modificare nulla (non capisco). Però se inserisco testo con apici o altro lui restituisce errore. Solito vecchio problema. Dunque, io una volta (e parecchio tempo che non ne faccio più) usavo solo stripslashes e htmlentities. Ora capisco che devo usare anche altro. Cosa mi consigliate?

    mysql_escape_string da sola non basta?

  7. #7
    Originariamente inviato da lorenzos
    Ok, ora inserisce, e senza modificare nulla (non capisco). Però se inserisco testo con apici o altro lui restituisce errore. Solito vecchio problema. Dunque, io una volta (e parecchio tempo che non ne faccio più) usavo solo stripslashes e htmlentities. Ora capisco che devo usare anche altro. Cosa mi consigliate?

    mysql_escape_string da sola non basta?
    http://forum.html.it/forum/showthrea...ostid=10166292

    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.