Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Campo non duplicabile
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • C
      cla83 User Attivo • ultima modifica di

      Campo non duplicabile

      Salve a tutti, ho un campo 'codice' in una tabella, è possibile renderlo non duplicabile anche se non è una chiave primaria? ho letto un pò in rete che per far ciò dovrebbe essere un chiave primaria, ma nella tabella in questione ho già una chiave primaria, cioè l'id.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • T
        thedarkita ModSenior • ultima modifica di

        Ciao cla83,

        puoi impostare il campo come unique.

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • C
          cla83 User Attivo • ultima modifica di

          Ciao Thedarkita, grazie per la risposta. Avevo provato a impostarlo unique, però nel pannello phpmyadmin l'icona per far diventare il campo 'unique' non è cliccabile, solo nell'id lo è sia la chiave primaria che l'unique.
          Il campo codice è di tipo text, perchè potrebbe contenere anche lettere.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • massimux
            massimux Moderatore • ultima modifica di

            Ciao,

            effettivamente potrebbe dipendere dalla lunghezza del tuo campo; come è settato?

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • C
              cla83 User Attivo • ultima modifica di

              Posto la struttura della tabella, non so è quello che intedevi.

              --
              -- Struttura della tabella prodotti

              CREATE TABLE IF NOT EXISTS prodotti (
              id int(11) NOT NULL auto_increment,
              id_menu text NOT NULL,
              id_sottomenu text NOT NULL,
              titolo text NOT NULL,
              codice text NOT NULL,
              foto text NOT NULL,
              PRIMARY KEY (id)
              ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • T
                thedarkita ModSenior • ultima modifica di

                I campi text non possono essere impostati primary key, unique o index, se non hai bisogno che il campo sia cosi lungo puoi trasformarlo in varchar.

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • C
                  cla83 User Attivo • ultima modifica di

                  Grazie! Adesso va bene, mi da anche l'errore duplicate key. Non vorrei ottenere una cosa complessa, ma come potrei fare una volta cliccato il pulsante inserisci record invece di aprire la pagina con l'errore mi compaia l'errore nella pagina stessa?

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • T
                    thedarkita ModSenior • ultima modifica di

                    Invece di mettere or die, puoi settare una variabile flag e personalizzarti l'errore come vuoi.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • C
                      cla83 User Attivo • ultima modifica di

                      Dovrei agire dove sta 'or die(mysql_error()) ?'

                      [PHP]

                      if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
                      $insertSQL = sprintf("INSERT INTO prodotti (id, id_menu, id_sottomenu, titolo,lin, codice, foto, varianti) VALUES (%s,%s,%s,%s,%s,%s, %s, %s)",
                      GetSQLValueString($_POST['id'], "int"),
                      GetSQLValueString($_POST['id_menu'], "text"),
                      GetSQLValueString($_POST['id_sottomenu'], "text"),
                      GetSQLValueString($_POST['titolo'], "text"),
                      GetSQLValueString($_POST['lin'], "text"),
                      GetSQLValueString($_POST['codice'], "text"),
                      GetSQLValueString($_FILES['foto']['name'], "text"),
                      GetSQLValueString($_FILES['varianti']['name'], "text"));

                      mysql_select_db($database_conn, $conn);

                      // in questo punto qui?
                      $Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());

                      [/PHP]

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • T
                        thedarkita ModSenior • ultima modifica di

                        Si, puoi trasformarlo in:
                        [php]
                        $Result1 = mysql_query($insertSQL, $conn) or $err = true;
                        [/php]

                        Dopo ti basterà controllare se $err è settato, per sapere se c'è stato un errore.

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • C
                          cla83 User Attivo • ultima modifica di

                          Potresti farmi un esempio di come settarlo? solo se non è un cosa complicata da fare.

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • massimux
                            massimux Moderatore • ultima modifica di

                            @Thedarkita said:

                            Si, puoi trasformarlo in:
                            [php]
                            $Result1 = mysql_query($insertSQL, $conn) or $err = true;
                            [/php]

                            Dopo ti basterà controllare se $err è settato, per sapere se c'è stato un errore.

                            Ciao,

                            qui è spiegato come settare la variabile mettendola a "true" poi devi solo inserire una condizione su di essa e stamparti a video l'errore o scegliere cosa far visualizzare.

                            Attendo una tua prova 😉

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            Caricamento altri post
                            Rispondi
                            • Topic risposta
                            Effettua l'accesso per rispondere
                            • Da Vecchi a Nuovi
                            • Da Nuovi a Vecchi
                            • Più Voti