Panel administratora

0

Hej mam oto taki kod index.php:

<html> <head> <meta charset="utf-8"> <title>Panel admina</title> </head> <body>

Panel Administratora

Typ OsłonkiTyp Osłonki OpisDodatek Typu OsłonkiDodatek Typu Osłonki OpisKolorKolor OpisKaliberPakowaniePakowanie OpisDodatkiDodatki OpisIlość m.b (cm.b)Ilość OpisGatunekGatunek OpisEdycjaUsuń
$typ_oslonki $typ_oslonki_opis $dod_typ_oslonki $dod_typ_oslonki_opis $kolor $kolor_opis $kaliber $pakowanie $pakowanie_opis $dodatki $dodatki_opis $metry $metry_opis $gatunek $gatunek_opis Edytuj Usuń

$mysqli->close();
?>

</table> Dodawanie nowego obiektu </body> </html>

i wywala mi błąd:
Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\xampp1\htdocs\test\index1.php on line 17

kurcze no i nie wiem co z tym zrobićm pomoże ktoś??

0
<html>
 <head>
  <meta charset="utf-8">
  <title>Panel admina</title>
 </head>
 <body>
 <h1>Panel Administratora</h1>
  <table border="1">
   <tr>
     <th>Typ Osłonki</th><th>Typ Osłonki Opis</th><th>Dodatek Typu Osłonki</th><th>Dodatek Typu Osłonki Opis</th><th>Kolor</th><th>Kolor Opis</th><th>Kaliber</th><th>Pakowanie</th><th>Pakowanie Opis</th><th>Dodatki</th><th>Dodatki Opis</th><th>Ilość m.b (cm.b)</th><th>Ilość Opis</th><th>Gatunek</th><th>Gatunek Opis</th><th>Edycja</th><th>Usuń</th>
   </tr>
<?php
include('polacz.php');
if ($sql =  $mysqli->prepare("SELECT * FROM oslonki ORDER BY typ_oslonki, dod_typ_oslonki")) //ORDER BY marka, model
{
        $sql->execute();
        $sql->bind_result($typ_oslonki, $typ_oslonki_opis, $dod_typ_oslonki, $dod_typ_oslonki_opis, $kolor, $kolor_opis, $kaliber, $pakowanie, $pakowanie_opis, $dodatki, $dodatki_opis, $metry, $metry_opis, $gatunek, $gatunek_opis);
        while ($sql->fetch())
        {
                echo "<tr>
                        <td>$typ_oslonki</td>
                        <td>$typ_oslonki_opis</td>
                        <td>$dod_typ_oslonki</td>
                        <td>$dod_typ_oslonki_opis</td>
                        <td>$kolor</td>
                        <td>$kolor_opis</td>
                        <td>$kaliber</td>
                        <td>$pakowanie</td>
                        <td>$pakowanie_opis</td>
                        <td>$dodatki</td>
                        <td>$dodatki_opis</td>
                        <td>$metry</td>
                        <td>$metry_opis</td>
                        <td>$gatunek</td>
                        <td>$gatunek_opis</td>
                        <td><a href=\"edycja.php?nr=$typ_oslonki\">Edytuj</a></td>
                        <td><a href=\"usun.php?nr=$typ_oslonki\" onclick=\"javascript:return confirm('Czy na pewno usunąć?'); \">Usuń</a></td>
                   </tr>";
        }
        $sql->close();
 }
else die( "Błąd w zapytaniu SQL! Sprawdź kod SQL w PhpMyAdmin." );

 $mysqli->close();
?>
  </table>
  <a href="dodaj.php">Dodawanie nowego obiektu</a>
 </body>
</html>
0

Kolumn w tabeli SELECT * FROM oslonki masz pewnie więcej/mniej niż liczba zmiennych użytych w $sql->bind_result

0

No fak brakowało mi $id

0

Parse error: syntax error, unexpected '$typ_oslonki_opis' (T_VARIABLE), expecting ',' or ')' in C:\xampp1\htdocs\test\update.php on line 24

i jeszcze:

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\xampp1\htdocs\test\edycja.php on line 8

w tym kodzie:

<?php
include('polacz.php');
$nr = wczytaj("nr");
if ( $sql = $mysqli->prepare( "SELECT * FROM oslonki WHERE typ_oslonki = ?;"))
{
  $sql->bind_param("i" ,$nr);
  $sql->execute();
  $sql->bind_result($typ_oslonki, $typ_oslonki_opis, $dod_typ_oslonki, $dod_typ_oslonki_opis, $kolor, $kolor_opis, $kaliber, $pakowanie, $pakowanie_opis, $dodatki, $dodatki_opis, $metry, $metry_opis, $gatunek, $gatunek_opis);
  if (!$sql->fetch())  die("Blad!!! Brak rekordu do edycji w bazie!!! Liczba rekodow:".$sql->num_rows);


 /////////////////////// HTML w PHP
 echo '
 <html>
  <head>
   <meta charset="utf-8">
   <title>Edycja obiektu</title>
  </head>
  <body>
   <h1>Edycja rekordu z bazy</h1>
   <form method="get" action="update.php">
    <table border="0">
   
   <tr><td>Typ osłonki</td><td><input name="typ_oslonki" value="'.$typ_oslonki.'" maxlen="3" size="20"></td></tr>
      <tr><td>Typ osłonki opis</td><td><input name="typ_oslonki_opis" value="'.$typ_oslonki_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Dodatek Typu Osłonki</td><td><input name="dod_typ_oslonki" value="'.$dod_typ_oslonki.'" maxlen="1" size="20"></td></tr>
      <tr><td>Dodatek Typu Osłonki Opis</td><td><input name="dod_typ_oslonki_opis" value="'.$dod_typ_oslonki_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Kolor</td><td><input name="kolor" value="'.$kolor.'" maxlen="3" size="20"></td></tr>
      <tr><td>Kolor Opis</td><td><input name="kolor_opis" value="'.$kolor_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Kaliber</td><td><input name="kaliber" value="'.$kaliber.'" maxlen="3" size="20"></td></tr>
      <tr><td>Pakowanie</td><td><input name="pakowanie" value="'.$pakowanie.'" maxlen="1" size="20"></td></tr>
      <tr><td>Pakowanie Opis</td><td><input name="pakowanie_opis" value="'.$pakowanie_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Dodatki</td><td><input name="dodatki" value="'.$dodatki.'" maxlen="2" size="20"></td></tr>
      <tr><td>Dodatki Opis</td><td><input name="dodatki_opis" value="'.$dodatki_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Ilość m.b (cm.b)</td><td><input name="metry" value="'.$metry.'" maxlen="5" size="20"></td></tr>
      <tr><td>Ilość m.b (cm.b) Opis</td><td><input name="metry_opis" value="'.$metry_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Gatunek</td><td><input name="gatunek" value="'.$gatunek.'" maxlen="1" size="20"></td></tr>
      <tr><td>Gatunek Opis</td><td><input name="gatunek_opis" value="'.$gatunek_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td colspan="2"><input type="submit" value="zapisz zmiany"></td></tr>
    </table>
   </form>
  </body>
 </html>
 ';
 $sql->close();
 }
$mysqli->close();
?>
0

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\xampp1\htdocs\test\edycja.php on line 8 a sorki ten to wiem że to $id mi brakuje :D

0

Dodaj htmlspecialchars() do wszystkich zmiennych używanych w input value. Aktualnie jak zmienna będzie zawierała znak " to będzie się źle wyświetlać formularz.

0

index.php

<html>
 <head>
  <meta charset="utf-8">
  <title>Panel admina</title>
 </head>
 <body>
 <h1>Panel Administratora</h1>
  <table border="1">
   <tr>
          <th>Id</th><th>Typ Osłonki</th><th>Typ Osłonki Opis</th><th>Dodatek Typu Osłonki</th><th>Dodatek Typu Osłonki Opis</th><th>Kolor</th><th>Kolor Opis</th><th>Kaliber</th><th>Pakowanie</th><th>Pakowanie Opis</th><th>Dodatki</th><th>Dodatki Opis</th><th>Ilość m.b (cm.b)</th><th>Ilość Opis</th><th>Gatunek</th><th>Gatunek Opis</th><th>Edycja</th><th>Usuń</th>
   </tr>
<?php
include('polacz.php');
if ($sql =  $mysqli->prepare("SELECT * FROM oslonki")) //ORDER BY marka, model
{
        $sql->execute();
        $sql->bind_result($id, $typ_oslonki, $typ_oslonki_opis, $dod_typ_oslonki, $dod_typ_oslonki_opis, $kolor, $kolor_opis, $kaliber, $pakowanie, $pakowanie_opis, $dodatki, $dodatki_opis, $metry, $metry_opis, $gatunek, $gatunek_opis);
        while ($sql->fetch())
        {
                echo "<tr>
                        <td>$id</td>
                        <td>$typ_oslonki</td>
                        <td>$typ_oslonki_opis</td>
                        <td>$dod_typ_oslonki</td>
                        <td>$dod_typ_oslonki_opis</td>
                        <td>$kolor</td>
                        <td>$kolor_opis</td>
                        <td>$kaliber</td>
                        <td>$pakowanie</td>
                        <td>$pakowanie_opis</td>
                        <td>$dodatki</td>
                        <td>$dodatki_opis</td>
                        <td>$metry</td>
                        <td>$metry_opis</td>
                        <td>$gatunek</td>
                        <td>$gatunek_opis</td>
                        <td><a href=\"edycja.php?nr=$typ_oslonki\">Edytuj</a></td>
                        <td><a href=\"usun.php?nr=$typ_oslonki\" onclick=\"javascript:return confirm('Czy na pewno usunąć?'); \">Usuń</a></td>
                   </tr>";
        }
        $sql->close();
 }
else die( "Błąd w zapytaniu SQL! Sprawdź kod SQL w PhpMyAdmin." );

 $mysqli->close();
?>
  </table>
  <a href="dodaj.php">Dodawanie nowego obiektu</a>
 </body>
</html>

insert.php

<?php
include('polacz.php');
$id = wczytaj("id");
$typ_oslonki = wczytaj("typ_oslonki");
$typ_oslonki_opis = wczytaj("typ_oslonki_opis");
$dod_typ_oslonki = wczytaj("dod_typ_oslonki");
$dod_typ_oslonki_opis = wczytaj("dod_typ_oslonki_opis");
$kolor = wczytaj("kolor");
$kolor_opis = wczytaj("kolor_opis");
$kaliber = wczytaj("kaliber");
$pakowanie = wczytaj("pakowanie");
$pakowanie_opis = wczytaj("pakowanie_opis");
$dodatki = wczytaj("dodatki");
$dodatki_opis = wczytaj("dodatki_opis");
$metry = wczytaj("metry");
$metry_opis = wczytaj("metry_opis");
$gatunek = wczytaj("gatunek");
$gatunek_opis = wczytaj("gatunek_opis");

$sql = $mysqli->prepare("INSERT INTO oslonki VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
if ($sql)
{
        $sql->bind_param("issidss", $id, $typ_oslonki, $typ_oslonki_opis, $dod_typ_oslonki, $dod_typ_oslonki_opis, $kolor, $kolor_opis, $kaliber, $pakowanie, $pakowanie_opis, $dodatki, $dodatki_opis, $metry, $metry_opis, $gatunek, $gatunek_opis  );
        $sql->execute();
        $sql->close();
}
$mysqli->close();
header ("Location: //localhost/test/index1.php");

?>

edycja.php

<?php
include('polacz.php');
$id = wczytaj("id");
if ( $sql = $mysqli->prepare( "SELECT * FROM oslonki WHERE typ_oslonki = ?;"))
{
  $sql->bind_param("i" ,$id);
  $sql->execute();
  $sql->bind_result($id, $typ_oslonki, $typ_oslonki_opis, $dod_typ_oslonki, $dod_typ_oslonki_opis, $kolor, $kolor_opis, $kaliber, $pakowanie, $pakowanie_opis, $dodatki, $dodatki_opis, $metry, $metry_opis, $gatunek, $gatunek_opis);
  if (!$sql->fetch())  die("Blad!!! Brak rekordu do edycji w bazie!!! Liczba rekodow:".$sql->num_rows);


 /////////////////////// HTML w PHP
 echo '
 <html>
  <head>
   <meta charset="utf-8">
   <title>Edycja obiektu</title>
  </head>
  <body>
   <h1>Edycja rekordu z bazy</h1>
   <form method="get" action="update.php">
    <table border="0">
    <input type="hidden" name="id" value="'.$id.'">  </td></tr>
    <tr><td>Typ osłonki</td><td><input name="typ_oslonki" value="'.$typ_oslonki.'" maxlen="3" size="20"></td></tr>
      <tr><td>Typ osłonki opis</td><td><input name="typ_oslonki_opis" value="'.$typ_oslonki_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Dodatek Typu Osłonki</td><td><input name="dod_typ_oslonki" value="'.$dod_typ_oslonki.'" maxlen="1" size="20"></td></tr>
      <tr><td>Dodatek Typu Osłonki Opis</td><td><input name="dod_typ_oslonki_opis" value="'.$dod_typ_oslonki_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Kolor</td><td><input name="kolor" value="'.$kolor.'" maxlen="3" size="20"></td></tr>
      <tr><td>Kolor Opis</td><td><input name="kolor_opis" value="'.$kolor_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Kaliber</td><td><input name="kaliber" value="'.$kaliber.'" maxlen="3" size="20"></td></tr>
      <tr><td>Pakowanie</td><td><input name="pakowanie" value="'.$pakowanie.'" maxlen="1" size="20"></td></tr>
      <tr><td>Pakowanie Opis</td><td><input name="pakowanie_opis" value="'.$pakowanie_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Dodatki</td><td><input name="dodatki" value="'.$dodatki.'" maxlen="2" size="20"></td></tr>
      <tr><td>Dodatki Opis</td><td><input name="dodatki_opis" value="'.$dodatki_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Ilość m.b (cm.b)</td><td><input name="metry" value="'.$metry.'" maxlen="5" size="20"></td></tr>
      <tr><td>Ilość m.b (cm.b) Opis</td><td><input name="metry_opis" value="'.$metry_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td>Gatunek</td><td><input name="gatunek" value="'.$gatunek.'" maxlen="1" size="20"></td></tr>
      <tr><td>Gatunek Opis</td><td><input name="gatunek_opis" value="'.$gatunek_opis.'" maxlen="20" size="20"></td></tr>
      <tr><td colspan="2"><input type="submit" value="zapisz zmiany"></td></tr>
    </table>
   </form>
  </body>
 </html>
 ';
 $sql->close();
 }
$mysqli->close();
?>

update.php

<?php
include('polacz.php');
$id = wczytaj("id");

$typ_oslonki = wczytaj("typ_oslonki");
$typ_oslonki_opis = wczytaj("typ_oslonki_opis");
$dod_typ_oslonki = wczytaj("dod_typ_oslonki");
$dod_typ_oslonki_opis = wczytaj("dod_typ_oslonki_opis");
$kolor = wczytaj("kolor");
$kolor_opis = wczytaj("kolor_opis");
$kaliber = wczytaj("kaliber");
$pakowanie = wczytaj("pakowanie");
$pakowanie_opis = wczytaj("pakowanie_opis");
$dodatki = wczytaj("dodatki");
$dodatki_opis = wczytaj("dodatki_opis");
$metry = wczytaj("metry");
$metry_opis = wczytaj("metry_opis");
$gatunek = wczytaj("gatunek");
$gatunek_opis = wczytaj("gatunek_opis");

$sql = $mysqli->prepare("UPDATE oslonki SET typ_oslonki_opis=?, dod_typ_oslonki=?, dod_typ_oslonki_opis=?, kolor=?, kolor_opis=?, kaliber=?, pakowanie=?, pakowanie_opis=?, dodatki=?, dodatki_opis=?, metry=?, metry_opis=?, gatunek=?, gatunek_opis=? WHERE typ_oslonki=?;"); 
if ($sql)
{
        $sql->bind_param("sssidsi", $id, $typ_oslonki$typ_oslonki_opis, $dod_typ_oslonki, $dod_typ_oslonki_opis, $kolor, $kolor_opis, $kaliber, $pakowanie, $pakowanie_opis, $dodatki, $dodatki_opis, $metry, $metry_opis, $gatunek, $gatunek_opis);
        $sql->execute();
        $sql->close();
}
$mysqli->close();
header ("Location: //localhost/test/index1.php");
?>

dodaj.php

<html>
 <head>
  <meta charset="utf-8">
  <title>Dodaj nowy obiekt</title>
 </head>
 <body>
  <h1>Dodawanie do bazy</h1>
  <form method="get" action="insert.php">
   <table border="0">
      <tr><td>Typ osłonki</td><td><input type="text" name="typ_oslonki" maxlen="3" size="20"></td></tr>
      <tr><td>Typ osłonki opis</td><td><input type="text" name="typ_oslonki_opis" maxlen="20" size="20"></td></tr>
      <tr><td>Dodatek Typu Osłonki</td><td><input type="text" name="dod_typ_oslonki" maxlen="1" size="20"></td></tr>
      <tr><td>Dodatek Typu Osłonki Opis</td><td><input type="text" name="dod_typ_oslonki_opis" maxlen="20" size="20"></td></tr>
      <tr><td>Kolor</td><td><input type="text" name="kolor" maxlen="3" size="20"></td></tr>
      <tr><td>Kolor Opis</td><td><input type="text" name="kolor_opis" maxlen="20" size="20"></td></tr>
      <tr><td>Kaliber</td><td><input type="text" name="kaliber" maxlen="3" size="20"></td></tr>
      <tr><td>Pakowanie</td><td><input type="text" name="pakowanie" maxlen="1" size="20"></td></tr>
      <tr><td>Pakowanie Opis</td><td><input type="text" name="pakowanie_opis" maxlen="20" size="20"></td></tr>
      <tr><td>Dodatki</td><td><input type="text" name="dodatki" maxlen="2" size="20"></td></tr>
      <tr><td>Dodatki Opis</td><td><input type="text" name="dodatki_opis" maxlen="20" size="20"></td></tr>
      <tr><td>Ilość m.b (cm.b)</td><td><input type="text" name="metry" maxlen="5" size="20"></td></tr>
      <tr><td>Ilość m.b (cm.b) Opis</td><td><input type="text" name="metry_opis" maxlen="20" size="20"></td></tr>
      <tr><td>Gatunek</td><td><input type="text" name="gatunek" maxlen="1" size="20"></td></tr>
      <tr><td>Gatunek Opis</td><td><input type="text" name="gatunek_opis" maxlen="20" size="20"></td></tr>
      <tr><td colspan="2"><input type="submit" value="Wstaw obiekty"></td></tr>
   </table>
  </form>
 </body>
</html>

usun.php

<?php
include('polacz.php');
$id = wczytaj("id");
if ($sql = $mysqli->prepare( "DELETE FROM oslonki WHERE typ_oslonki = ?;" ))
{
 $sql->bind_param( "i",  $id);
 $sql->execute();
 $sql->close();
}
$mysqli->close();
header ("Location: //localhost/test/index1.php" );
?>

No i mam taki problem że zamiast mi dodawac rekordy do bazy mysql, czy je edytowac lub usuwać to wyskakuje komunikat Brak zmiennej id i nie wiem co zrobić

0

Upewnij się że funkcja $id = wczytaj("id"); w include('polacz.php'); działa poprawnie.

0

Bo ten mój programik to wzorowałem na tej stronie:
http://fx-team.fulara.com/pelny-panel-administratora-dla-tabeli-mysqli/
Tam była zmienna $nr ja myslałem ze to ma być to moje id i teraz mi jakieś byki wywala że ona nie istnieje

0
<td><a href=\"edycja.php?nr=$typ_oslonki\">Edytuj</a></td>
                        <td><a href=\"usun.php?nr=$typ_oslonki\"

id zmiast nr

0

1.usuwanie rekordu działa. :D
2.Podczas edycji tez dziala ale gdy tylko chce zeedytowac to dalej mam ten problem:
Parse error: syntax error, unexpected '$typ_oslonki_opis' (T_VARIABLE), expecting ',' or ')' in C:\xampp1\htdocs\test\update.php on line 24
pisałeś wyżej o tym: htmlspecialchars

<tr><td>Typ osłonki</td><td><input name="typ_oslonki" value="'.htmlspecialchars($typ_oslonki).'" maxlen="3" size="20"></td></tr>

czy tak to mam wstawiać??

3.Niestety przy dodawaniu nowego rekordu błąd z id jest nadal :(

0

Kurcze sprawa wyglada tak:

  1. Usuwanie bez zarzutu :D
  2. Edytowanie sie poprawiło, nie ma juz tego błędu lecz nic mi się nie zmienia po edycji :( i nie wiem jak mam dodać te polskie znaki bo mi jakiś dziwactwa wyskakują zamiast ą, ó, ż itp
  3. Błąd z id naprawiony przy dodawaniu nowego rekordu, tylko że gdy coś chce dodać wypełnie wszystkie pola to i tak rekord się nie dodaje.
    4.W tych kodach jest jakaś instrukcja sprawdzająca aby pole nie było pusty przy dodawaniu rekordu, no i jest problem gdyż np. typów osłonki jest 10 a dodatków 40 no i musiałbym za każdym razem przy dodawaniu nowego rekordu wpisywać NULL aby nic nie dodało, więc jest to bez sensu..
    Poradzicie coś na punkt 2 i 3 chociaż??
0

Odświeżam temat, ktoś coś pomoże?? Kod jest wyżej o jakie 5 postów.
Poprawiłem co nieco z powyższego posta, wszystko działa, mogę wypełnić i jak klikam zapisz do bazy to zapisuje ale nic nie wyświetla czyli tak jakby rekord nie istniał. Chodzi mi tu o pliki edycja.php i update.php. HELP

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