błąd w php

0
 	 <table summary= TEST, id=tabela>
</style>
<form method="post">
 	<p><a href="index1.php" >Wróć do panelu administratora</a></p>

<tr>
  <th>Id</th><th>Użytkownik</th><th>ID użytkownika</th><th>Grupa</th>

</tr>
  <?php
require_once "connect.php";
 
$polaczenie = new mysqli($host,$db_user,$db_password,$db_name);
 
if ($polaczenie->connect_errno!=0){
    echo "błąd serwera";
}       
$l = 1;

if ($sql =  $polaczenie->prepare("SELECT * FROM logowanie")) 
{ 
        $sql->execute();

        $sql->bind_result($id, $user, $pass, $email, $role);
		while ($sql->fetch() || $l<=1)
        { 
         

                echo "<tr>
                        <td>$l</td>
                        <td>$user</td>
                        <td>$id</td>
                        <td>
                        <select name='$id'>
                         <option value='admin'>admin</option>
                         <option value='user'>user</option>
                       </select>
                        </td>
                   </tr>";

                   $l++;

        }

        $sql->close();
 }
else die( "Błąd w zapytaniu SQL! Sprawdź kod SQL w PhpMyAdmin." );

 $polaczenie->close();
var_dump($_POST);
foreach ($_POST as $key => $value) {
  $sql =  $polaczenie->prepare("UPDATE logowanie SET role='$value' WHERE id = '$key'"); //to jest linia 100

        $sql->bind_param( "i",  $key); // to jest linia 102
        $sql->execute();
 
}
?>
 <input type="submit" value="Zatwierdź" />
</form>
</table>

Mam taki kod i wywala mi błędy po naciśnięciu submita, sam nie wiem co jest nie tak:
Warning: mysqli::prepare(): Couldn't fetch mysqli in C:\xamppp\htdocs\test\uprawnienia.php on line 100

Fatal error: Uncaught Error: Call to a member function bind_param() on null in C:\xamppp\htdocs\test\uprawnienia.php:102 Stack trace: #0 {main} thrown in C:\xamppp\htdocs\test\uprawnienia.php on line 102

0

Przenieś $polaczenie->close() w odpowiednie miejsce. Próbujesz używać połączenia które zamknąłeś.

0

jeszcze gorzej dałem je pod:

var_dump($_POST);
foreach ($_POST as $key => $value) {
  $sql =  $polaczenie->prepare("UPDATE logowanie SET role='$value' WHERE id = '$key'");

        $sql->bind_param( "i",  $key);
        $sql->execute();
}
 $polaczenie->close();

0

dobra doszedłem do tego jest teraz okey, bo niepotrzebnie miałem bind_param()

0

poza tym, nie musisz raczej zamykać tego połączenia, zostanie ono samo zamknięte. Na pewno nie w szablonie. Do szablonu powinieneć przekazać tylko tablice z wynikami, a same SQLki wykonać wcześniej.

0

No dobra a da się jakoś te moje pola select option po wyborze i odświeżeniu strony aby dalej było to co jest wybrane np. wybieram user i odświeżam tam pisze user, a teraz jak tylko nacisne submit to wszystko wraca na pozycje 1 czyli admin :( jest jakieś lekarstwo na to?

0
<?php
//zamiast $id w $_POST musi być wartość atrybutu tagu SELECT
echo str_replace("value='".$_POST[$id]."'", "value='".$_POST[$id]."' selected", "<option value='admin'>admin</option>\n<option value='user'>user</option>");
?>
0

eee?? mam to gdzieś wkleić czy po prostu w tym moim echo przerobić bo się zgubiłem :(

0


                echo "<tr>
                        <td>$l</td>
                        <td>$user</td>
                        <td>$id</td>
                        <td>
                        <select name='$id'> ".str_replace("value='".$_POST[$id]."'", "value='".$_POST[$id]."' selected", "<option value='admin'>admin</option>\n<option value='user'>user</option>")."</select>
                        </td>
                   </tr>";
0

Dziękuję

1 użytkowników online, w tym zalogowanych: 0, gości: 1