PHP UPDATE Mysql e PHP - CRUD

FrancescoZoino0

Utente Silver
23 Giugno 2017
128
28
40
80
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)
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"] . "&nbsp;" . $row["cognome"] . "&nbsp;(" . $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>
 

Allegati

  • 2.PNG
    2.PNG
    28.9 KB · Visualizzazioni: 16
  • 3.PNG
    3.PNG
    23.1 KB · Visualizzazioni: 14
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)
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"] . "&nbsp;" . $row["cognome"] . "&nbsp;(" . $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>
Ciao @FrancescoZoino0, hai ancora questo problema oppure è sistemato?