Mi a hiba 000webhoston? (MYSQL-PHP)
Szóval:
a 000webhost több szempontból is rossz.
de még is ez a legjobb ingyenes tárhely!(ezt azért mondtam el mert lehet, hogy a használt funkciót nem támogatja a 000)
szóval a kérdésem:
miért nem működik ez a kód:
?>
<form name="form1" method="post" action="">
<input name="q_search" type="text" id="q_search" value="">
<select name="q_where">
<option value="-1">Mindenütt keres</option>
<?php
$f = array(
"nev"=>"név",
"telefonszam"=>"telefonszám",
"email"=>"email cím",
"uzletag"=>"üzletág",
"ertek"=>"értékelés"
);
foreach($f AS $k => $v) {
$sel = ("q_where" == $k) ? 'selected="selected"' : "";
echo ' <option value="' . $k . '" ' . $sel . '>' . htmlspecialchars($v) . '</option>';
}
?>
</select>
<input type="submit" name="q_go" value="Keres">
</form>
<?php
$host = "";//a sql host
$dbname ="";//adatbázis neve
$dbuser ="";//adatbázis felhasználóneve
$dbpass ="";//adatbázis jelszava
$location = "";//ide vezet a sikeres bejelentkezés után
$bl = "";//ide vezet a sikertelen bejelentkezés után
//csatlakozás
mysql_connect ($host,$dbuser,$dbpass);
mysql_select_db($dbname);
include("pangtion.php");
$query="SELECT * FROM profil ";
if ("q_search" != "") {
if ("q_where" == "-1") {
foreach($f AS $k => $v) {
$where[] ="$k like '%". mysql_real_escape_string( "q_search") ."%'";
}
}
else
$where[] = "q_where" . " like '%". "q_search" ."%'";
}
if(isset($where) AND count($where)>0)
$query .=" WHERE " . implode(" OR " , $where) ;
$result=mysql_query($query);
$num = mysql_num_rows ($result);
$row_per_page="10";
$page= isset($_GET["page"])? intval($_GET["page"]) : 1 ;
$actual=($page-1)*$row_per_page;
$query.=" LIMIT $actual,$row_per_page";
$result = mysql_query( $query ) or die(mysql_error());
if ($num > 0 ) {
?>
<table border="1">
<tr>
/*
törölve
*/
</tr>
<?php
while($a=mysql_fetch_assoc($result))
{
echo "<tr>";
/*
ezt a részletet kitöröltem :P
*/
echo "</tr>";
}
echo "</table>";
$q_search="q_search";
$q_where="q_where";
$p = new pagination;
$p->Items($num);
$p->limit($row_per_page);
$p->target("?q_search=$q_search&q_where=$q_where");
$p->currentPage($page);
$p->nextLabel("");
$p->prevLabel("");
$p->nextIcon("");
$p->prevIcon("");
$p->show();
}
else
echo "<h3>NINCS TALÁLAT :(!</h3>";
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a9426947/public_html/szerelokell/kesz/9/images/kell/kereses.php on line 79
Free Web Hosting
Unknown column 'q_where' in 'where clause'
Így első ránézésre ezek a hibák (persze lehet van még de kicsit fáradt vagyok :)) :
if ("q_search" != "") { <-- mivel a q_search az űrlapból kapott POST érték, ezért a $_POST['q_search'] tömböt kéne vizsgálni, másrészt, nem egy egyenlőség jellel, hanem kettővel, mert vizsgálod, hogy nem üres-e, vagyis:
if ($_POST['q_search'] !== "") {
itt ugyanúgy POST:
if ("q_where" == "-1") {
helyett
if ($_POST['q_where'] == "-1") {
Feltételezve, hogy a csatlakozási adatok nálad ki vannak töltve, nagy valószínűséggel az a hiba, amit az előző hozzászóló írt, vagyis nem változókat (a $_POST tömb) használsz, hanem egyszerű stringeket változók helyett.
A 36. sor feltétele egyszerűen az else ágba vágódik, ahol a q_where stringként adódik hozzá a keresési feltételekhez, ami nyilván keresési hibát okoz.
ez:
<form name="form1" method="post" action="">
<input name="q_search" type="text" id="q_search" value="">
<select name="q_where">
<option value="-1">Mindenütt keres</option>
<?php
$f = array(
"nev"=>"név",
"telefonszam"=>"telefonszám",
"email"=>"email cím",
"uzletag"=>"üzletág",
"ertek"=>"értékelés"
);
foreach($f AS $k => $v) {
$sel = ("q_where" == $k) ? 'selected="selected"' : "";
echo ' <option value="' . $k . '" ' . $sel . '>' . htmlspecialchars($v) . '</option>';
}
?>
</select>
<input type="submit" name="q_go" value="Keres">
</form>
<?php
$host = "mysql8.000webhost.com";//a sql host
$dbname ="a9426947_test";//adatbázis neve
$dbuser ="a9426947_test";//adatbázis felhasználóneve
$dbpass ="mark1593572846!";//adatbázis jelszava
$location = "fooldal.php?v=belepes&tolt=0";//ide vezet a sikeres bejelentkezés után
$bl = "fooldal.php?v=belepes&error=1";//ide vezet a sikertelen bejelentkezés után
//csatlakozás
mysql_connect ($host,$dbuser,$dbpass);
mysql_select_db($dbname);
$query="SELECT * FROM profil ";
if ($_POST['q_search'] !== "") {
if ($_POST['q_where'] == "-1") {
foreach($f AS $k => $v) {
$where[] ="$k like '%". mysql_real_escape_string( "q_search") ."%'";
}
}
else
$where[] = "q_where" . " like '%". "q_search" ."%'";
}
if(isset($where) AND count($where)>0)
$query .=" WHERE " . implode(" OR " , $where) ;
$result = mysql_query($query);
$num = mysql_num_rows($result);
$row_per_page="10";
$page= isset($_GET["page"])? intval($_GET["page"]) : 1 ;
$actual=($page-1)*$row_per_page;
$query.=" LIMIT $actual,$row_per_page";
$result = mysql_query( $query ) or die(mysql_error());
if ($num > 0 ) {
?>
<table border="1">
<tr>
<th>Név</th>
<th>Telefonszám</th>
<th>Email cím</th>
<th>Üzletég</th>
<th>Értékelés(5ös skála)</th>
<th>Munkavégzés helyszíne</th>
</tr>
<?php
while($a=mysql_fetch_assoc($result))
{
echo "<tr>";
echo "<td> ".$a["nev"]."</td>";
echo "<td> ".$a["telefonszam"]."</td>";
echo "<td> ".$a["email"]."</td>";
echo "<td> ".$a["uzletag"]."</td>";
echo "<td> ".$a["ertek"]."</td>";
echo "<td> ".$a["dolgoz"]."</td>";
echo "</tr>";
}
echo "</table>";
$q_search="q_search";
$q_where="q_where";
/*
$p = new pagination;
$p->Items($num);
$p->limit($row_per_page);
$p->target("?q_search=$q_search&q_where=$q_where");
$p->currentPage($page);
$p->nextLabel("");
$p->prevLabel("");
$p->nextIcon("►");
$p->prevIcon("◄");
$p->show();
*/
}
else
echo "<h3>NINCS TALÁLAT :(!</h3>";
?>
ezzel a hibával:
PHP Error Message
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a9426947/public_html/szerelokell/kesz/10/3.php on line 52
Free Web Hosting
Unknown column 'q_where' in 'where clause'
jön elő!
$q_search = $_POST['q_search'];
$q_where = $_POST['q_where'];
foreach($f AS $k => $v) {
$where[] ="$k like '%". mysql_real_escape_string($q_search) ."%'";
}
}
else
$where[] = $q_where" . " like '%". $q_search ."%'";
}
a végén szintén csak stringet teszel a $q_search és $q_where változókba, de ha szándékosan van úgy akkor nem szóltam (de szerintem oda is a POST értékek kellenek)
ezt lehet elrontottam :) :
else
$where[] = "q_where" . " like '%". $q_search ."%'";
}
ha a q_where egy létező mező az sql táblában
valami nem frankó(sztem elfelejtetted lezárni a "")
de inkább az eredeti kódot kéne átalakítani(visszamentem a generátorhoz!)
nos
$query="SELECT * FROM profil ";
if (req("q_search") != "") {
if (req("q_where") == "-1") {
foreach($f AS $k => $v) {
$where[] ="$k like '%". mysql_real_escape_string( req("q_search")) ."%'";
}
}
else
$where[] = req("q_where") . " like '%". mres( req("q_search") ) ."%'";
}
if(isset($where) AND count($where)>0)
$query .=" WHERE " . implode(" OR " , $where) ;
$result=mysql_query($query);
$num = mysql_num_rows ($result);
$row_per_page=10;
$page= isset($_GET["page"])? intval($_GET["page"]) : 1 ;
$actual=($page-1)*$row_per_page;
$query.=" LIMIT $actual,$row_per_page";
$result = mysql_query( $query ) or die(mysql_error());
if ($num > 0 ) {
?>
<table border="1">
<tr>
/**/
</tr>
<?php
while($a=mysql_fetch_assoc($result))
{
echo "<tr>";
/**/
echo "</tr>";
}
echo "</table>";
$q_search=req("q_search");
$q_where=req("q_where");
$p = new pagination;
$p->Items($num);
$p->limit($row_per_page);
$p->target("?q_search=$q_search&q_where=$q_where");
$p->currentPage($page);
$p->nextLabel("");
$p->prevLabel("");
$p->nextIcon("►");
$p->prevIcon("◄");
$p->show();
}
else
echo "<h3>No result!</h3>";
a req mres függvényeket kíséreltem meg róluk eltávolítani(mivel a szerver nem támogatja)
de csúnyán besült......Fatal error: Call to undefined function req() in /home/a9426947/public_html/szerelokell/kesz/10/3.php on line 36
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!