consentire flag che scrive una frase "prefissata" nel db e modificare campo db

ho questo campo crediti:

if ($_POST['crediti'])
            {
            $crediti = "'".$_POST['crediti'] ? trim($_POST['crediti']) : null."'";
            }
            if ($crediti) {
               if (!ereg("[0-9]{1,2}", $crediti)) {
                  echo "Crediti non validi!";
               }
            }
            else
            {
               $crediti = 'NULL';
            }

e dovrei dare la possibilità agli utenti nel caso non sappiano quanti siano, al momento dell'inserimento, di poter mettere: "in corso di accreditamento". Proprio questa frase. Direi che in primis devo cambiare il campo di tabella perchè non sia più solamente numerico (sbaglio?), poi dovrà dare i giusti controlli, e mi chiedo come poter implementare una cosa così... io avevo pensato di consentire un flag che appunto va direttamente a scrivere quella frase nel db, come posso fare una cosa del genere?

grazie

inviato 8 anni fa
gabar-el
X 0 X

ti consiglio di non modificare quel campo ma di aggiungerne un altro di tipo intero in cui mettere 1 se i crediti sono in corso di accertamento, 0 altrimenti.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ho inserito nel form un input checkbox, ora inserisco un campo nel db come dici tu, poi tramite php gli dico che se è flaggato il checkbox il campo crediti deve essere vuoto o non considerato altrimenti piglia ciò che c'è in crediti. ora il + è farlo.... vedo come sono messo....

risposto 8 anni fa
gabar-el
X 0 X

mi hanno consigliato di non aggiungere un campo ma di usare sempre il campo crediti, facendo si che se checkbox è selezionato nel campo crediti venga scritto -1, e facendo tornarlo tramite php come "in assegnazione". cosa ne pensi?

risposto 8 anni fa
gabar-el
X 0 X

io ho scritto questo, ma dubito che sia giusto:

if ($_POST['crediti']) 
                { 
                $crediti = "'".$_POST['crediti'] ? trim($_POST['crediti']) : null."'"; 
                } 
                if ($crediti) { 
                    if (!ereg("[0-9]{1,2}", $crediti)) { 
                        echo "Crediti non validi!"; 
                    } 
                } 
                else 
                { 
                    $crediti = 'NULL'; 
                } 
                 
                $_POST['assegnazione'] 
                if(isset($_POST['assegnazione'])) { 
                $crediti = "'".$_POST['assegnazione'] ? trim($_POST['assegnazione']) : null."'"; 
                } 
                if ("-1", $crediti) { 
                    $crediti = 'In assegnazione'; 
                }
risposto 8 anni fa
gabar-el
X 0 X

queste righe sono sicuramente sbagliate:

$crediti = "'".$_POST['crediti'] ? trim($_POST['crediti']) : null."'";

andrebbe corretta così:

$crediti = $_POST['crediti'] ? "'". trim($_POST['crediti']) ."'" : null;
  if ("-1", $crediti) {

che significa?!?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

grazie, avevo improvvisato copiando da ciò che mi passasti tu circa le date. ho anche capito perchè non va bene, però mi sa che funzia lo stesso, può essere?

quella roba orribile doveva essere una cosa del genere:

if ($crediti == "-1") {

nel pensiero che se settato a -1 sarà appunto in assegnazione

risposto 8 anni fa
gabar-el
X 0 X

up please....

posto la parte di html interessata:

<div><label for="crediti">Crediti: </label><input type="text" name="crediti" id="crediti" value="<?=$_SESSION['crediti']?>" />
               <label id="assegnazione" for="assegnazione">In assegnazione: </label><input type="checkbox" name="assegnazione" value="-1" />
            </div>

grazie

risposto 8 anni fa
gabar-el
X 0 X

qual'è la domanda?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

 :o

allora, spero di spiegarmi bene. Come posso fare per dire che un determinato campo del db (in questo caso crediti) deve essere impostato a -1 se viene flaggata una checkbox? L'intenzione dopo sarebbe quella di dire che se settato a -1 deve tornare una determinata scritta....

non so come fare il primo passaggio in php, considerando soprattutto che ho già il campo crediti imostato, devo quindi implementare la cosa modificando quel campo, in modo che interagisca con la checkbox che ha nome "assegnazione"....

grazie

risposto 8 anni fa
gabar-el
X 0 X

if(isset($_GET['nome_checkbox']) {

  $colonna_checkbox = "-1";

} else {

  $colonna_checkbox = "NULL";

}

$query = "INSERT INTO nome_tabella SET .... VALUES ($colonna)

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ok grazie, ma come faccio a fare interagire i due campi? (crediti e la checkbox) ovvero quando è usato crediti non deve essere possibile utilizzare la check e quando è utilizzata la check non si deve poter scrivere in crediti. Inoltre una volta che ho risolto questa cosa, come dico (estrapolando tramite select) per es. in una tabella (in una precisa cella) che se è settato uno devo avere quello altrimenti l'altro?

non mi conviene quindi utilizzare lo stesso campo crediti dandogli la possibilità di esser settato a -1 tramite la check? così mi sa che mi viene più facile estrapolare poi i dati, poichè mi basterà solo fare una select e tanto ci avrò pensato prima a settarlo in un modo o nell'altro.... no? spero di non aver fatto un casino...

grazie

risposto 8 anni fa
gabar-el
X 0 X

ok immagino che ormai te le ho frantecate....

però mi chiedevo, non mi conviene fare una cosa tipo se è settato crediti piglio quello, se invece è settato checkbox piglio quello come -1 (scrivendolo sempre nello stesso campo del db), altrimenti non piglio nulla.

questo non dovrebbe risparmiarmi un pò di codice e di creazione campi?

Questo mi aiuterebbe poi anche nell'estrapolazione, che rimarrebbe tale, poichè il campo se pieno, sarà sempre quello, indipendentemente dal contenuto....

thanks  :angel:

risposto 8 anni fa
gabar-el
X 0 X

puoi fare una query per estrarre il valore, se il valore è positivo ti prendi i crediti se è negativo invece la checkbox

tutto tramite if ed else..

risposto 8 anni fa
Pixelate
X 0 X

cacchio, non riesco a capire. magari date per scontato delle cose che io non so. da come la dici pixelate sembra che io debba utilizzare un campo nel db apposito per la checkbox, ma io mi stavo chiedendo se riuscivo a far si che anche la checkbox possa settare lo stesso campo del db crediti....

grazie

risposto 8 anni fa
gabar-el
X 0 X

Si, puoi usare uno stesso campo. Cosa non riesci a fare?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ok.

dal fare sono lontano, ma per ora vorrei capire.

mi hai passato questo codice

if(isset($_GET['nome_checkbox']) {
  $colonna_checkbox = "-1";
} else {
  $colonna_checkbox = "NULL";
}

ti chiedo, non ottengo la stessa cosa se setto il value della checkbox a -1?

a parte questo, come faccio a far scrivere il -1 nel campo del db crediti?

ovvero, come faccio con la insert a dirgli che in crediti deve scrivere ciò che proviene da $crediti se settato o da $accreditamento (questo è il nome della mia checkbox) se settato quello?

$sql = "INSERT INTO circolari (titolo, descrizione, allegato, allegato2, allegato3, tema, data_corso_1, data_corso_2, data_corso_3, data_corso_4, numero_partecipanti, crediti, quota_iscrizione, data_inserimento)

VALUES ('$titolo', '$descrizione', '$allegato', '$allegato2', '$allegato3', '$tema', $data_corso_1, $data_corso_2, $data_corso_3, $data_corso_4, $numero_partecipanti, $crediti, $quota_iscrizione, NOW())";

grazie della pazienza e scusate le domande ignoranti, ma per me capire prima di agire su alcune cose è fondamentale per potere imparare qualcosina....

risposto 8 anni fa
gabar-el
X 0 X

ho usato isset() per la checkbox poiché se non vengono selezionate non le ritrovi nel $_POST

Per far scrivere il -1 nel campo del db crediti ti basta impostare a -1 la variabile $crediti che inserisci in $sql

Devi scrivere in PHP: se la checkbox è settata allora $crediti = -1 altrimenti $crediti = $_POST['crediti']

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

io ho fatto così, magari male, anzi sicuro perchè non va...

if ($_POST['crediti'])
            {
            if ($_POST['accreditamento']==true) {
               $crediti=-1; }
            } else {
            $crediti = $_POST['crediti'] ? "'".trim($_POST['crediti'])."'" : null;
            }
            if ($crediti) {
               if (!ereg("[0-9]{1,2}", $crediti)) {
                  echo "Crediti non validi!";
               }
            }
            else
            {
               $crediti = 'NULL';
            }

ma appunto non mi scrive i crediti, anche se non mi da errore, ed ho notato che non mi scrive più nemmeno se metto i crediti nel campo apposito, che prima invece funzionava bene....

grazie

risposto 8 anni fa
gabar-el
X 0 X

up please...

risposto 8 anni fa
gabar-el
X 0 X

ho riisolto così:

codice pagina elaborazione form:

if ($_POST['accreditamento']==true)
               {
                  $crediti=-1; 
               }
               else
               {
                  $crediti = $_POST['crediti'] ? "'".trim($_POST['crediti'])."'" : null;
               }
               if ($crediti)
               {
                  if (!ereg("[0-9]{1,2}|-1", $crediti))
                  {
                     echo "Crediti non validi!";
                  }
               }
               else
               {
                  $crediti = 'NULL';
               }

avevo poi un problema di base nel db poichè il campo crediti era flaggato unsigned, mentre deve essere signed per poter accettare numeri negativi (ovvero il mio -1)

estrapolo tutto poi nella pagina che deve mostrare la cosa con questa porzione di codice:

echo "</td>
<td class=\"numero\">$numero_partecipanti</td>
<td class=\"crediti\">";
   if ($crediti == -1)
   echo "In corso di accreditamento";
   else
   echo "$crediti";

grazie al contributo dei mod gianni e trashofmaster sono pian piano riuscito e ho imparato molte cose.

grazie!

 :clapping:

risposto 8 anni fa
gabar-el
modificato 8 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda