[PHP] Salvare campo radio in db e leggerlo

VAik

Utente Attivo
16 Apr 2016
117
3
18
Ciao a tutti ragazzi
sto cercando di memorizzare sul mio db i vari campi textarea, checkbox,radio e select, per poi leggerli.

Ho realizzato nel db fornitomi da EasyPHP, una tabella "campi", con i campi colonna "id" (INT), "textarea", "checkbox", "radio", "select" (tutti e quattro VARCHAR).

Ho creato una pagina con il form da completare, che richiama l'applicazione di inserimento nel db (memorizzo-radio.php), e poi ho sviluppato un programma di lettura (leggere-radio.php).

Penso che riesce anche a memorizzare sul database in maniera opportuna, però non riesco a far visualizzare con il programma di lettura , la scelta fatta dall'utente.

mi esce appunto
Notice: Undefined index: tipo in C:\Program Files\EasyPHP-......\leggere-radio.php on line 17+

e sotto mi escono i due campi radio non selezionati



Cosa posso fare?


il form
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vediamo come memorizzare textarea</title>
</head>
<body>
<h3>voglio memorizzare textarea</h3>
<form method="post" action =" ">



<br><br>Che utente sei?<br>
<input type = "radio" name = "tipo" value = "azienda">azienda<br>
<input type = "radio" name = "tipo" value = "privato">privato<br>

<input type="submit" value ="invia dati">
</form>
</body>
</html>


Il programma di memorizzazione
PHP:
<?php

require_once('credenziali_esterno.php');
$link = mysqli_connect(DB_HOST, DB_USERN, DB_PSW) or die("Errore connessione: ". mysqli_connect_error());
$dbw = mysqli_select_db($link, DB_PROVA) or die("Errore apertura database: " . mysqli_error($link));

//vado a recuperare il value
$tipoutente=$_POST['tipo'];
//conterrà azienda o privato



$strsql = "INSERT INTO campi(checkbox,textarea,radio,sel) VALUES ('-','-','$tipoutente','-') ";
$rs = mysqli_query($link, $strsql) or die("Errore query database: " . mysqli_error($link));
if($rs){
    echo"Inserimento avvenuto con successo";
    echo"$tipoutente";
}

?>
Il programma di lettura
PHP:
<?php

//in corrispondenza del campo correttoo, assegnare l'attributo "checked"
//a livello di codice html
/*<?php echo $c1_checked?>*/


require_once('configurazione_credenziali_esterno.php');
$link = mysqli_connect(DB_HOST, DB_USERN, DB_PSW) or die("Errore connessione: ". mysqli_connect_error());
$dbw = mysqli_select_db($link, DB_PROVA) or die("Errore apertura database: " . mysqli_error($link));

$strsql = "SELECT radio FROM campi";

$rs = mysqli_query($link, $strsql) or die("Errore query database: " . mysqli_error($link));
while ($riga = mysqli_fetch_array($rs)) {
 
    $tipo=$riga['radio'];
  
}

$c1_checked=Null;
$c2_checked=Null;

if(isset($tipo)){

    if($tipo=='azienda'){$c1_checked='checked';}
        elseif($tipo=='privato'){$c2_checked='checked';}
}
 


?>
<form>
<input type = "radio" name = "tipo" value = "azienda<?php echo $c1_checked?>">azienda<br>
<input type = "radio" name = "tipo" value = "privato<?php echo $c2_checked?>">privato<br>
</form>
 
Ultima modifica di un moderatore:

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Ciao.

In leggere-radio.php, modifica questa riga
PHP:
$tipo=$riga['tipo'];

con questa
PHP:
$tipo=$riga['radio'];

e vedi se ti dà ancora errore.
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
Grazie AdeKnite
per il tuo intervento , mi hai fatto notare anche un'altra stupidata proveniente da un copia ed incolla precedente, che ho subito modificato.
Ora visualizzo i campi radio ma non compare quello selezionato dall'utente
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
Forse dovevo modificare il campo di input in questo modo.....
Codice:
<input type = "radio" name = "tipo" value = "azienda" checked="<?php echo$c1_checked?>">azienda<br>
<input type = "radio" name = "tipo" value = "privato" checked="<?php echo$c2_checked?>">privato<br>

aspetto conferma dagli esperti, perchè non funziona bene: compare sempre lo stesso risultato per tutte le righe del db
 
Ultima modifica:

VAik

Utente Attivo
16 Apr 2016
117
3
18
Ciao AdeKnite, mi spiego meglio:
c'è il primo file dove l'utente deve selezionare la scelta ed inviare i dati ad un secondo file.
Questo secondo file li memorizza nel db. Il terzo file deve mostrare la scelta effettuata dall'utente, cioè il tondino selezionato
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Prova così.
PHP:
<form>
<input type = "radio" name = "tipo" value = "azienda" <?php echo $c1_checked?>>azienda<br>
<input type = "radio" name = "tipo" value = "privato" <?php echo $c2_checked?>>privato<br>
</form>


E le variabili che ti determinano il check inizializzale in questo modo.
PHP:
$c1_checked=''; // stringa vuota
$c2_checked=''; // stringa vuota
 
  • Like
Reactions: VAik

VAik

Utente Attivo
16 Apr 2016
117
3
18
ciao,
ho apportato le modifiche che mi hai suggerito, e mi sembra che funzioni bene, ma non riesco a capire quale è la novità? aver usato ' ' al posto di null?
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Nel primo caso, ossia il seguente
PHP:
<input type = "radio" name = "tipo" value = "azienda" <?php echo $c1_checked?>>azienda<br>
probabilmente funziona lo stesso anche inizializzando le variabili a Null. Quando hai provato tu non ha funzionato poiché il codice PHP che avevi scritto produceva un HTML distorto. Infatti questo codice
PHP:
<form>
<input type = "radio" name = "tipo" value = "azienda<?php echo $c1_checked?>">azienda<br>
<input type = "radio" name = "tipo" value = "privato<?php echo $c2_checked?>">privato<br>
</form>

produce questo html che, come vedi, non è quello che intendevi ottenere tu.
HTML:
<form>
<input type = "radio" name = "tipo" value = "aziendachecked">azienda<br>
<input type = "radio" name = "tipo" value = "privato">privato<br>
</form>


Nel secondo caso che hai provato (quello in cui specifichi l'attributo 'checked'), invece, avresti come html di output il seguente
HTML:
<input type="radio" name="sdf" checked="checked">Azienda<br>
<input type="radio" name="sdf" checked="">Privato <!--problemi-->
e questo crea conflitto.

Un'altra soluzione, comunque, era inizializzare entrambe le variabili con 'unchecked' e poi cambiare il valore del radio selezionato a 'checked'.
 
  • Like
Reactions: VAik

VAik

Utente Attivo
16 Apr 2016
117
3
18
Grazie, forse ho intravisto la leggera differenza del codice.....grazie

Vorrei capire un po' meglio la tua ultima soluzione,

come si fa ad inizializzare inizialmente le variabili con 'unchecked' nel tag input?
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Non nel tag input. Intendo la stessa identica cosa che hai fatto tu dall'inizio, solo che al posto di settare $c1_checked = Null o $c1_checked = '', setti $c1_checked = 'unchecked'.
 
  • Like
Reactions: VAik

VAik

Utente Attivo
16 Apr 2016
117
3
18
ok, grazie molte dei consigli.

Oggi lo rimetto a posto e commento un po' di cose
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
se volessi memorizzare altre info tramite la scelta dei radio (ora abbiamo fatto gli interessi, per esempio vorrei creare la scelta per il colore preferito tanto per dirne una) devo prevedere sulla tabella del mio db un ulteriore colonna in cui memorizzare l'altra scelta, giusto?
e poi aumentare gli assegnamenti che sono stati fatti nel file di lettura per adeguarli alle scelte che si fanno (cioè altre variabili di assegnamento di riga vuota ed altre variabili a cui assegnare checked)

l'ho anche provata e funziona.

Ora ti vorrei chiedere, ma una cosa del genere come la si può sfruttare nella realtà?
dico per esempio in un sito....come può essere utile?
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
se volessi memorizzare altre info tramite la scelta dei radio (ora abbiamo fatto gli interessi, per esempio vorrei creare la scelta per il colore preferito tanto per dirne una) devo prevedere sulla tabella del mio db un ulteriore colonna in cui memorizzare l'altra scelta, giusto?
Sì, di solito si tende a disporre di un'ulteriore colonna.


Ora ti vorrei chiedere, ma una cosa del genere come la si può sfruttare nella realtà?
dico per esempio in un sito....come può essere utile?
Tornano utili ogni qualvolta ci sia bisogno di conservare delle informazioni che dovranno poi essere recuperate in seguito. Tali informazioni possono riguardare direttamente l'utente (Maschio/Femmina) fino ad arrivare a informazioni più tecniche come le impostazioni di personalizzazione sul sito (lo schema di colori da visualizzare, ad esempio). I casi sono davvero molti.
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
quindi bene o male la memorizzazione di questi dati è quella vista.
Cosa cambia invece è la lettura, che poi a seconda dei casi si arriva a stravolgere quello che abbiamo visto con l'ultimo programma?
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
La lettura avviene comunque attraverso una SELECT, ciò che cambia è l'utilizzo che viene fatto del dato. Può essere stampato a video o utilizzato internamente al programma (fattori decisionali, confronto, e quant'altro).
 
  • Like
Reactions: VAik
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] Salvare campo di una tabella in una variabile PHP 14
G php salvare file in campo blob mysql: massimo 4MB PHP 1
M [PHP] FPDF Salvare su disco C locale Windows PHP 3
L [PHP] Salvare csv da form dati PHP 5
G [PHP] SALVARE RECORD ESTRATTI DA DATABASE PHP 6
D Come salvare scelta della select "dinamica" ajax-php? Come dato php o attributo value tag option? Ajax 5
M Salvare i dati nel db e aprire altra pagina php PHP 7
S [PHP] Salvare dati tabella in formato exel PHP 0
C Salvare immagini da php in automatico PHP 2
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0

Discussioni simili