2017-12-06 9 views
0

Ich habe eine PHP-Seite zieht Handys aus einer Datenbank. Je nachdem, wie viele Telefone sich in der Datenbank befinden, bestimmt die PHP-Seite, wie viele Felder erstellt werden müssen. Ich habe eine Sitzung eingerichtet, um nur diejenigen zu erlauben, die eingeloggt sind und bestimmte Funktionen bearbeiten können.Wie schleife ich einen HTML-Namen Wert mit PHP

Ich möchte das Kontrollkästchen, um die Datenbank mit einer 1 (als aktiv) und einem 0 (als inaktiv) Geräte zu aktualisieren, so dass ich nur diejenigen anzeigen kann, die aktiv sind.

Bearbeiten: session_start(); ist auf jeder Seite der header.php mit dem oberen Rand jeder Seite verbunden. Ich habe das im Code vergessen.

phones.php

<?php 
    if (isset($_SESSION['u_name'])) { 
     echo ' <button type="submit" name="submit" 
     form="activeForm">Save</button>'; 
    } 
    for($x = 1; $x <= deviceCount("phones"); $x++) { 
?> 
    </section> 
     <?php 
      if (isset($_SESSION['u_name'])) { 
     ?> 
     <form id="activeForm" method="POST" action="save.php"> 
      <input type="checkbox" echo ' name="active'.$x.'"';?>> 
     </form> 
    <?php 
     } 
    } 
    ?> 

Unten ist mein PHP. Ich möchte überprüfen, ob jedes Kontrollkästchen aktiviert ist. Das Problem, das ich habe, ist, dass, nachdem das erste Kontrollkästchen aktiviert wurde, der Rest immer nicht ausgewählt ist.

save.php

<?php 

if (isset($_POST['submit'])) { 
    include_once 'connect.inc.php'; 

    $query = "SELECT * FROM phones"; 
    if ($result=mysqli_query($conn, $query)) { 
     // Return the number of rows in result set 
     $rowcount=mysqli_num_rows($result); 
    } 

    for($x = 1; $x < $rowcount + 1; $x++) { 
     $select = 'active'.$x; 
     if (isset($_POST[$select])) { 
      $sql = "UPDATE phones SET active='1' WHERE id=$x"; 
      mysqli_query($conn, $sql); 
     } else { 
      $sql = "UPDATE phones SET active='0' WHERE id=$x"; 
      mysqli_query($conn, $sql); 
     } 
    } 
} 

Sagen wir, ich 4-Geräte haben. Die erste Checkbox würde reagieren, jedoch würden die nächsten 3 alle nicht ausgewählt auswählen.

+0

Ihre Schaltfläche ist über dem Formular und jede Checkbox hat ihre eigene Form. so kann ich nicht verstehen, wie ist Ihr Formular eingereicht, und natürlich, wenn es eingereicht wurde-wie dann auch nur Single-Checkbox-Daten senden werden –

+0

Sie können den Namen in ein Array und machen Sie den Wert abhängig von der Handynummer . Auch Ihr Formular befindet sich in Ihrer Schleife. Es sollte draußen sein, während das Kontrollkästchen innerhalb der Schleife ist – hungrykoala

+1

Ich fand Fehler in Ihrem Code phone.php –

Antwort

0

1.Sie müssen Formularcode außerhalb der Schleife einfügen.

2.Use Eingangsnamen als Array-Typ

3.You benötigen dementsprechend session_start();

4.Based auf Array-Typ-Namensänderung PHP-Code haben.

Sie wie folgt: -

HTML: -

<form id="activeForm" method="POST" action="save.php"> 
<?php 
    session_start();//needed 
    if (isset($_SESSION['u_name'])) { 
     for($x = 1; $x <= deviceCount("phones"); $x++) { 
?> 
      <input type="checkbox" name="active[<?php echo $x;?>]" /> 
<?php 
     } 
    } 
?> 
    <button type="submit" name="submit">Save</button> 
</form> 

PHP: -

<?php 

if (isset($_POST['submit'])) { 
    include_once 'connect.inc.php'; 
    foreach($_POST['active'] as $key =>$x) { 
     if ($x) { 
      $sql = "UPDATE phones SET active='1' WHERE id=$key"; 
      mysqli_query($conn, $sql); 
     } else { 
      $sql = "UPDATE phones SET active='0' WHERE id=$key"; 
      mysqli_query($conn, $sql); 
     } 
    } 
} 
+0

Sorry, ich habe header.php weggelassen. Ein session_start(); tritt bei jeder Seite in der Kopfzeile auf. –

+0

Ok, dann wird 'session_start();' nicht erneut benötigt. Verwenden Sie den Rest des Codes und überprüfen Sie –

+0

Gott segne! Du hast meine Nacht gemacht. Ich danke dir sehr! –

0

phones.php

<?php 
// you need first start session 
session_start(); 

     if (isset($_SESSION['u_name'])) { 
      echo ' <button type="submit" name="submit" 
      form="activeForm">Save</button>'; 
     } 
     for($x = 1; $x <= deviceCount("phones"); $x++) { 
    ?> 
     </section> 
      <?php 
       if (isset($_SESSION['u_name'])) { 
      ?> 
      <form id="activeForm" method="POST" action="save.php"> 
       <input type="checkbox" name="active<?= $x ?>" > 
      </form> 
     <?php 
      } 
     } 
     ?> 
+0

Sorry, ich habe header.php weggelassen. Ein session_start(); tritt bei jeder Seite in der Kopfzeile auf. –

+0

Ich habe erwähnt, dass Ihr Code einen Fehler in > –

Verwandte Themen