$ _POST проблемы с PHP и HTML

У меня проблема со следующим $_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
    {
	
?>
var_dump $ _POST проблемы с PHP и HTML

Я не знаю, правильный ли это ответ, но, если я не ошибаюсь, $ _POST нужно использовать с именем, а не с идентификатором.

Leo 27.11.2018 15:07
$ MyInput = $ _ POST [ 'myInput "]; думаю пусто
Leo 27.11.2018 15:07

это не очень понятно ... вы устанавливаете $ myinput с помощью post, но когда вы редактируете свой ввод, $ _POST остается пустым ... поэтому вам нужно получить это значение в своем файле js или получить его непосредственно из $ _POST в вашем файле affidatario.php

Sfili_81 27.11.2018 15:08
Разве вы еще не публиковали что-то подобное? - Похоже на форму репоста.
Funk Forty Niner 27.11.2018 15:11

да, но если вы читаете вопросы, то понимаете, что проект такой же, а вопросы разные !!! @FunkFortyNiner

AlexLogic 27.11.2018 15:12

так что это неопределенный вопрос индекса, тогда

Funk Forty Niner 27.11.2018 15:13

Итак, @AlexLogic считывает значение в affidatario.php значение $ _POST ["myInput"] и прочтите, как работают $ _GET и $ _POST.

Sfili_81 27.11.2018 15:15

Вы когда-нибудь действительно отправляли форму? Ваша функция controlla просто загружает новую страницу, задав window.location.href

Joni 27.11.2018 15:18
«Как я могу получить значение myInput?» - по отправка это правильно в первую очередь. Разве это не заставило вас подумать, что в ваших отладочных выводах значение idCantiere было показано как 2053813695?myInput=…? Это потому, что вы испортили синтаксис строки запроса - это начинается с вопросительным знаком, но несколько пар имя = значение отделены друг от друга амперсандом (тогда как вы пытались использовать вопросительный знак второй).
misorude 27.11.2018 15:19

Мне очень жаль, что я сделал так много ошибок, но я новичок и не понимаю, в чем я ошибаюсь ...

AlexLogic 27.11.2018 15:20

@misorude, поэтому я должен поставить что-то вроде этого = ../affidatario.php?idCantiere=<?php echo $idCantiere?>&myInput=<?php echo $myInput?>

AlexLogic 27.11.2018 15:24

Да, конечно. Вот как работает строка запроса.

misorude 27.11.2018 15:25

хорошо, теперь результат vardump - array(2) { ["idCantiere"]=> string(9) "867012990" ["myInput"]=> string(0) "" }

AlexLogic 27.11.2018 15:26

но я не понимаю, почему поля NULL

AlexLogic 27.11.2018 15:27

@FunkFortyNiner, а почему ты поставил меня как дубликат? какое это имеет отношение к моему вопросу? * Смущенный *

AlexLogic 27.11.2018 16:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
15
74
1

Ответы 1

Во-первых, используйте 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 :(

AlexLogic 27.11.2018 15:17

Да, у вас тоже есть проблема с функцией controlla. Я бы сейчас удалил этот ответ, но в мобильном приложении такой функции нет.

Joni 27.11.2018 15:30

и как я могу изменить функцию controlla ()?

AlexLogic 27.11.2018 15:33

посмотреть обновление,

Joni 27.11.2018 19:25

Другие вопросы по теме