[PHP] Delucidazioni Filter_sanitaze_string

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Un saluto a tutti gli amici del forum,
grazie al supporto di un amico sto effettuando un porting di un gestionale da mysql a mysqli.

Avrei necessità del vostro supporto perchè sto riscintrando un problema con l'insert dei campi in un db, per l'esattezza se nei campi del form inserisco caratteri tipo slash / o un apostrofo (via d'annunzio), la query fallisce, se non utilizzo caratteri speciali tutto va liscio.

Devo recuperare tante variabili, stando alla vostra esperienza, come potrei ovviare al problema dei caratteri speciali ? Avevo sentito parlare di una nuova funzione Filter_sanitaze_string, ma non so come implementarla nel mio script.

PHP:
$itr1 = mysqli_real_escape_string($mysqli, $_POST['itr1']);
$itr2 = mysqli_real_escape_string($mysqli, $_POST['itr2']);
$for1 = mysqli_real_escape_string($mysqli, $_POST['for1']);
$for2 = mysqli_real_escape_string($mysqli, $_POST['for2']);
$itr1 = trim(strip_tags(stripslashes(strtoupper($itr1))));
$itr2 = trim(strip_tags(stripslashes(strtoupper($itr2))));
$for1 = trim(strip_tags(stripslashes(strtoupper($for1))));
$for2 = trim(strip_tags(stripslashes(strtoupper($for2))));
$q1 = mysqli_real_escape_string($mysqli, $_POST['q1']);
$q2 = mysqli_real_escape_string($mysqli, $_POST['q2']);
$iu1 = mysqli_real_escape_string($mysqli, $_POST['iu1']);
$iu2 = mysqli_real_escape_string($mysqli, $_POST['iu2']);
$sc1 = mysqli_real_escape_string($mysqli, $_POST['sc1']);
$sc2 = mysqli_real_escape_string($mysqli, $_POST['sc2']);
$imp_1 = mysqli_real_escape_string($mysqli, $_POST['imp_1']);
$imp_2 = mysqli_real_escape_string($mysqli, $_POST['imp_2']);


Avevo anche (forse assurdamente pensato) ad una funzione del genere:

PHP:
function sanitize ($string)
{
    $string = filter_var($string, FILTER_SANITIZE_STRING);
    $string = trim($string);
    $string = stripslashes($string);
    $string = strip_tags($string);

    return $string;
}


Grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, la funzione mysqli_real_escape_string() è più che sufficiente per fare l'escape. Potresti con un ciclo sistemare tutti i campi ricevuti.
PHP:
foreach ($_POST as $key => $value) {
    $_POST[$key] = mysqli_real_escape_string($value);
}
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Ciao, la funzione mysqli_real_escape_string() è più che sufficiente per fare l'escape. Potresti con un ciclo sistemare tutti i campi ricevuti.
PHP:
foreach ($_POST as $key => $value) {
    $_POST[$key] = mysqli_real_escape_string($value);
}


Ciao criric,
nel ringraziarti per la risposta ti dico l'escape lo riesco a fare, ma il problema di query fallita si verifica con il tentativo si inserire backslash ( \ )
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
se inserisci un backslash l'escape te lo trasforma in \\
posta la query e l'errore sql che ti rstituisce
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
se inserisci un backslash l'escape te lo trasforma in \\
posta la query e l'errore sql che ti rstituisce

Buongiorno,
solo per una simulazione ho provato ad inserire nella input veicolo = \\ ALFA ROMEO \\\

se inserissi veicolo = \\ ALFA ROMEO \\ tutto ok la query cosi come sta va a buon fine.


Codice:
Ho trovato un errore nell'esecuzione della QUERY UPDATE appuntamenti SET veicolo = '\\ ALFA ROMEO \\\', data = STR_TO_DATE('21/05/2017', '%d/%m/%Y'), ora = '08:30:00', cliente = 'ANDREA D'ARIA D'ARIA', telefono = '3332511111 | 800122522', gestore = 'NESSUNO', tipo_pren = 'CLIENTE PRIVATO', stato_pren = 'ACCETTAZIONE', note = 'QUESTO E' \\\ SOLO UN COMMENTO DI TEST' WHERE idappuntamento = '1231

Grazie sempre per il prezioso supporto
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Non mi sembra che venga eseguito l'escape dall'errore che hai postato.
Prendi come esempio questo codice :
PHP:
$conn = mysqli_connect("localhost", "root", "password", "database");
$query = mysqli_real_escape_string($conn, "\\\ D'ARIA \ ALFA ROMEO \\");
var_dump($query);
/**
 * output
 * string '\\\\ D\'ARIA \\ ALFA ROMEO \\' (length=29)
 */
nota come sono stati gestiti i backslash dalla funzione di escape.
Posta tutto lo script fino all'esecuzione della query.
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Non mi sembra che venga eseguito l'escape dall'errore che hai postato.
Prendi come esempio questo codice :
PHP:
$conn = mysqli_connect("localhost", "root", "password", "database");
$query = mysqli_real_escape_string($conn, "\\\ D'ARIA \ ALFA ROMEO \\");
var_dump($query);
/**
 * output
 * string '\\\\ D\'ARIA \\ ALFA ROMEO \\' (length=29)
 */
nota come sono stati gestiti i backslash dalla funzione di escape.
Posta tutto lo script fino all'esecuzione della query.


Ciao criric buonasera,
e un saluto a tutti gli amici del forum,
ecco lo script che senza l'aiuto del mio amico non sarei mai riuscito a realizzare

PHP:
<?php

if (isset($_GET['id'])) {
$id = (int)$_GET['id'];
$sql1 = "SELECT * FROM appuntamenti WHERE idappuntamento = '$id'";
$res1 = $mysqli->query($sql1);
while ($row = $res1->fetch_array(MYSQLI_ASSOC)) {
$id = mysqli_real_escape_string($mysqli, $row['id']);
$cliente = mysqli_real_escape_string($mysqli, $row['cliente']);
$data = mysqli_real_escape_string($mysqli, $row['data']);
$ora = mysqli_real_escape_string($mysqli, $row['ora']);
$gestore = mysqli_real_escape_string($mysqli, $row['gestore']);
$veicolo = mysqli_real_escape_string($mysqli,$row['veicolo']);
$stato_pren = mysqli_real_escape_string($mysqli, $row['stato_pren']);
$tipo_pren = mysqli_real_escape_string($mysqli, $row['tipo_pren']);
$telefono = mysqli_real_escape_string($mysqli, $row['telefono']);
$note = mysqli_real_escape_string($mysqli, $row['note']);
$data = strtotime($data);
$data = date('d/m/Y', $data);
}

if (isset($_POST['submit'])) {
$id = (int)$_GET['id'];

/* RECUPERO I DATI DAL FORM INSERIMENTO COMMESSA */
$veicolo = filter_input(INPUT_POST, 'veicolo', FILTER_SANITIZE_STRING);
$cliente = filter_input(INPUT_POST, 'cliente', FILTER_SANITIZE_STRING);
$telefono = filter_input(INPUT_POST, 'telefono', FILTER_SANITIZE_STRING);
$note = filter_input(INPUT_POST, 'note', FILTER_SANITIZE_STRING);

$data = mysqli_real_escape_string($mysqli, $_POST['data']);
$ora = mysqli_real_escape_string($mysqli, $_POST['ora']);
$gestore = mysqli_real_escape_string($mysqli, $_POST['gestore']);
$tipo_pren = mysqli_real_escape_string($mysqli, $_POST['tipo_pren']);
$stato_pren = mysqli_real_escape_string($mysqli, $_POST['stato_pren']);

/* SETTO I MAIUSCOLI */
$veicolo = strtoupper($veicolo);
$cliente = strtoupper($cliente);
$note = strtoupper($note);

/* FILTRO LE ALTRE VARIABILI */
$data = trim(strip_tags(stripslashes($data)));
$ora = trim(strip_tags(stripslashes($ora)));
$telefono = trim(strip_tags(stripslashes($telefono)));
$gestore = trim(strip_tags(stripslashes(strtoupper($gestore))));
$tipo_pren = trim(strip_tags(stripslashes(strtoupper($tipo_pren))));
$stato_pren = trim(strip_tags(stripslashes(strtoupper($stato_pren))));
/* FINE FILTRI e CONVERSIONI SULLE VARIABILI POST */

$sql2 = "UPDATE appuntamenti SET veicolo = '$veicolo', data = STR_TO_DATE('$data', '%d/%m/%Y'), ora = '$ora', cliente = '$cliente', telefono = '$telefono', gestore = '$gestore', tipo_pren = '$tipo_pren', stato_pren = '$stato_pren', note = '$note' WHERE idappuntamento = '$id'";
$res2 = $mysqli->query($sql2);

if (!$res2) {
echo "<p style='margin-top: 40px;text-align:center;'>Ho trovato un errore nell'esecuzione della <b>QUERY</b> $sql2</p>";

}else{

$messaggio = "<div class='success'>Appuntamento aggiornato con successo! Attendi..</div>";
echo "<meta http-equiv='refresh' content='8;url=index.php?page=lista_appuntamenti_oggi&tipo=tutti&data=oggi'>";
 
  }
 }
}
?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
non fai l'escape di tutte le variabili, infatti l'escape sulla variabile $veicolo non c'è.
perchè fai una select prima ?
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
non fai l'escape di tutte le variabili, infatti l'escape sulla variabile $veicolo non c'è.
perchè fai una select prima ?

ma non lo faccio qua:
PHP:
$veicolo = mysqli_real_escape_string($mysqli,$row['veicolo']);

tramite la variabile superglobale $_GET recupero l'id dell'appuntamento che devo modificare,
effettuando una select che mi restituisce proprio quell'id, una volta recuperato mostro a video il form
per modificare i dati e tramite il submit aggiorno l'appuntamento.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
li lo fai quando estrai i dati della query e non serve ma dopo l'invio del post non lo fai.
Io te lo sistemerei un po.
Non hai postato l'inizializzazione di Mysqli ma immagino che hai qualcosa simile a
PHP:
$mysqli = new mysqli($host, $user, $password, $database);
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
li lo fai quando estrai i dati della query e non serve ma dopo l'invio del post non lo fai.
Io te lo sistemerei un po.
Non hai postato l'inizializzazione di Mysqli ma immagino che hai qualcosa simile a
PHP:
$mysqli = new mysqli($host, $user, $password, $database);

L'inizializzazione avviene esattamente come da te indicato,
come potrei migliorare un pò il codice ?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
intanto se invii il post non serve fare la select poi utilizzerei i cicli per fare l'escape come ti ho postato sopra.
Cosa manca al codice che hai postato a parte la connessione al db ? solo il form ? posta anche quello
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
intanto se invii il post non serve fare la select poi utilizzerei i cicli per fare l'escape come ti ho postato sopra.
Cosa manca al codice che hai postato a parte la connessione al db ? solo il form ? posta anche quello

Questo lo script completo:

PHP:
<?php

if (isset($_GET['id'])) {
$id = (int)$_GET['id'];
$sql1 = "SELECT * FROM appuntamenti WHERE idappuntamento = '$id'";
$res1 = $mysqli->query($sql1);
while ($row = $res1->fetch_array(MYSQLI_ASSOC)) {
$id = mysqli_real_escape_string($mysqli, $row['id']);
$cliente = mysqli_real_escape_string($mysqli, $row['cliente']);
$data = mysqli_real_escape_string($mysqli, $row['data']);
$ora = mysqli_real_escape_string($mysqli, $row['ora']);
$gestore = mysqli_real_escape_string($mysqli, $row['gestore']);
$veicolo = mysqli_real_escape_string($mysqli,$row['veicolo']);
$stato_pren = mysqli_real_escape_string($mysqli, $row['stato_pren']);
$tipo_pren = mysqli_real_escape_string($mysqli, $row['tipo_pren']);
$telefono = mysqli_real_escape_string($mysqli, $row['telefono']);
$note = mysqli_real_escape_string($mysqli, $row['note']);
$data = strtotime($data);
$data = date('d/m/Y', $data);
}

if (isset($_POST['submit'])) {
$id = (int)$_GET['id'];

/* RECUPERO I DATI DAL FORM INSERIMENTO COMMESSA */
$veicolo = filter_input(INPUT_POST, 'veicolo', FILTER_SANITIZE_STRING);
$cliente = filter_input(INPUT_POST, 'cliente', FILTER_SANITIZE_STRING);
$telefono = filter_input(INPUT_POST, 'telefono', FILTER_SANITIZE_STRING);
$note = filter_input(INPUT_POST, 'note', FILTER_SANITIZE_STRING);

$data = mysqli_real_escape_string($mysqli, $_POST['data']);
$ora = mysqli_real_escape_string($mysqli, $_POST['ora']);
$gestore = mysqli_real_escape_string($mysqli, $_POST['gestore']);
$tipo_pren = mysqli_real_escape_string($mysqli, $_POST['tipo_pren']);
$stato_pren = mysqli_real_escape_string($mysqli, $_POST['stato_pren']);

/* SETTO I MAIUSCOLI */
$veicolo = strtoupper($veicolo);
$cliente = strtoupper($cliente);
$note = strtoupper($note);

/* FILTRO LE ALTRE VARIABILI */
$data = trim(strip_tags(stripslashes($data)));
$ora = trim(strip_tags(stripslashes($ora)));
$telefono = trim(strip_tags(stripslashes($telefono)));
$gestore = trim(strip_tags(stripslashes(strtoupper($gestore))));
$tipo_pren = trim(strip_tags(stripslashes(strtoupper($tipo_pren))));
$stato_pren = trim(strip_tags(stripslashes(strtoupper($stato_pren))));
/* FINE FILTRI e CONVERSIONI SULLE VARIABILI POST */

$sql2 = "UPDATE appuntamenti SET veicolo = '$veicolo', data = STR_TO_DATE('$data', '%d/%m/%Y'), ora = '$ora', cliente = '$cliente', telefono = '$telefono', gestore = '$gestore', tipo_pren = '$tipo_pren', stato_pren = '$stato_pren', note = '$note' WHERE idappuntamento = '$id'";
$res2 = $mysqli->query($sql2);

if (!$res2) {
echo "<p style='margin-top: 40px;text-align:center;'>Ho trovato un errore nell'esecuzione della <b>QUERY</b> $sql2</p>";

}else{

$messaggio = "<div class='success'>Appuntamento aggiornato con successo! Attendi..</div>";
echo "<meta http-equiv='refresh' content='8;url=index.php?page=lista_appuntamenti_oggi&tipo=tutti&data=oggi'>";
 
  }
 }
}
?>


<? echo $messaggio; ?>

<form method="post" action="">

<fieldset>
<legend>Registra Appuntamento</legend>
<table id="add">
<tr>
<td><b>Veicolo</b></td>
<td><input type="text" name="veicolo" value="<?= $veicolo; ?>" required="required"></td>
<td><b>Stato Prenotazione</b></td>
<td><select name="stato_pren" required="required">
<?php
$sql5 = "SELECT * FROM stato_pren WHERE stato != '$stato_pren' ORDER BY stato ASC";
$rs5 = $mysqli->query($sql5);
echo "<option value='$stato_pren'>$stato_pren</option>";
while ($row = $rs5->fetch_array(MYSQLI_ASSOC)) {
$stato = mysqli_real_escape_string($mysqli, strtoupper($row['stato']));
echo "<option value='$stato'>$stato</option>";
}
?>
</select></td>
</tr>

<tr>
<td><b>Data Prenotazione</b></td>
<td><input type="text" name="data" id="datepicker" value="<?= $data; ?>" required="required"></td>
<td><b>Ora Prenotazione</b></td>
<td><input type="text" name="ora" class="timepicker" value="<?= $ora; ?>" required="required"></td>
</tr>

<tr>
<td><b>Cliente</b></td>
<td><input type="text" name="cliente" value="<?= $cliente; ?>" required="required"></td>
<td><b>Telefono</b></td>
<td><input type="text" name="telefono" value="<?= $telefono; ?>" required="required"></td>
</tr>

<tr>
<td><b>Gestore</b></td>
<td><select name="gestore">
<?php
$sql3 = "SELECT * FROM gestore WHERE gestore != '$gestore' ORDER BY gestore ASC";
$rs3 = $mysqli->query($sql3);
echo "<option value='$gestore'>$gestore</option>";
while ($row = $rs3->fetch_array(MYSQLI_ASSOC)) {
$nuovo_gest = mysqli_real_escape_string($mysqli, strtoupper($row['gestore']));
echo "<option value='$nuovo_gest'>$nuovo_gest</option>";
}
?>
</select></td>

<td><b>Tipo Cliente</b></td>
<td><select name="tipo_pren" required="required">
<?php
$sql4 = "SELECT * FROM tipoprenotazione WHERE tipopren != '$tipo_pren' ORDER BY tipopren ASC";
$rs4 = $mysqli->query($sql4);
echo "<option value='$tipo_pren'>$tipo_pren</option>";
while ($row = $rs4->fetch_array(MYSQLI_ASSOC)) {
$tipopren = mysqli_real_escape_string($mysqli, strtoupper($row['tipopren']));
echo "<option value='$tipopren'>$tipopren</option>";
}
?>
</select></td>
</tr>


<tr>
<td><b>Modifica Lamentato</b></td>
<td><textarea maxlength="90" name="note" required="required"><?= $note; ?></textarea></td>
</tr>
</table>
</fieldset>

<input type="submit" name="submit" class="bottone" value="Aggiorna Appuntamento">
<div class="clear"></div>
</form>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
intanto ti schematizzo come farei io la struttura
PHP:
if (isset($_POST['submit'])) {
    // controllo dati
    // esecuzione query
    // messaggio
    die();
    // inutile andare avanti
}
if (isset($_GET['id'])) {
    // query per estrazione dati
    // form
} else {
    // senza id non puoi fare niente
    die("mi manca l'id");
}
dopo ti posto cosa farei nel submit.
Non serve l'escape quando estrai i dati dalla tabella.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
non ho avuto modo di testare ma piu o meno avrei fatto cosi
PHP:
<?php
$mysqli = new mysqli($host, $user, $password, $database);
if (isset($_POST['submit'])) {

    function pulisci($stringa, $mysqli) {
        return $mysqli->real_escape_string(trim(strip_tags(strtoupper($stringa))));
    }

    foreach ($_POST as $key => $value) {
        $_POST[$key] = pulisci($value, $mysqli);
    }
    extract($_POST);

    $sql2 = "UPDATE appuntamenti SET "
            . "veicolo = '$veicolo', "
            . "data = STR_TO_DATE('$data', '%d/%m/%Y'), "
            . "ora = '$ora', "
            . "cliente = '$cliente', "
            . "telefono = '$telefono', "
            . "gestore = '$gestore', "
            . "tipo_pren = '$tipo_pren', "
            . "stato_pren = '$stato_pren', "
            . "note = '$note' "
            . "WHERE idappuntamento = '$id'";
    // l'id lo metti come input hidden nel form cosi ti arriva in post

    if (!$mysqli->query($sql2)) {
        echo "<div class='error'>errore nell'esecuzione della query : " . $mysqli->error . "</div>";
        echo "<a href='index.php?page=lista_appuntamenti_oggi&tipo=tutti&data=oggi'> torna alla lista </a>";
    } else {
        echo "<div class='success'>Appuntamento aggiornato con successo! Attendi..</div>";
        header("refresh:5;url=index.php?page=lista_appuntamenti_oggi&tipo=tutti&data=oggi");
    }
    die();
}
if (isset($_GET['id'])) {
    $id = (int) $_GET['id'];
    $sql1 = "SELECT * FROM appuntamenti WHERE idappuntamento = '$id' LIMIT 1";
    $res1 = $mysqli->query($sql1);
    extract($res1->fetch_assoc());
    ?>
    qui il form
    <?php
}
?>
il bello della programmazione è che lo stesso risultato lo puoi ottenere in cento modi diversi tutti più o meno validi.
Per risolvere il tuo problema senza stravolgere il codice basta che aggiungi l'escape dopo il post anche alla variabile $veicolo
ps
la mia versione per popolare le select
PHP:
<select name="stato_pren" required="required">
    <?php
    $sql5 = "SELECT * FROM stato_pren ORDER BY stato ASC";
    $rs5 = $mysqli->query($sql5);
    while ($row = $rs5->fetch_assoc()) {
        echo "<option value='" . $row['stato'] . "'";
        if ($row['stato'] == $stato_pren) {
            echo " selected='selected' ";
        }
        echo ">" . $row['stato'] . "</option>";
    }
    ?>
</select>
pps
evita di usare gli short tag di php <?= e usa la versione estesa <?php echo : non tutti i server li hanno abilitati
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Un buon pomeriggio a tutti,
ho modificato tutto lo script applicando quanto suggerito, se effettuo il var_dump della query prima dell'esecuzione sembra essere ok

PHP:
string(286) "UPDATE appuntamenti SET veicolo = 'PEGOUT', data = STR_TO_DATE('2017-05-23', '%d/%m/%Y'), ora = '08:30:00', cliente = 'PINCO PALLI', telefono = '32451236521', gestore = 'NESSUNO', tipo_pren = 'CLIENTE PRIVATO', stato_pren = 'LAVORAZIONE', note = 'CAMBIO', WHERE idappuntamento = '1216' "

appena tolgo il var_dump ottengo questo errore:

PHP:
errore nell'esecuzione della query : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE idappuntamento = '1216'' at line 1

questa la query:

PHP:
if (isset($_POST['submit'])) {
   
        function pulisci($stringa, $mysqli){
            return $mysqli->real_escape_string(trim(strip_tags(strtoupper($stringa))));
        }
           
        foreach ($_POST as $key => $value) {
            $_POST[$key] = pulisci($value, $mysqli);
        }  
        extract($_POST);
       
       
        $sql2 = "UPDATE appuntamenti SET "
                . "veicolo = '$veicolo', "
                . "data = STR_TO_DATE('$data', '%d/%m/%Y'), "
                . "ora = '$ora', "
                . "cliente = '$cliente', "
                . "telefono = '$telefono', "
                . "gestore = '$gestore', "
                . "tipo_pren = '$tipo_pren', "
                . "stato_pren = '$stato_pren', "
                . "note = '$note', "
                . "WHERE idappuntamento = '$id'";
      
        var_dump ($sql2);
        exit;
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
hai messo una virgola in più
PHP:
. "note = '$note', "
essendo l'ultimo camp prima della where va tolta.
l'errore infatti ti suggerisce
syntax to use near 'WHERE
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
hai messo una virgola in più
PHP:
. "note = '$note', "
essendo l'ultimo camp prima della where va tolta.
l'errore infatti ti suggerisce

Grazieee mille criric, soprattuto per l'estrema pazienza ...
ci sono quasi, ho un problema nel formato della data, se trasformo la query eliminando
strtotime, recupero correttamente la data solo che nel formato 2017-05-23 e poi
non capisco il senso di quel die() dopo l'esecuzione della query ...

In sostanza se eseguo la query, gli appuntamenti adesso si aggiornano alla perfezione solo che resta
poi fermo sulla scritta "Appuntamento aggiornato con successo! Attendi.."

PHP:
        $sql2 = "UPDATE appuntamenti SET "
                . "veicolo = '$veicolo', "
                . "data = STR_TO_DATE('$data', '%d/%m/%Y'), "
                . "ora = '$ora', "
                . "cliente = '$cliente', "
                . "telefono = '$telefono', "
                . "gestore = '$gestore', "
                . "tipo_pren = '$tipo_pren', "
                . "stato_pren = '$stato_pren', "
                . "note = '$note' "
                . "WHERE idappuntamento = '$id' ";
        //var_dump ($sql2);
        //exit;
    
        if (!$mysqli->query($sql2)) {
            echo "<div class='error'>errore nell'esecuzione della query : " . $mysqli->error . "</div>";
            echo "<a href='index.php?page=lista_appuntamenti_oggi&tipo=tutti&data=oggi'> torna alla lista </a>";
        } else {
            echo "<div class='success'>Appuntamento aggiornato con successo! Attendi..</div>";
            header("refresh:5;url=index.php?page=lista_appuntamenti_oggi&tipo=tutti&data=oggi");
        }
        die();
    }
        if (isset($_GET['id'])) {
        $id = (int) $_GET['id'];
        $sql1 = "SELECT * FROM appuntamenti WHERE idappuntamento = '$id' LIMIT 1";
        $res1 = $mysqli->query($sql1);
        extract($res1->fetch_assoc());
    ?>

P.s
Purtroppo, ancora non utilizzo bootstrap e se non sbaglio la classe success fa parte del framework ...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
die() serve per interrompere il flusso della pagina : inutile andare avanti una volta fatta la query e informato del risultato.
per la data puoi fare cosi
PHP:
. "data = STR_TO_DATE('" . strtotime($data) . "', '%d/%m/%Y'), "
l'header refresh dovrebbe funzionare, strano! prova a metterlo da solo in una pagian e vedi che fa. dovrebbe scattare dopo 5 secondi
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
die() serve per interrompere il flusso della pagina : inutile andare avanti una volta fatta la query e informato del risultato.
per la data puoi fare cosi
PHP:
. "data = STR_TO_DATE('" . strtotime($data) . "', '%d/%m/%Y'), "
l'header refresh dovrebbe funzionare, strano! prova a metterlo da solo in una pagian e vedi che fa. dovrebbe scattare dopo 5 secondi

Adesso passa la data cosi :
PHP:
errore nell'esecuzione della query : Incorrect datetime value: '1495490400' for function str_to_date

e quando la recupero nella input la mostra cosi:
http://clip2net.com/s/3KG2DNn
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Problemi e delucidazioni sito in php PHP 3
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
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3

Discussioni simili