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() ?
Jim1961
(Jim1961)
22 Kwiecień 2014 10:24
#2
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).
jacko1998
(jacko1998)
22 Kwiecień 2014 12:47
#4
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.
adpawl
(adpawl)
22 Kwiecień 2014 18:37
#6
$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.
jacko1998
(jacko1998)
22 Kwiecień 2014 20:58
#8
anon46610587:
…WHERE id=‘id’
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.
jacko1998
(jacko1998)
23 Kwiecień 2014 14:50
#10
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
jacko1998
(jacko1998)
23 Kwiecień 2014 15:47
#12
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
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";
}
jacko1998
(jacko1998)
23 Kwiecień 2014 18:00
#14
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.