Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    inserimento su condizione

    Allora ho una tabella utente in cui si registrano gli utenti:
    codice:
    TABELLA: utente
    +-----------------+---------------+-------------------+
    |    ID_UTENTE    |     USER      |      PASSWORD     |
    +-----------------+---------------+-------------------+
    |        1        |    mariano    |      password1    |
    +-----------------+---------------+-------------------+
    |        2        |    ornella    |      password2    |
    +-----------------+---------------+-------------------+
    Poi ho una tabella post:
    codice:
    TABELLA: post
    +-----------------+---------------+--------------+-------------------+
    |    ID_POST      |  ID_UTENTE    |    TITOLO    |        POST       |
    +-----------------+---------------+--------------+-------------------+
    |        1        |       2       |   titolo_1   |       testo_1     |
    +-----------------+---------------+--------------+-------------------+
    |        2        |       2       |   titolo_2   |       testo_2     |
    +-----------------+---------------+--------------+-------------------+
    Ora il form html per l'inserimento contiene
    >> username
    >> password
    >> titolo
    >> testo

    Ora al momento dell'invio del form dovrei fare in modo che vengano controllati l'username e password forniti con quelli memorizzati nella tabella utente del DB e se c'è una corrispondenza inserisco i dati nella tabella post.
    C'è un modo per farlo all'interno dell'operazione di insert o devo obbligatoriamente fare prima un select e poi un insert???

  2. #2
    devi comunque estrarre l'id utente (se esiste) da mettere nella tabella "post", quindi e' praticamente obbligatorio fare la select e poi l'insert.

    mi pare pero' che "forse" sarebbe meglio dividere gli step

    1. autenticazione
    2. insertimento se autenticato.

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

  3. #3
    probabilmente è più opportuno l'approccio che suggeriva piero, cioè prima autenticare e poi consentire l'input, in ogni modo se per un qualche motivo preferisci fare tutto assieme, si può fare inviando una sola query

    INSERT INTO post (ID_UTENTE, TITOLO, POST) SELECT (ID_UTENTE, 'titolo del post', 'contenuto del post') FROM utente WHERE username = 'nomeutente' AND password = 'passwordutente'

  4. #4
    Originariamente inviato da skidx
    probabilmente è più opportuno l'approccio che suggeriva piero, cioè prima autenticare e poi consentire l'input, in ogni modo se per un qualche motivo preferisci fare tutto assieme, si può fare inviando una sola query

    INSERT INTO post (ID_UTENTE, TITOLO, POST) SELECT (ID_UTENTE, 'titolo del post', 'contenuto del post') FROM utente WHERE username = 'nomeutente' AND password = 'passwordutente'
    l'INSERT... SELECT l'avevo pensata, poi non l'ho proposta perche' se lo USER non esiste farebbe casino.

    insisto sui due step anche da te condiviso

    autenticazione e poi inserimento se l'utente e' riconosciuto.

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    di norma anche io avrei fatto i due passi separati, però siccome serve per l'esame di basi di dati, cerco di fare le cose + compatte possibili...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    con l'insert suggerito da skid...:
    MySQL said: Documentation
    #1241 - Operand should contain 1 column(s)

  7. #7
    Originariamente inviato da Metallica
    di norma anche io avrei fatto i due passi separati, però siccome serve per l'esame di basi di dati, cerco di fare le cose + compatte possibili...
    Allora tanto peggio....

    se lo user dovesse sbagliare nome o pwd lo obbligheresti a riscrivere / riprendere tutto il form, oppure dovresti riproporgli quanto gia' inserito.... complicazione inutile. Sarebbe comunque una invenzione (negativa) perche' non si e' mai visto identificazione e gestioni sui dati contemporanei.

    Anche perche' l'identificazione dovrebbe essere una azione utile anche per molte altre attivita' tipo modifiche e cancellazioni, e quindi se segui questa tua logica dovrebbe essere ripetuta per ogni evento.

    Tieni presente che devi verificare lo user, verificare il contenuto degli inserimenti e se qualcosa va storto dovresti rifare tutte le manovre a discapito della compattezza dello script.

    Script compatto != da script ottimizzato.

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

  8. #8
    Originariamente inviato da Metallica
    con l'insert suggerito da skid...:
    MySQL said: Documentation
    #1241 - Operand should contain 1 column(s)
    non ci vuole la parentesi dopo select....
    codice:
    INSERT INTO post (ID_UTENTE, TITOLO, POST) 
    SELECT ID_UTENTE, 'titolo del post', 'contenuto del post' 
    FROM utente 
    WHERE username = 'nomeutente' 
    AND password = 'passwordutente'

    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.