Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    3

    Problema di controllo automatico del codice

    Buongiorno. Sono nuovo del forum quindi se canno qualcosa abbiate pazienza.
    Sto lavorando su un sito ed il problema del momento è questo:
    Sto facendo un form per inserire degli eventi. Form ok e collegamento al db rudimentale ma funzionante. Inserire dati ci riesco senza problema mentre le difficoltà le incontro nelle procedure di controllo automatiche che sto impostando x evitare di inserire due eventi identici o nella stessa giornata. Vi passo il codice su cui ho i miei problemi e poi vi spiego i dettagli:

    [ PHP ]
    if ( $alfa[0] == $l and $alfa[1] == $m) {
    echo "Evento già inserito. Impossibile inserirne uno identico";
    require "index.php";
    die();
    }
    elseif ($alfa[1] == $m and !isset($alfa[0])){
    echo "<p>Nello stesso giorno esiste già un avvenimento: $l.<br>Inserire anche quest'ultimo?</p><br><form action=\"control.php\" method=\"post\"><input id=\"reinvia\" type=\"submit\" name=\"reinvia\" value=\"reinvia\">";
    die;
    }
    [ /PHP ]

    Allora. $l corrisponde al titolo immesso nel form mentr $m corrisponde alla data. $alfa è l'array che ottengo da una chiamata al server e rispettivamente $alfa[0] corrisponde al titolo del evento (faccio una chiamata al server con un semplice SELECT * etc) mentre $alfa[1] corrisponde alla data del giorno. La prima parte della condizione quella dove mi risponderebbe "Evento già inserito" funziona senza alcun problema e funziona bene anche l'inserimento dei dati, quando passa oltre la condizione; quello che non funziona è la seconda condizione, ovvero quella che dovrebbe dirmi "Nello stesso giorno esiste...".
    A mio parere non mi controlla la seconda condizione di quel elseif. Ho provato con:
    [ PHP ]
    $alfa[0] !== $l
    !$alfa
    $alfa[0] !=== $l

    [ /PHP ]

    ma non riesco comunque perché il dato passa oltre il controllo. Non riesco a capire dove è l'errore.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova a stampare a stampare a video i vari valori.

    Codice PHP:
    print "alfa0=".$alfa[0]." - alfa1 =".$alfa[1]." l=".$l." - m=".$m."<br/>";
    if ( 
    $alfa[0] == $l and $alfa[1] == $m) {
            echo 
    "Evento già inserito. Impossibile inserirne uno identico";
            require 
    "index.php";
            die(); 
    } elseif (
    $alfa[1] == $m and !isset($alfa[0])){
                echo 
    "<p>Nello stesso giorno esiste già un avvenimento: $l.<br>Inserire anche quest'ultimo?</p><br><form action=\"control.php\" method=\"post\"><input id=\"reinvia\" type=\"submit\" name=\"reinvia\" value=\"reinvia\">";
                die;
                } 

    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Altre cose...

    Sai che puoi usare nomi di variabili che hanno un significato. $titolo è più parlante di $l e $data più di $m ?
    Crei un paragrafo (tag p) che non chiudi mai. Stessa cosa per il form.
    Crei un form ma non tramandi i valori di $l e $m.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    intanto potresti semplificare il database. Perchè un vettore e non due campi? titolo_Evento e data_Evento? Poi in pratica se non ho capito male, in una stessa data puoi decidere di avere più eventi differenti, che naturalmente non hanno lo stesso titolo.

    una domanda: eventi in date differenti possono avere lo stesso titolo?

    Sarebbe più comodo controllare prima se in quella data c'è un evento e dopo verificare se ha lo stesso nome. Se in quella data non hai eventi allora puoi inserire il nuovo evento, se in quella data ci sono altri eventi controlli che il titolo non coincida con nessuno di essi.

    Meglio
    "SELECT id, data_Evento, titolo_Evento FROM Tabella_Eventi WHERE data_Evento = '$m'";

    Per me è più semplice così. Ma non so se hai usato un vettore per altri motivi.
    Ultima modifica di Krek_Stealth; 07-06-2016 a 01:17

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    3
    Quote Originariamente inviata da Krek_Stealth Visualizza il messaggio
    intanto potresti semplificare il database. Perchè un vettore e non due campi? titolo_Evento e data_Evento? Poi in pratica se non ho capito male, in una stessa data puoi decidere di avere più eventi differenti, che naturalmente non hanno lo stesso titolo.

    una domanda: eventi in date differenti possono avere lo stesso titolo?

    Sarebbe più comodo controllare prima se in quella data c'è un evento e dopo verificare se ha lo stesso nome. Se in quella data non hai eventi allora puoi inserire il nuovo evento, se in quella data ci sono altri eventi controlli che il titolo non coincida con nessuno di essi.

    Meglio
    "SELECT id, data_Evento, titolo_Evento FROM Tabella_Eventi WHERE data_Evento = '$m'";

    Per me è più semplice così. Ma non so se hai usato un vettore per altri motivi.
    Intanto Grazie a tutti x i consigli. Krek_Stealth Abbi un un po' di pazienza. Sto studiando PHP da autodidatta per cui alcune cose, e dinamiche, non le capisco del tutto. Suppongo che quando mi dici vettore intendi una variabile, ma mi sfugge il significato di campo (array multidimensionale, costante o cosa?)

    Comunque pensavo di evitare di dare uno stesso titolo a due eventi, anche perchè leggermente modificabili del tipo, Campo Scuola 2013 e Campo Scuola 2015, anche perché penso ogni anno o due di esportare la porzione di db cancellandola sul server e tutt'alpiù tenendola in locale. Non è un sito talmente complesso da non potere fare una cosa del genere

  6. #6
    Ok. Un paio di domande, i dati nel database li inserisci tramite form? Ho li inserisci direttamente nel database?

    Semplificando un pò.

    Nel tuo database avrai sicuramente una tabella.

    La tua Tabella è quella che viene dopo SELECT * etc... che Dovrebbe essere > SELECT * FROM 'nome_della_tua_tabella' <

    La tua tabella contiene o conterrà i tuoi eventi.

    Un evento è definito quando hai il "nome dell'evento" e "la data dell'evento" l'insieme di questi dati si chiama record. il singolo dato si chiama campo.

    Se fosse una tabella che contiene degli utenti registrati con mail allora avresti un record costitutito dai campi per esempio: user, mail, password.

    Se fosse un agenda che conteine i tuoi contatti allora avresti un record costituito dai campi: nome, cognome, numero telefono.

    -------

    Per il resto ci sono delle correzioni da fare il secondo "die" per esempio, poi come ti è già stato detto c'è un form che apri ma che non chiudi, oltre a ciò il form conterrebbe un submit ma non invia niente.

    Dovresti pazzientare un pò e studiarti un pò ma non più di danto come funziona il database. Il problema è che ci sono errori di html è poco produttivo passare al php senza aver chiare le basi di html, perchè alla fine potresti scrivere correttamente il php e sbagliando la parte di html la cosa non funzionerebbe comunque. E ti troveresti a non capire se è il php o l'html che va corretto.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    3
    Quote Originariamente inviata da Krek_Stealth Visualizza il messaggio
    Ok. Un paio di domande, i dati nel database li inserisci tramite form? Ho li inserisci direttamente nel database?

    Semplificando un pò.

    Nel tuo database avrai sicuramente una tabella.

    La tua Tabella è quella che viene dopo SELECT * etc... che Dovrebbe essere > SELECT * FROM 'nome_della_tua_tabella' <

    La tua tabella contiene o conterrà i tuoi eventi.

    Un evento è definito quando hai il "nome dell'evento" e "la data dell'evento" l'insieme di questi dati si chiama record. il singolo dato si chiama campo.

    Se fosse una tabella che contiene degli utenti registrati con mail allora avresti un record costitutito dai campi per esempio: user, mail, password.

    Se fosse un agenda che conteine i tuoi contatti allora avresti un record costituito dai campi: nome, cognome, numero telefono.

    -------

    Per il resto ci sono delle correzioni da fare il secondo "die" per esempio, poi come ti è già stato detto c'è un form che apri ma che non chiudi, oltre a ciò il form conterrebbe un submit ma non invia niente.

    Dovresti pazzientare un pò e studiarti un pò ma non più di danto come funziona il database. Il problema è che ci sono errori di html è poco produttivo passare al php senza aver chiare le basi di html, perchè alla fine potresti scrivere correttamente il php e sbagliando la parte di html la cosa non funzionerebbe comunque. E ti troveresti a non capire se è il php o l'html che va corretto.
    Bene. Intanto di nuovo un grazie x le spiegazioni. Sono riuscito a risolvere cambiando la richiesta al server (l'errore che avevo fatto era stato quello di chiedergli solo se c'era un titolo che combaciava ma non se c'era anche una data che combaciava. In poche parole avevo fatto una SELECT * ... con una sola condizione sul WHERE. Adesso aggiungendo la seconda ovvero chiedendogli anche la data ho risolto. )

    Per quanto riguarda il secondo form che come mi hai fatto notare avevo dimenticato una chiusura, dico a mia discolpa che era una cosa fatta molto in fretta, giusto per vedere se riuscivo a far controllare al server l'eventuale presenza di dati con lo stesso titolo o data e poi reinviare (ed adesso sistemo preparandomi un altro file php che poi richiamerò al posto di quel abbozzato form con un require).

    Per reinviare tutti i dati ho corretto il tiro usando le sessioni e salvandomi quindi i dati per poterli reinviare.

    Grazie per la spiegazione su db: non avevo collegato la parola campo in quel contesto ai campi dei record.

    Ah, si giusto. I dati li inserisco via form ma credo che ormai...

    Ora devo solo capire come si fa a segnalare di aver risolto il problema su questo forum...

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.