Salve, sto impostando un Pannello per la gestione dei miei clienti in PHP, sono riuscito ad eseguire alcune funzioni di MySQL e PHP come INSERT, UPDATE, DELETE.
Però mi sono bloccato, ho una pagina di UPDATE, dove mostra una lista dei clienti (quindi le $row del database in una tabella) e successivamente c'è un form (con action="post" e un core con la funzione UPDATE con la dichiarazione delle variabili con valori provenienti dal $_POST), all'interno del form per compilare (UPDATE) i dati dei clienti (nome,cognome,etc..) c'è una lista di selezione dove viene mostrato "nome, cognome, id" dei clienti, la mia idea era quella che a seguito di una selezione veniva conservato l'ID (in questo modo nel core posso utilizzare WHERE='$id', attualmente lo devo sempre scrivere in un INPUT con name="id" (dove viene poi "agganciato" alla variabile $id con $_POST e in questo modo riesco ad aggiornare l'utente.
Io vorrei una cosa meno macchinosa, ovvero, quando seleziono l'utente mi conserva l'ID e lo associa al WHERE ($sql presente nel core), e che mi autocompili tutti i campi in quanto ogni volta che devo aggiornare un cliente presente nel database devo sempre ricompilarli manualmente altrimenti sostituisce i vecchi valori con quelli dei campi (anche vuoti).
Rilascio alcuni screenshot e frammenti di codice che potrebbero essere utili.
Grazie.
Gestisci-clienti.php (è il core)
form presente nella pagina (screenshot)
Però mi sono bloccato, ho una pagina di UPDATE, dove mostra una lista dei clienti (quindi le $row del database in una tabella) e successivamente c'è un form (con action="post" e un core con la funzione UPDATE con la dichiarazione delle variabili con valori provenienti dal $_POST), all'interno del form per compilare (UPDATE) i dati dei clienti (nome,cognome,etc..) c'è una lista di selezione dove viene mostrato "nome, cognome, id" dei clienti, la mia idea era quella che a seguito di una selezione veniva conservato l'ID (in questo modo nel core posso utilizzare WHERE='$id', attualmente lo devo sempre scrivere in un INPUT con name="id" (dove viene poi "agganciato" alla variabile $id con $_POST e in questo modo riesco ad aggiornare l'utente.
Io vorrei una cosa meno macchinosa, ovvero, quando seleziono l'utente mi conserva l'ID e lo associa al WHERE ($sql presente nel core), e che mi autocompili tutti i campi in quanto ogni volta che devo aggiornare un cliente presente nel database devo sempre ricompilarli manualmente altrimenti sostituisce i vecchi valori con quelli dei campi (anche vuoti).
Rilascio alcuni screenshot e frammenti di codice che potrebbero essere utili.
Grazie.
Gestisci-clienti.php (è il core)
PHP:
<?php
$inviato = <<<XYZ
<html>
<head>
<meta http-equiv="refresh" content="2;URL=../clienti/lista-clienti.php">
<style>
body,
html {
margin: 0;
height: 100%;
}
.loading-container {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: inherit;
}
img#loading-image {
width: 250px;
animation-name: BlinkingImage;
animation-duration: 1s;
animation-direction: alternate;
animation-iteration-count: infinite;
}
@keyframes BlinkingImage {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
</style>
</head>
<body>
<div class="loading-container">
<img src="../includes/img/logo.png" id="loading-image">
</div>
</body>
</html>
XYZ;
$errore = <<<XYZ
<html>
<head>
<meta http-equiv="refresh" content="2;URL=../clienti/aggiungi-nuovo.php">
<style>
body,
html {
margin: 0;
height: 100%;
}
.loading-container {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: inherit;
}
img#loading-image {
width: 250px;
animation-name: BlinkingImage;
animation-duration: 1s;
animation-direction: alternate;
animation-iteration-count: infinite;
}
@keyframes BlinkingImage {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
</style>
</head>
<body>
<div class="loading-container">
<img src="../includes/img/logo.png" id="loading-image">
</div>
</body>
</html>
XYZ;
$con = mysqli_connect('localhost','user','paswd','dbname');
if(!$con)
{
echo 'Connessione al Server fallita!';
}
$id = $_POST['id'];
$selezione = $_POST['selezione_cliente'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$indirizzo = $_POST['indirizzo'];
$comune = $_POST['comune'];
$provincia = $_POST['provincia'];
$cap = $_POST['cap'];
$email = $_POST['email'];
$pec = $_POST['pec'];
$codice_fiscale = $_POST['codice_fiscale'];
$iban = $_POST['iban'];
$metodo_pagamento = $_POST['metodo_pagamento'];
$telefono = $_POST['telefono'];
$telefono_2 = $_POST['telefono_2'];
$note = $_POST['note'];
$sql = "UPDATE clienti_privati SET nome='$nome', cognome='$cognome', indirizzo='$indirizzo', comune='$comune', provincia='$provincia', cap='$cap', email='$email', pec='$pec', codice_fiscale='$codice_fiscale', iban='$iban', metodo_pagamento='$metodo_pagamento', telefono='$telefono', telefono_2='$telefono_2', note='$note' WHERE id='$id'";
if(!mysqli_query($con,$sql))
{
echo $errore;
}
else
{
echo $inviato;
}
?>
form presente nella pagina (screenshot)
HTML:
<div class="card-body">
<form action="../cores/clienti/gestisci-clienti.php" method="post">
<h6 class="heading-small text-muted mb-4">Informazioni Generali</h6>
<div class="pl-lg-4">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="form-control-label" for="input-selezione_cliente">Seleziona il Cliente</label>
<input type="text" placeholder="Seleziona il Cliente..." name="selezione_cliente" list="clienti" class="form-control">
<datalist id="clienti">
<?php
$conn = mysqli_connect("localhost", "", "", "");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, nome, cognome FROM clienti_privati";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<option value=" . $row["nome"] . " " . $row["cognome"] . " (" . $row["id"] . ")>";
}
echo "</table>";
} else { echo "0 Risultati"; }
$conn->close();
?>
</datalist>
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-nome">Nome</label>
<input id="input-nome" type="text" name="nome" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-cognome">Cognome</label>
<input id="input-cognome" type="text" name="cognome" class="form-control">
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-indirizzo">Indirizzo</label>
<input id="input-indirizzo" type="text" name="indirizzo" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-comune">Comune</label>
<input id="input-comune" type="text" name="comune" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-provincia">Provincia</label>
<input type="text" placeholder="Seleziona la Provincia" name="provincia" list="province" class="form-control">
<datalist id="province">
<option value="AG">
<option value="AL">
<option value="AN">
<option value="AO">
<option value="AQ">
<option value="AR">
<option value="AP">
<option value="AT">
<option value="AV">
<option value="BA">
<option value="BT">
<option value="BL">
<option value="BN">
<option value="BG">
<option value="BI">
<option value="BO">
<option value="BZ">
<option value="BS">
<option value="BR">
<option value="CA">
<option value="CL">
<option value="CB">
<option value="CI">
<option value="CE">
<option value="CT">
<option value="CZ">
<option value="CH">
<option value="CO">
<option value="CS">
<option value="CR">
<option value="KR">
<option value="CN">
<option value="EN">
<option value="FM">
<option value="FE">
<option value="FI">
<option value="FG">
<option value="FC">
<option value="FR">
<option value="GE">
<option value="GO">
<option value="GR">
<option value="IM">
<option value="IS">
<option value="SP">
<option value="LT">
<option value="LE">
<option value="LC">
<option value="LI">
<option value="LO">
<option value="LU">
<option value="MC">
<option value="MN">
<option value="MS">
<option value="MT">
<option value="VS">
<option value="ME">
<option value="MI">
<option value="MO">
<option value="MB">
<option value="NA">
<option value="NO">
<option value="NU">
<option value="OG">
<option value="OT">
<option value="OR">
<option value="PD">
<option value="PA">
<option value="PR">
<option value="PV">
<option value="PG">
<option value="PU">
<option value="PE">
<option value="PC">
<option value="PI">
<option value="PT">
<option value="PN">
<option value="PZ">
<option value="PO">
<option value="RG">
<option value="RA">
<option value="RC">
<option value="RE">
<option value="RI">
<option value="RN">
<option value="Roma">
<option value="RO">
<option value="SA">
<option value="SS">
<option value="SV">
<option value="SI">
<option value="SR">
<option value="SO">
<option value="TA">
<option value="TE">
<option value="TR">
<option value="TO">
<option value="TP">
<option value="TN">
<option value="TV">
<option value="TS">
<option value="UD">
<option value="VA">
<option value="VE">
<option value="VB">
<option value="VC">
<option value="VR">
<option value="VV">
<option value="VI">
<option value="VT">
<option value="ESTERO">
</datalist>
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-cap">CAP</label>
<input maxlength="5" id="input-cap" type="text" name="cap" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-telefono">Cellulare</label>
<input maxlength="10" id="input-telefono" type="text" name="telefono" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-telefono_2">Telefono</label>
<input maxlength="15" id="input-telefono_2" type="text" name="telefono_2" class="form-control">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label class="form-control-label" for="input-email">Indirizzo E-mail</label>
<input id="input-email" class="form-control" type="email" name="email">
</div>
</div>
</div>
</div>
<hr class="my-4" />
<!-- ########################## -->
<h6 class="heading-small text-muted mb-4">Informazioni Fiscali</h6>
<div class="pl-lg-4">
<div class="row">
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-pec">Indirizzo PEC</label>
<input type="email" id="input-pec" name="pec" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-codice_fiscale">Codice Fiscale</label>
<input maxlength="16" type="text" id="input-codice_fiscale" name="codice_fiscale" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-iban">IBAN</label>
<input maxlength="27" type="text" id="input-iban" name="iban" class="form-control">
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-control-label" for="input-metodo_pagamento">Metodo di Pagamento</label>
<input type="text" id="input-metodo_pagamento" name="metodo_pagamento" class="form-control">
</div>
</div>
</div>
</div>
<hr class="my-4" />
<!-- Description -->
<h6 class="heading-small text-muted mb-4">Informazioni aggiuntive</h6>
<div class="pl-lg-4">
<div class="form-group">
<label class="form-control-label">Note</label>
<textarea rows="4" class="form-control" name="note"></textarea>
</div>
</div>
<div class="text-right">
<input type="submit" class="btn btn-sm btn-primary" value="Modifica" />
</div>
</form>
</div>
</div>