Problem z T ENDWHILE w php

Witam, siedzę  nad tym kodem i nie wiem czemu nie chce dzialać, gdy obejrzałem kilka filmów na youtube i tym osobom działa, u mnie nie.

 

Mam w index taki kod:

include('db_con.php');


if($result = $mysqli->query('SELECT id, Temat, Opis FROM searchapp'))
  {
     if($result->num_rows >0)
      {
        echo "<table border='0'>";
		echo "<tr><td class=\"tabcolor\">id</td>
             <td class=\"tabcolor\">Temat</td>";
          
           while($row = $result->fetch_object())
             {
           echo "<tr>";
           echo "<td>" .$row->id. "</td>";
           echo "<td><a href='opis.php?id=" .$row->Temat. "'>$row->Temat</td>";
           echo "</tr>";
            }
        echo "</table>";
     }
	 else {
      echo "Brak danych w tabeli!";
      }
    }
    else {
      echo "Errors: " . $mysqli->error;
         }

?>

Gdy kliknę na link, to mam pusta stronę ale z napisem błąd, gdy w pasku adresu mam opis.php?id=nazwa tematu

Gdzie nazwa tematu to wiadomo a kod jaki mam w opis.php jest taki:

Nad Body:

<?php 
session_start();
include('db_con.php');
if(isset($_GET['id']) && is_numeric($_GET['id'])){
 $id = $_GET['id'];
}else {
  echo "Błąd";
}
$idCheck = $mysqli->query("SELECT * FROM searchapp WHERE id = 'id' ");
 if($idCheck->num_rows !== 1) {
     echo "Błąd";
 }
$row = $idCheck->fetch_object();
$sql = "SELECT Temat, Opis FROM searchapp WHERE id = ?";
     if($query= $mysqli->prepare($sql)){
	  $query->bind_param("ssi", $id, $Temat, $Opis);
	  $query->execute();
      $query->bind_result($id, $Temat, $Opis);
	  $query->store_result();
}
?>

W ramach body taki kod:

<div>
<?php if($query->num_rows !=0); ?>
<?php while($query->fetch()); ?>
</div>
   <div>
     <a href="view_topic.php?="><?=$Temat; ?></a>
   </div>
   <div>
      <?=$Opis; ?>
   </div>
<div>
<?php endwhile;?>
<?php endif; ?>
</div>

Błąd wskazuje na endwhile i end if.

czytałem że trzeba permalink stosować, czyli co przed a href ma być permalink() ?

W tym ostatnim kodzie masz średniki po IFie i po WHILEu. Powinny być dwukropki.

OK, dzięki. Poprwiłem ale nie mam opisu po kliknięciu a jest tylko napis Błąd, który jest w GET (na początku kodu u góry).

 

Przecież sprawdzasz w if’ie czy id jest numerem, a do id dodajesz string. Pewnie dlatego błąd.

Musze zobaczyć dokładnie czy przypadkiem w zapytaniu błedu nie ma, znaczy o bind_param.

$idCheck = $mysqli->query("SELECT * FROM searchapp WHERE id = 'id' ");

Zgadnij co tam masz źle …podpowiem, w warunku WHERE.

adpawl, to zapytanie w tutorialu działało, tylko u mnie nie. Ale wiem, co masz na mysli. gdzie WHERE id=‘id’ to powinno być WHERE id = ?. Też tak patrzyłem i więcej błędów miałem.

 

Chcesz szukać czegoś na podstawie id, a narazie szukasz na podstawie string’a. W tym przypadku jest to id. Proponuję coś takiego:

 

No ja bind_param zmieniłem na samo “i”. natomiast dałem tak jak mówiłeś i powstały trzy błedy.

linia 9: $idCheck = $mysqli->query("SELECT * FROM searchapp WHERE id = ‘id’ "); tu dalem wcześniej twoją propozycję

linia 10 if($idCheck->num_rows !== 1) komunikat:  Notice: Trying to get property of non-object

linia 13 $row = $idCheck->fetch_object(); komunikat: Fatal error: Call to a member function fetch_object() on a non-object

 

Chyba wywale session_start(); bo nie mam logowania i rejestracji.

Może podaj link do tutoriala, z którego korzystałeś ?

Ok podaje link, ale film nie jest wyraźny bo można tylko oglądać w 480dpi nie więcej a dobrze na pewno przepisalem.

Tu link: http://www.youtube.com/watch?v=eKE-yIyE8s0

To:

 

$idCheck = $mysqli->query("SELECT * FROM searchapp WHERE id = 'id' ");

 

zamień tym:

$idCheck = $mysqli->query("SELECT * FROM searchapp WHERE id = '$id' ");

i to:

$query->bind_param("ssi", $id, $Temat, $Opis);

zamień tym:

$query->bind_param("1", $id);

i daj info.

Niestety, są błedy. To co podałeś abym zamienił to mam błedy w tych liniach.

 

1 błąd dotyczący $id w zapytaniu jest taki:

Notice: Undefined variable: id in

  1. błąd dotyczy zmiany w bind param z ssi na 1, jest taki:

Warning: mysqli_stmt::bind_param() [<a href=‘mysqli-stmt.bind-param’>mysqli-stmt.bind-param</a>]: Undefined fieldtype 1 (parameter 2) in

 

Chyba napisze kod w index jaki jest w tamtym tutorialu, który Ci podałem ale jest w part 2, a tobie podałem do part 3.

 

Nawet nie ma pobierania ID gdy to napiszę:

if(isset($_GET['id'])) {
 $id = $_GET['id'];
}else{
echo "Błąd";
}

Mój błąd, bind_param, musi zawierać integer, a nie string. Zamień na to:

$query->bind_param(1, $id);

Ten sam błąd jest co wyżej napisałem w punkcie 2. Ale nie zadziała, dopóki Id nie będzie się wyświetlac na stronie a nie w pasku adresu. Jest temat id pobierany i nazwa tematu pojawia się w pasku adresu.

Ale nie wyświetla na ekranie, wyświetla napis błąd. Kurcze musze chyba napisać jak jest w tutorialu part 2. Może zadziała.