У меня проблема со следующим $_POST. Как вы видите из кода, когда radioButton имеет значение ДА и вы нажимаете кнопку «Отправить», вы перенаправляетесь на страницу, где я поместил "IdCantiere" = (value random) и? myInput =, который был бы $_POST, который у меня не работает.
Перенаправление относится к странице affidatario.php, на которой я делаю $_GET обеих переменных.
при выполнении var_dump($_GET) единственное, что находит, - это idCantiere. Как я могу получить значение myInput?
Я размещаю свой код и несколько экранов
<html>
<body>
<fieldset>
<strong>Vuoi inserire un affidatario?</strong>
<form action = "../affidatario.php?idCantiere=<?php echo $idCantiere?>" method = "POST" name = "prova" onsubmit = "return controlla();">
SI<input type = "radio" name = "scelta" value = "si" />
<label name = "myLabel" id = "myLabel" style = "display: none;">Ragione Sociale Affidataria</label><input type = "text" id = "myInput" style = "display: none;"><br>
NO<input type = "radio" name = "scelta" value = "no" /><br />
<button type = "submit">INVIA</button>
</form>
</fieldset>
<?php
$myInput=$_POST["myInput"];
?>
<script language = "javascript">
function controlla() {
console.info("oie");
x = document.prova;
if (x.scelta.value == "si") {
window.location.href = '../affidatario.php?idCantiere=<?php echo $idCantiere?>?myInput=<?php echo $myInput?>'
return false;
}
if (x.scelta.value == "no") {
alert("Hai risposto no");
window.location.href = '../inserimentoCantiere.php'
return false;
}
}
document.querySelectorAll('input[name = "scelta"').forEach(function(a) {
a.addEventListener("change", function() {
let textBox = document.getElementById("myLabel");
if (textBox) textBox.style.display = this.value === "si" ? "block" : "none";
})
});
document.querySelectorAll('input[name = "scelta"').forEach(function(a) {
a.addEventListener("change", function() {
let textBox = document.getElementById("myInput");
if (textBox) textBox.style.display = this.value === "si" ? "block" : "none";
})
});
</script>
</body>
</html><?php
$idCantiere = $_GET["idCantiere"];
date_default_timezone_set('Europe/Rome');
$date = date('Y-m-d');
chdir("../../../../../Archivio/Cantieri");
opendir(".");
$myInput = $_GET["myInput"];
if (mkdir("../../../../Archivio/Cantieri/".$date."_".$myInput))
{
echo "Cartella account creata con successo! :D";
}
echo "<script type='text/javascript'>alert(myInput);</script>";
var_dump($_GET);
session_start();
if (!isset($_SESSION["username"])){
header('location: ../../../index.php');
}
else
{
?>
$ MyInput = $ _ POST [ 'myInput "]; думаю пусто
это не очень понятно ... вы устанавливаете $ myinput с помощью post, но когда вы редактируете свой ввод, $ _POST остается пустым ... поэтому вам нужно получить это значение в своем файле js или получить его непосредственно из $ _POST в вашем файле affidatario.php
да, но если вы читаете вопросы, то понимаете, что проект такой же, а вопросы разные !!! @FunkFortyNiner
так что это неопределенный вопрос индекса, тогда
Итак, @AlexLogic считывает значение в affidatario.php значение $ _POST ["myInput"] и прочтите, как работают $ _GET и $ _POST.
Вы когда-нибудь действительно отправляли форму? Ваша функция controlla просто загружает новую страницу, задав window.location.href
idCantiere было показано как 2053813695?myInput=…? Это потому, что вы испортили синтаксис строки запроса - это начинается с вопросительным знаком, но несколько пар имя = значение отделены друг от друга амперсандом (тогда как вы пытались использовать вопросительный знак второй).
Мне очень жаль, что я сделал так много ошибок, но я новичок и не понимаю, в чем я ошибаюсь ...
@misorude, поэтому я должен поставить что-то вроде этого = ../affidatario.php?idCantiere=<?php echo $idCantiere?>&myInput=<?php echo $myInput?>
Да, конечно. Вот как работает строка запроса.
хорошо, теперь результат vardump - array(2) { ["idCantiere"]=> string(9) "867012990" ["myInput"]=> string(0) "" }
но я не понимаю, почему поля NULL
@FunkFortyNiner, а почему ты поставил меня как дубликат? какое это имеет отношение к моему вопросу? * Смущенный *



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Во-первых, используйте name, а также идентификатор для вашего тега ввода:
<input type = "text" id = "myInput" name = "myInput" ...
Когда форма отправлена, вы можете прочитать значение с помощью $_POST["myInput"].
Во-вторых, ваша функция controlla, которая решает, отправлять ли форму, всегда возвращает false. Это означает, что форма фактически никогда не отправляется. При изменении window.location.href пользователь переходит на новую страницу, но без отправки данных формы на сервер.
Похоже, вы собираетесь изменить URL-адрес, по которому отправляется форма. Для этого вы можете изменить форму action:
function controlla(form) {
console.info("oie");
x = document.prova;
if (x.scelta.value == "si") {
return true;
}
if (x.scelta.value == "no") {
alert("Hai risposto no");
form.action = '../inserimentoCantiere.php'
return true;
}
}
Чтобы это сработало, вы должны изменить обработчик события onsubmit так, чтобы он передавал форму в controlla:
<form ...... onsubmit = "return controlla(this);">
Привет, Джони, спасибо за ответ .. Я добавил имя, но, несмотря на это, у меня не работает $ _POST :(
Да, у вас тоже есть проблема с функцией controlla. Я бы сейчас удалил этот ответ, но в мобильном приложении такой функции нет.
и как я могу изменить функцию controlla ()?
посмотреть обновление,
Я не знаю, правильный ли это ответ, но, если я не ошибаюсь, $ _POST нужно использовать с именем, а не с идентификатором.