Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46

    Inserimento campi "null"

    Ciao a tutti

    sto provando a fare una banale form di inserimento dati ed invio ad un dato indirizzo E-MAIL

    nessun problema (per adesso) la form gira, il problema si riscontra quando l'inserimento dati non viene portato a termine nel caso in cui l'utente lasci qualche campo in bianco. Ciò ovviamente non è possibile nel campo chiave, che ha settato in automatico il flag NOT_NULL, però gli altri campi sono inizializzati come NULL e teoricamente, nelle mie intenzioni, dovrebbero consentire all'utente di lasciarli in bianco...ovviamente il flag di NOT_NULL è disattivato su questi campi, ed il default value è poprio NULL...

    Il problema si riscontra quando provando a mandare la form al database, esso si blocca sul check
    codice:
    	if (!$q)
    {
    print("non riesco ad inserire i dati");
    mentre invece se tutti i campi sono stati riempiti non genera problemi...

    vi posto il codice completo che ho utilizzato per effettuare l'inserimento, così da potervi rendere conto di quale possa essere l'errore

    grazie!

    codice:
    <html>
    <?php
    $a=$_REQUEST;
    PRINT("PARAMETRI
    
    ");
    foreach($a as $k=>$v){
    print"$k: $v
    ";
    }
    $host='localhost';
    $user='appartamenti';
    $password='admin';
    $database="affitto";
    $tabella="cliente";
    
    	$db=mysqli_connect($host, $user, $password) or die("impossibile connettersi al server $host");
    	mysqli_select_db($db, $database) or die("impossibile connettersi al database $database");
    	
    	$query= "INSERT INTO $tabella VALUES ('". $_REQUEST['email'] ."','" . $_REQUEST['nome']."','" . $_REQUEST['cognome']."','" . $_REQUEST['indirizzo']."','" . $_REQUEST['telefono']."','" . $_REQUEST['fax']."','" . $_REQUEST['cellulare']."','" . $_REQUEST['citta'] . "')";
    	
    	$q=mysqli_query($db, $query);
    	
    	if (!$q)
    {
    print("non riesco ad inserire i dati");
    }
    else{print ("dati correttamente inseriti");}
    mysqli_close($db);
    ?>
    </html>

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    scusate ragazzi mi sono incastrato peggio di prima...

    in pratica nel momento in cui viene osservata l'espressione
    codice:
    $q=mysqli_query($db, $query);
    	
    	if (!$q)
    {
    print("non riesco ad inserire i dati");
    la query sembra non andare a buon fine, nonostante a mio avviso sia definita correttamente nella definizione di variabile precedente...

    non si tratta più di un errore solo di not null, non gira proprio la query, tanto che quando viene effettuato il check se $q è uguale a 0, essa è esattamente uguale a zero, pertanto indice del fatto che i dati non si sono riusciti ad inserire...

    eppure secondo me il codice è sintatticamente giusto...

    vi prego di illuminarmi grazie mille!

  3. #3
    usa la segnalazione di errore mysql_query() e stampati la stringa SQL che inserisci.

    print $query;

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

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    non sono sicuro di avere capito bene:

    io ho provato a fare così per stampare a schermo il contenuto della variabile $q modificando il codice in questa maniera:
    codice:
    	$query= "INSERT INTO $tabella VALUES ('". $_REQUEST['email'] ."','" . $_REQUEST['nome']."','" . $_REQUEST['cognome']."','" . $_REQUEST['indirizzo']."','" . $_REQUEST['telefono']."','" . $_REQUEST['fax']."','" . $_REQUEST['cellulare']."','" . $_REQUEST['citta'] . "')";
    	
    	$q=mysqli_query($db, $query);
    	
    	print $q;
    	
    	if (!$q)
    {
    print("non riesco ad inserire i dati");
    }
    else{print ("dati inseriti correttamente");}
    mysqli_close($db);
    ?>
    a schermo non mi viene stampato assolutamente nulla, la variabile $q è totalmente vuota nonostante la query appena eseguita su di essa...

    invece cambiando il
    codice:
    print $q
    in
    codice:
    print $query
    a schermo mi viene stampato banalmente
    codice:
    INSERT INTO cliente VALUES ('sdffds','asdasd','asdasd','asdasd','1243124','124124','124124','123132')non riesco ad inserire i dati
    ossia banalmente la query con i parametri attuali che sono stati assunti in base all'inserimento a schermo... tutto corretto dunque, l'errore risiede nella magia di $q che risulta inspiegabilmente vuota...

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    nessun guru di php riesce a darmi una mano?

    VVoVe:

  6. #6
    Originariamente inviato da EtHeReAl
    nessun guru di php riesce a darmi una mano?

    VVoVe:
    in $q facendo l'insert puoi avere solo TRUE o FALSE.... va bene stampare $query.

    la segnalazione di errore:

    $q = mysqli_query($db, $query) or DIE (mysqli_error($db) );

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    ho scoperto dove risiedeva l'errore... in pratica avevo un campo non inserito nel database che veniva richiesto dalla form, pertanto generava errore...

    grazie mille per l'ottimo consiglio sulla stringa da mettere, in pratica quella mi dovrebbe printare a schermo l'errore giusto?

    grazie ancora tornerò a tediarvi qualora dovessi incontrare nuovi problemi!

  8. #8
    Originariamente inviato da EtHeReAl
    ho scoperto dove risiedeva l'errore... in pratica avevo un campo non inserito nel database che veniva richiesto dalla form, pertanto generava errore...

    grazie mille per l'ottimo consiglio sulla stringa da mettere, in pratica quella mi dovrebbe printare a schermo l'errore giusto?
    Si dovrebbe sempre usare durante la fase di debug, poi si puo' omettere per evitare di mostrare a video informazioni che potrebbero dare indicazioni sulla struttura del tuo db. Ci sono pure altri mezzi per impedire la visualizzazione degli errori... ma in fase di debug dello script "deve", senza condizionale, essere abilitato tutto compresa la stampa dei NOTICE.


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

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    Originariamente inviato da piero.mac
    Si dovrebbe sempre usare durante la fase di debug, poi si puo' omettere per evitare di mostrare a video informazioni che potrebbero dare indicazioni sulla struttura del tuo db. Ci sono pure altri mezzi per impedire la visualizzazione degli errori... ma in fase di debug dello script "deve", senza condizionale, essere abilitato tutto compresa la stampa dei NOTICE.

    siete stati tutti molto gentili, grazie

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.