Редактирование таблицы SQL с помощью PHP из формы HTML - PullRequest
2 голосов
/ 15 октября 2019

Прошел мой день, работая над этим проектом, и теперь мой мозг не может помочь мне закончить. Я надеюсь, что кто-нибудь может мне помочь! Я все еще учусь, поэтому вы найдете ошибки. Я делаю базу данных для моих товарищей по команде. Я только что создал большую форму, связанную с базой данных SQL. Оно работает. И страница, где они могут видеть все данные из HTML-таблицы. Сейчас я работаю, редактируя значения таблицы из аналогичной формы.

Это php-форма

<?php
$link = mysqli_connect("localhost", "", "", "");

if($link === false) {
    die("ERROR: " . mysqli_connect_error());
}

$n_ordine = mysqli_real_escape_string($link, $_REQUEST['n_ordine']);
$cliente = mysqli_real_escape_string($link, $_REQUEST['cliente']);
$data = mysqli_real_escape_string($link, $_REQUEST['data']);
$paese = mysqli_real_escape_string($link, $_REQUEST['paese']);
$operatore = mysqli_real_escape_string($link, $_REQUEST['operatore']);
$n_spedizione = mysqli_real_escape_string($link, $_REQUEST['n_spedizione']);
$fornitore = mysqli_real_escape_string($link, $_REQUEST['fornitore']);
$ord_forn = mysqli_real_escape_string($link, $_REQUEST['ord_forn']);
$n_fornitore = mysqli_real_escape_string($link, $_REQUEST['n_fornitore']);
$corriere = mysqli_real_escape_string($link, $_REQUEST['corriere']);
$n_corriere = mysqli_real_escape_string($link, $_REQUEST['n_corriere']);
$riserva = mysqli_real_escape_string($link, $_REQUEST['riserva']);
$marrara = mysqli_real_escape_string($link, $_REQUEST['marrara']);
$note = mysqli_real_escape_string($link, $_REQUEST['note']);
$esito = mysqli_real_escape_string($link, $_REQUEST['esito']);
$rientro = mysqli_real_escape_string($link, $_REQUEST['rientro']);
$spese_forn = mysqli_real_escape_string($link, $_REQUEST['spese_forn']);
$spese_corr = mysqli_real_escape_string($link, $_REQUEST['spese_corr']);
$sostituzione = mysqli_real_escape_string($link, $_REQUEST['sostituzione']);
$n_fatt_orig = mysqli_real_escape_string($link, $_REQUEST['n_fatt_orig']);
$n_storno = mysqli_real_escape_string($link, $_REQUEST['n_storno']);

$sql = "INSERT INTO databasename (n_ordine, cliente, data, paese, operatore, n_spedizione, fornitore, ord_forn, n_fornitore, corriere, n_corriere, riserva, marrara, note, esito, rientro, spese_forn, spese_corr, sostituzione, n_fatt_orig, n_storno) VALUES ('$n_ordine', '$cliente', '$data', '$paese', '$operatore', '$n_spedizione', '$fornitore', '$ord_forn', '$n_fornitore', '$corriere', '$n_corriere', '$riserva', '$marrara', '$note', '$esito', '$rientro', '$spese_forn', '$spese_corr', '$sostituzione', '$n_fatt_orig', '$n_storno')";
if(mysqli_query($link, $sql)){
    echo "OK";
} else{
    echo "ERROR: $sql. " . mysqli_error($link);
}

mysqli_close($link);
?>

Затем я создал эту форму, чтобы показать / отредактировать значение таблицы

* 1007. *

Нажав кнопку «Изменить», я получу форму с правильным значением

<?php

$link = mysqli_connect("localhost", "", "", "");

if($link === false) {
    die("ERROR " . mysqli_connect_error());
}

$num = $_GET['n_ordine']; 
$query = "SELECT * FROM databasename WHERE n_ordine = '$num'"; 
$result = mysqli_query($link,$query);
$row = mysqli_fetch_array($result);
?>

<form action="edit.php" method="post">

<table>

<tr>
<td>N°Ordine:</td>
<td><input type="text" name="n_ordine" value="<?php echo "$row[n_ordine]"; ?>"></td>
</tr>

<tr>
<td>Cliente:</td>
<td><input type="text" name="cliente" value="<?php echo "$row[cliente]"; ?>"></td>
</tr>

<tr>
<td>Data:</td>
<td><input type="text" name="data" value="<?php echo "$row[data]"; ?>"></td>
</tr>

<tr>
<td>Paese:</td>
<td><input type="text" name="paese" value="<?php echo "$row[paese]"; ?>"></td>
</tr>

<tr>
<td>Operatore:</td>
<td><input type="text" name="operatore" value="<?php echo "$row[operatore]"; ?>"></td>
</tr>

    <tr>
<td>Numero Spedizione:</td>
<td><input type="text" name="n_spedizione" value="<?php echo "$row[n_spedizione]"; ?>"></td>
</tr>

    <tr>
<td>Fornitore:</td>
<td><input type="text" name="fornitore" value="<?php echo "$row[fornitore]"; ?>"></td>
</tr>

    <tr>
<td>Ordine Fornitore:</td>
<td><input type="text" name="ord_forn" value="<?php echo "$row[ord_forn]"; ?>"></td>
</tr>

    <tr>
<td>Note Fornitore:</td>
<td><input type="text" name="n_fornitore" value="<?php echo "$row[n_fornitore]"; ?>"></td>
</tr>

    <tr>
<td>Corriere:</td>
<td><input type="text" name="corriere" value="<?php echo "$row[corriere]"; ?>"></td>
</tr>

    <tr>
<td>Note Corriere:</td>
<td><input type="text" name="n_corriere" value="<?php echo "$row[n_corriere]"; ?>"></td>
</tr>

    <tr>
<td>Riserva:</td>
<td><input type="text" name="riserva" value="<?php echo "$row[riserva]"; ?>"></td>
</tr>

    <tr>
<td>Marrara:</td>
<td><input type="text" name="marrara" value="<?php echo "$row[marrara]"; ?>"></td>
</tr>

    <tr>
<td>Note:</td>
<td><input type="text" name="note" value="<?php echo "$row[note]"; ?>"></td>
</tr>

    <tr>
<td>Esito:</td>
<td><input type="text" name="esito" value="<?php echo "$row[esito]"; ?>"></td>
</tr>

    <tr>
<td>Rientro:</td>
<td><input type="text" name="rientro" value="<?php echo "$row[rientro]"; ?>"></td>
</tr>

    <tr>
<td>Spese da Addebitare al Fornitore:</td>
<td><input type="text" name="ospese_forn" value="<?php echo "$row[spese_forn]"; ?>"></td>
</tr>

    <tr>
<td>Spese da Addebitare al Corriere:</td>
<td><input type="text" name="spese_corr" value="<?php echo "$row[spese_corr]"; ?>"></td>
</tr>

    <tr>
<td>Sostituzioni fornitori / Note di Credito e/o Sconti:</td>
<td><input type="text" name="sostituzione" value="<?php echo "$row[sostituzione]"; ?>"></td>
</tr>

    <tr>
<td>N°Fattura Originaria:</td>
<td><input type="text" name="n_fatt_orig" value="<?php echo "$row[n_fatt_orig]"; ?>"></td>
</tr>

    <tr>
<td>N°Nota a Storno:</td>
<td><input type="text" name="n_storno" value="<?php echo "$row[n_storno]"; ?>"></td>
</tr>

</table>
<input type="submit" value="Update">
</form>

Затем я застрял, потому что я пытался использовать такой запрос в файле edit.php:

sql = "UPDATE gestionale SET n_ordine = ' ".$n_ordine." ', cliente = ' ".$cliente." ', data = ' ".$data." ', paese = ' ".$paese." ', operatore = ' ".$operatore." ', n_spedizione = ' ".$n_spedizione." ', fornitore = ' ".$fornitore." ', ord_forn = ' ".$ord_forn." ', n_fornitore = ' ".$n_fornitore." ', corriere = ' ".$corriere." ', n_corriere = ' ".$n_corriere." ', riserva = ' ".$riserva." ', marrara = ' ".$marrara." ', note = ' ".$note." ', esito = ' ".$esito." ', rientro = ' ".$rientro." ', spese_forn = ' ".$spese_forn." ', spese_corr = ' ".$spese_corr." ', sostituzione = ' ".$sostituzione." ', n_fatt_orig = ' ".$n_fatt_orig." ', n_storno = ' ".$n_storno." ' WHERE n_ordine = '".$_POST['n_ordine']."'";

if(mysqli_query($link, $sql)){

    echo "Update Done Correctly";

} else{

    echo "ERROR: $sql. " . mysqli_error($link);
}


mysqli_close($link);

И, когда я обновляю все, это дает мне «Обновление выполнено правильно», ни единой ошибки, но, если я проверяю таблицу SQL, не происходит ни одного изменения. Возможно, что-то действительно простое в состоянии "ГДЕ", но я не вижу этого. Я также попытался изменить код следующим образом: sql = "UPDATE gestionale SET n_ordine = '". $ POST [' n_ordine ']. "И т. Д., Но то же самое.

Я надеюсь, что любой может увидеть, где находятсямои ошибки.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

1) Вы должны очистить это значение перед передачей его в SQL-запрос

$num = $_GET['n_ordine']; 
$query = "SELECT * FROM databasename WHERE n_ordine = '$num'"; 

2) Вы должны использовать кавычки при передаче строковых ключей из массивов:

$row[n_ordine] -> $row['n_ordine']

3) ВыМожно попытаться использовать PDO и связать параметры в запросе, потому что то, как вы это делаете прямо сейчас, небезопасно. https://www.php.net/manual/en/pdostatement.execute.php Это должно работать

4) Если вы не хотите использовать PDO, просто var_dump($sql); в своем последнем файле и вставить весь запрос - мы сможем проверить, что не так. Вы также можете вставить результат SELECT * from gestionale - это будет полезно

0 голосов
/ 15 октября 2019

Пожалуйста, измените вашу команду обновления следующим образом, добавьте подтверждение ошибки, чтобы вы могли получить возможную ошибку для исправления:

$sql = $link->query("UPDATE gestionale SET n_ordine = ' ".$n_ordine." ', cliente = ' ".$cliente." ', data = ' ".$data." ', paese = ' ".$paese." ', operatore = ' ".$operatore." ', n_spedizione = ' ".$n_spedizione." ', fornitore = ' ".$fornitore." ', ord_forn = ' ".$ord_forn." ', n_fornitore = ' ".$n_fornitore." ', corriere = ' ".$corriere." ', n_corriere = ' ".$n_corriere." ', riserva = ' ".$riserva." ', marrara = ' ".$marrara." ', note = ' ".$note." ', esito = ' ".$esito." ', rientro = ' ".$rientro." ', spese_forn = ' ".$spese_forn." ', spese_corr = ' ".$spese_corr." ', sostituzione = ' ".$sostituzione." ', n_fatt_orig = ' ".$n_fatt_orig." ', n_storno = ' ".$n_storno." ' WHERE n_ordine = '".$_POST['n_ordine']."'") or die(mysqli_error($link));

if($sql){

    echo "Update Done Correctly";

} else{

    echo "ERROR : Not updated";
}
...