मैं एक प्रोजेक्ट पर काम कर रहा हूं और मूल रूप से मुझे एक इनपुट फॉर्म की सामग्री को एक सरणी में स्टोर करने की आवश्यकता है, लेकिन मुझे इसे जोड़ना है, इसे प्रतिस्थापित नहीं करना है, यही कारण है कि मैं session_start() का उपयोग करता हूं।
समस्या यह है कि इनपुट फॉर्म को खाली छोड़ने और इसलिए कोई इनपुट सबमिट नहीं करने के बाद भी पेज को रीफ्रेश करने के बाद भी आखिरी तत्व हर बार जोड़ा जाता है।

उदाहरण के लिए, मान लें कि पहली बार मैंने जॉन को इनपुट फॉर्म में जोड़ा और मैंने सबमिट बटन दबाया, पहली बार परिणाम सामान्य होंगे, ऐरे ([0] => John), लेकिन, केवल रीफ्रेश करके ( और इसलिए इनपुट फ़ील्ड को खाली देना) जॉन नाम बिना किसी कारण के सरणी में जोड़ा जाएगा, यह आउटपुट का एक उदाहरण है:

Array (
  [0] => John
  [1] => John
  [2] => John
  [3] => John
  [4] => John
  [5] => John
  [6] => John 
)

इस मामले में, मैंने पेज के 6 रिफ्रेश किए। ऐसा लगता है कि बटन सक्रिय रहता है और इस प्रकार if(isset($_POST['invia_prenotazione'])) नियंत्रण पास कर रहा है।

<?php
  session_start();
  if (!isset($_SESSION['nomi']))
  {
    $_SESSION['nomi']=array();
  }

  if(isset($_POST['invia_prenotazione']))
  {
    $_SESSION['nomi'][]=$_POST['nome'];
    echo "<br>";
    print_r($_SESSION['nomi']);
  }
?>

 <!DOCTYPE html>
 <html>
   <head>
     <title>Es1</title>
     <style>
       input
       {
         position: relative;
         display: block;
       }
     </style>
   </head>
   <body>
     <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
       Nome Evento: <input type="text" name="nome"><br>
       <input type="submit" name="invia_prenotazione" value="SUBMIT"><br>
     </form>
   </body>
 </html>
0
Jasper Howard 5 नवम्बर 2020, 20:30

1 उत्तर

सबसे बढ़िया उत्तर

एक बार जब आप सबमिट कर देते हैं, तो जब भी आप अपने पेज को रीफ्रेश करते हैं तो वही कार्रवाई फिर से की जा रही है, जिसका अर्थ है कि आप अपना फॉर्म दोबारा जमा करते हैं।

यहाँ एक नज़र डालें:
सबमिट से बचने का सबसे अच्छा तरीका पृष्ठ के ताज़ा होने के कारण

आम तौर पर, किसी प्रपत्र पृष्ठ को उसी पृष्ठ पर पुनर्निर्देशित करना एक अच्छा अभ्यास नहीं है, न ही अपनी दृश्य फ़ाइल में तर्क शामिल करें। इसके बजाय, आपके पास एक लॉगिन php फ़ाइल और एक दृश्य फ़ाइल होनी चाहिए।

2
guyaloni 5 नवम्बर 2020, 17:37