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

    Problema query di inserimento

    Sto usando PhpPgAdmin.
    Devo fare due query per inserire i dati di un utente in due differenti tabelle, a partire da un form di registrazione.
    Quindi ho fatto: pagina di registrazione con i form.
    Metodo post e faccio ad esempio $nome = $_POST['nome'];
    E fin qui tutto ok.
    I dati che l'utente inserisce vanno, o meglio andrebbero, a finire in due tabelle
    UTENTE e PRIVATO

    Il mio problema è che se faccio solo la query di inserimento per UTENTE commentando l'altra funziona. Se le faccio insieme (devo per forza fare prima utente e poi privato perché c'è di mezzo una chiave esterna) non funzionano. Non mi escono gli errori e non si riempiono le tabelle:

    Questa è la pagina con le query
    Codice PHP:
    <?php
    #DATABASE E QUERY#
    $privato 'privato';
    $db1 = new db();
    $db1->db_open();
    $result1 $db1->query("INSERT INTO utente (login, pw, tipo_utente) VALUES ('".$login."', '".$password."', '".$privato."')");
    #$db1->db_close();

    $db2 = new db();
    $db2->db_open();
    $result2 $db2->query("INSERT INTO privato (codf, nome, cognome, email, tel, autorizzato, login) VALUES ('".$codfiscale."', '".$nome."', '"$cognome"', '".$email."', '".$tel."', FALSE, '".$login."')");

    if (!
    $result1 || !$result2) {
    ?>
                 <td class="testo">Ops! C'è qualcosa che non va!</td>
                
    <?php
        
    #exit;
    }else{
    ?>
                <td class="testo">Utente <span class="menu"><?php echo $login?></span> inserito! Ora loggati alla [url="index.php"]pagina iniziale[/url].</td>
    <?php
    }
    #$db2->db_close();
    ?>
    Questa è la pagina di connessione al db:
    Codice PHP:
    <?php

    class db{

        function 
    db_open(){
            
    $this->db_conn pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=mikmik");
            if (!
    $this->db_conn){
                echo 
    "
    Errore impossibile connettersi al db 
    $this->dbname
    "
    ;
            }
        }
        function 
    query($query){
            
    $result pg_query($this->db_conn,$query);
            return 
    $result;
            
    #return pg_send_query $this->db_conn,$query);
        
    }
    ?>

  2. #2
    FALSE scrivilo tra gli apici 'FALSE'

    vedi se funziona lo script

  3. #3
    Anche mettendo gli apici a 'FALSE' la seconda query non viene elaborata, mentre la prima funziona e i dati vengono inseriti.

  4. #4
    Prova ad eseguire la query manualmente e controlla il tipo dei dati delle varie colonne.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Se provo ad eseguire la query manualmente nel phpPgAdmin funziona tutto!
    codf, nome, cognome, email, login sono character varying
    tel è numeric
    autorizzato è boolean

  6. #6
    Nella query incriminata sostituisci $cognome con .$cognome. (Devi inserire il punto prima e dopo)
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Ho rimesso i punti per $cognome! Ma adesso non funziona neanche più la prima!

  8. #8
    Originariamente inviato da michellemabelle
    Ho rimesso i punti per $cognome!
    ...
    Che significa ho rimesso? Quindi li avevi tolti volutamente? E perchè? Tanto per? Scusa, ma non puoi andare per tentativi.
    Prova a farti stampare a video tutti i valori che passi in entrambe le query.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Ho rimesso significa che: dal momento che facendo la query con le variabili non mi si inserivano i dati nelle tabelle, ho provato sempre da php a fare la query mettendo i dati direttamente da lì, senza passare dalle variabili e in effetti così funzionava il tutto. Probabilmente rimettendo le variabili nelle query ho dimenticato i punti.

    Devo per forza andare a tentativi perché sono giorno che sono ferma su questo punto e non capisco perché la seconda query non funziona!

    Comunque, facendo un echo delle query esce:

    Codice PHP:
    <?php
    echo "INSERT INTO utente (login, pw, tipo_utente) VALUES ('".$login."', '".$password."', '".$privato."')";
    echo 
    "INSERT INTO privato (codf, nome, cognome, email, tel, autorizzato, login) VALUES ('".$codfiscale."', '".$nome."', '".$cognome."', '".$email."', '".$tel."', 'FALSE', '".$login."')"
    ?>
    codice:
    INSERT INTO utente (login, pw, tipo_utente) VALUES ('giu', 'gg', 'privato')
    INSERT INTO privato (codf, nome, cognome, email, tel, autorizzato, login) VALUES ('1234567890123456', 'giulia', 'jules', 'giulia@giulia.it', '0331234567', 'FALSE', 'giu')

  10. #10
    Se tel è numerico dovresti togliere gli apici dal valore inserito in quel campo.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.