Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    68

    Variabili php con mysql

    Ciao a tutti,
    avrei gentilmente bisogno di aiuto per impostare delle variabili php in una query mysql.
    Mi spiego meglio, dovrei fare una ricerca in un db mysql tramite un form php dove nei campi vengono inserite le variabili per una determinata ricerca.
    Ora se tutte le variabili hanno un valore tutto funziona regolarmente.
    Nel momento in cui manca una sola variabile il tutto va in errore.
    Come devo impostare le variabili per le quali non sono interessato eseguire la ricerca e fare così in modo che la ricerca venga fatta solo ed esclusivamente per le variabili inserite?
    Spero di essermi spiegato bene.
    Grazi e ciao
    Federico

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Devi generare dinamicamente la clausola where (suppongo che le variabili di cui parli vadano lì).
    Mettiamo che nel form chiedi marca e modello di un'auto e l'utente può lasciare qualche campo vuoto

    Codice PHP:
    // questa serve in caso l'utente non scriva proprio niente
    // nota lo spazio prima di WHERE
    $where " WHERE 1 = 1";

    if ( 
    $_POST['marca'] != '' )
    {
        
    // nota lo spazio prima di AND
        
    $where .= " AND marca = '" $_POST['marca'] . "'";
    }

    if ( 
    $_POST['modello'] != '' )
    {
        
    // nota lo spazio prima di AND
        
    $where .= " AND modello = '" $_POST['modello'] . "'";
    }

    $query "SELECT * FROM auto " $where
    Io ho messo direttamente i valori che arrivano dal form per motivi di brevità, tu ovviamente dovrai fare i controlli del caso per garantire la sicurezza.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    68
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Devi generare dinamicamente la clausola where (suppongo che le variabili di cui parli vadano lì).
    Mettiamo che nel form chiedi marca e modello di un'auto e l'utente può lasciare qualche campo vuoto

    Codice PHP:
    // questa serve in caso l'utente non scriva proprio niente
    // nota lo spazio prima di WHERE
    $where " WHERE 1 = 1";

    if ( 
    $_POST['marca'] != '' )
    {
        
    // nota lo spazio prima di AND
        
    $where .= " AND marca = '" $_POST['marca'] . "'";
    }

    if ( 
    $_POST['modello'] != '' )
    {
        
    // nota lo spazio prima di AND
        
    $where .= " AND modello = '" $_POST['modello'] . "'";
    }

    $query "SELECT * FROM auto " $where
    Io ho messo direttamente i valori che arrivano dal form per motivi di brevità, tu ovviamente dovrai fare i controlli del caso per garantire la sicurezza.
    Esattamente, grazie.
    In pratica devo mettere tanti if quanti sono i campi per i quali voglio creare delle condizioni particolari.
    Posso inserire anche l'operatore OR?
    Ciao e grazie ancora.
    Federico

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Certo puoi crearla come vuoi la clausola, puoi usare OR, LIKE... tutto ciò che ti mette a disposizione MySQL, basta che alla fine la stringa generata sia corretta.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    68
    Scusa il ritardo per ringraziarti, ma il lavoro mi stà prendendo molto tempo....Grazie.
    Avrei un altro quesito da porti!!
    Dovrei popolare un campo select fatto con php con una determinata colonna del DB Mysql e che oltretutto si trova in un'altra tabella.
    Mi spiego meglio:
    dal mio file index.php gestisco una serie di campi input e select, dove il campo select 'pinco' viene popolato da una colonna della Tabella_2 e il campo select 'pallino' viene popolato da una colonna della Tabella_3 e che alla pressione del tasto invia tutti i dati inseriti compresi quelli selezionati nei campi select vanno a memorizzarsi in Tabella_1.
    E' possibile fare questo?

    Grazie ancora per la disponibilità
    Federico

  6. #6
    Utente di HTML.it L'avatar di kingpin
    Registrato dal
    May 2014
    residenza
    London, UK
    Messaggi
    30
    Quote Originariamente inviata da bonimba Visualizza il messaggio
    E' possibile fare questo?
    Tutto è possibile

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    68
    Quote Originariamente inviata da kingpin Visualizza il messaggio
    Tutto è possibile

    Scusa ma non mi sembra sia stato di aiuto...
    immaginavo che fosse possibile, il problema è come fare, un dritta, un esempio (vedi post di Alhazred che ringrazio ancora)...

    Ciao
    Federico

  8. #8
    Utente di HTML.it L'avatar di kingpin
    Registrato dal
    May 2014
    residenza
    London, UK
    Messaggi
    30
    Quote Originariamente inviata da bonimba Visualizza il messaggio
    Scusa ma non mi sembra sia stato di aiuto...
    immaginavo che fosse possibile, il problema è come fare, un dritta, un esempio (vedi post di Alhazred che ringrazio ancora)...

    Ciao
    Federico
    Hai ragione. Anche se amichevole, la risposta non è stata molto d'aiuto dal punto di vista pratico.

    Detto questo, cito menzionando parti del messaggio iniziale:

    Quote Originariamente inviata da bonimba Visualizza il messaggio
    Mi spiego meglio, dovrei fare una ricerca in un db mysql tramite un form php dove nei campi vengono inserite le variabili per una determinata ricerca.
    Qui manca il contesto pratico. Che tipo di variabili? Che tipo di "determinata ricerca"?
    Ci potrebbero essere diversi tipi di variabili e/o diversi tipi di "determinata ricerca" (ad esempio basase sull' "AND", o sull' "OR" di determinati parametri. O entrambi.).

    Quote Originariamente inviata da bonimba Visualizza il messaggio
    Ora se tutte le variabili hanno un valore tutto funziona regolarmente.
    Nel momento in cui manca una sola variabile il tutto va in errore.

    Nel momento in cui qualcosa "manca" e "tutto va in errore", direi che:
    1) dovresti prevenire che tutto vada in errore in anticipo
    2) se c'è un errore, dovresti mostrare all'utente finale un messaggio significativo che la ricerca o qualsiasi cosa essa fosse non è andata a buon fine. Nota che qui non intendo dire che dovresti sputare fuori uno stack trace del codice. L'utente non ha bisogno di vedere questo. Per non menzionare che far ciò potrebbe tradursi in un problema di sicurezza.
    3) dato che c'è un errore, dietro le quinte dovresti fare in modo di venire a conoscenza di tale errore in qualche modo (logging, monitoring) e agire di conseguenza (direttamente o in differita).

    Quote Originariamente inviata da bonimba Visualizza il messaggio
    Come devo impostare le variabili per le quali non sono interessato eseguire la ricerca e fare così in modo che la ricerca venga fatta solo ed esclusivamente per le variabili inserite?
    Spero di essermi spiegato bene.
    Com'è il tuo form? Che tipo di ricerca stai cercando di far girare?
    Non dai contesto e minimi dettagli. Si può solamente assumere come ha fatto Alzaret.

    E riguardo quell'esempio, seppur pienamente valido, è assolutamente insicuro. Se la sicurezza non ti preoccupa in questo caso d'uso specifico, allora continua pure. Se invece c'è anche solo la minima preoccupazione da parte tua (o chi per te) che qualcuno possa creare danni al tuo sistema, allora ti consiglio vivamente di rivedere il modo in cui stai progettando il tutto.

    Personalmente ti consiglierei di usare prepared statements e/o query escaping. In questo modo potrai garantire almeno un minimo di sicurezza ed evitare potenziali attacchi di SQL injection. E nota che non so come stai sputando fuori le variabili passate nel frontend quando queste sono sbagliate. Qui mi riferisco anche a potenziali attacchi XSS.

    Quote Originariamente inviata da bonimba Visualizza il messaggio
    dal mio file index.php gestisco una serie di campi input e select, dove il campo select 'pinco' viene popolato da una colonna della Tabella_2 e il campo select 'pallino' viene popolato da una colonna della Tabella_3 e che alla pressione del tasto invia tutti i dati inseriti compresi quelli selezionati nei campi select vanno a memorizzarsi in Tabella_1.
    E' possibile fare questo?
    Si. Un form invia sempre i dati selezionati di solito. Non c'è magia dietro a questo meccanismo.
    Se poi vuoi inviare i dati sputati fuori E ANCHE quelli selezionati, permettimi di dire che il tuo design è sbagliato. In tal caso che bisogno hai di inviare avanti e indietro TUTTI i dati + quelli selezionati e inviati dall'utente? Nessuno probabilmente, tanto tu tratterai solo quelli inviati al 99%.

    Se c'è qualcosa che non è chiaro sarò più che felice di chiarire.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    68
    Eccomi qua kingpin e chiunque voglia darmi informazioni...
    passiamo allora alla pratica reale.
    Attualmente con excel, macro e form gestisco gli ordini di servizio della mia azienda (Noleggio con conducente).
    In pratica, tramite un form inserisco i dati relativi ai servizi che mi vengono commissionati dalle agenzie e dai privati con cui lavoro.
    Il form di immissione ha i seguenti campi:


    1. data del servizio
    2. ora del servizio
    3. agenzia che commissiona il servizio
    4. descrizione del servizio
    5. numero di passeggeri
    6. mezzo con cui avviene il trasporto
    7. autista
    8. entrate
    9. uscite
    10. differenza
    11. ID univoco


    Alla click del pulsante salva sul form, tutti questi dati dopo opportuni controlli per verificare che siano corretti vengono inseriti in colonne e formare così un foglio con un database (excel).
    I campi contrassegnati in rosso sono di tipo select e quando vengono inserirti i dati con una macro vengono controllati per vedere se nella corrispettiva colonna di un secondo DB esiste già oppure no il dato inserito, in caso negativo lo inserisce nella rispettiva colonna del secondo DB.
    Ho messo campi select per fare in modo che quando poi devo fare una determinata ricerca, sono obbligato a farla con i dati inseriti e in questo form di inserimento per non digitare ogni volta gli stessi dati. Il campo ID è incrementato automaticamente.

    Alla fine di tutto quando devo organizzare la giornata di lavoro, in un secondo form con i seguenti campi:


    1. data inizio
    2. data fine
    3. agenzia
    4. mezzo
    5. autista


    inserisco la data del giorno o dal al in caso di più giorni e se non inserisco altre opzioni presenti con i campi select (in rosso) mi viene estratta tutta la giornata/e.
    Nel caso impostassi uno o più campi select, la ricerca avverrebbe con i filtri per cui potrei cercare un qualsiasi servizio o gruppo di servizi per (data, agenzia, mezzo, autista) e quindi ad esempio avere dei dati per una determinata data e con un determinato autista o mezzo oppure agenzia e valutare cosa ho guadagnato e speso per il periodo impostato.

    Questo grossomodo è quello che sto facendo con excel, naturalmente ho molte altre opzioni e form per gestire proprio il tutto dalla A alla Z per questo lavoro e fino ad ora tutto ha funzionato alla perfezione.
    Tutto questo attualmente viene fatto tramite pc in ufficio, ma visti i costi per i dipendenti ormai diventati impossibili bisogna tagliare le spese superflue e fra queste gli impiegati.

    Il problema ora, è che vista la mole di lavoro che abbiamo, tutti questi dati potrebbero essere inseriti anche quando stiamo attendendo un aereo, quando siamo in attesa o a disposizione di qualche cliente ecc. tramite Ipad, smartphone o qualsiasi device che possono collegarsi ad internet e sfruttare mysql come DB facendo così in modo viste le giornate intense che quando alla sera arriviamo a casa, il grosso del lavoro potrebbe essere fatto.

    Ora sto creando delle pagine web che mi permettano di fare tutto questo tramite MySql e PHP, ed è per questo che sto cercando informazioni precise e dettagliate per farlo, ma soprattutto per farlo funzionare bene come sta funzionando quello fatto con excel.

    Ho già cercato e trovato tanto aiuto in rete e ringrazio tutti quelli che hanno postato codice prezioso frutto delle loro esperienze e che a me è servito per partire con il progetto, ma alcune particolari funzioni non sono riuscito a trovarle e non so come si possono gestire, per questo mi sono rivolto al forum sperando di risolvere questi miei problemi con aiuto dai più esperti in questo campo.

    Spero di essere stato sufficientemente chiaro per far comprendere il tutto.

    Ciao e grazie
    Federico

  10. #10
    Utente di HTML.it L'avatar di kingpin
    Registrato dal
    May 2014
    residenza
    London, UK
    Messaggi
    30
    Quote Originariamente inviata da bonimba Visualizza il messaggio
    Il problema ora, è che vista la mole di lavoro che abbiamo, tutti questi dati potrebbero essere inseriti anche quando stiamo attendendo un aereo, quando siamo in attesa o a disposizione di qualche cliente ecc. tramite Ipad, smartphone o qualsiasi device che possono collegarsi ad internet e sfruttare mysql come DB facendo così in modo viste le giornate intense che quando alla sera arriviamo a casa, il grosso del lavoro potrebbe essere fatto.
    Ti consiglierei di farti un sistema di registrazione/login utenti per questo.

    Quote Originariamente inviata da bonimba Visualizza il messaggio
    ma alcune particolari funzioni non sono riuscito a trovarle e non so come si possono gestire
    Esempio please
    Dai un esempio di quello che vuoi fare nella realtà, o perlomeno ciò che immagini sarà la realtà.

    Dato X
    Quando faccio Y
    Succede Z

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.