Ahoj,
Můžete mi to prosím někdo zkouknout?Nevim jestli je to úplně nejlepší a sou tam nějaký chyby tak prosím za schovívavost... :-)
Vyhledavač.Akorát nevyhledává a netušim proč.Diky.
<?php
if(!empty($_POST["id_1"])){
$podminka='id_1=$_POST["id_1"]';
}
if(!empty($_POST["id_2"])){
$podminka='id_2=$_POST["id_2"]';
}
if(!empty($_POST["id_3"])){
$podminka='id_3=$_POST["id_3"]';
}
if(!empty($_POST["id_4"])){
$podminka='id_4=$_POST["id_4"]';
}
if(!empty($_POST["id_5"]){
$podminka='id_5=$_POST["id_5"]';
}
$sql = mysql_query("select * from table where '".$podminka."' and tfl='Ano' order by datum_registrace desc limit 6");
while($ukz = mysql_fetch_array($sql, MYSQL_ASSOC)){;
echo ("<table border=\"1\"><tr><td width=\"800\" bgcolor=\"SILVER\">Jmeno: ".$ukz["id_1"]."</td></tr>
<tr><td width=\"800\">Doplnek: ".$ukz["id_2t"]."</td></tr>
<tr><td width=\"400\">Obor(y): ".$ukz["id_3"]." Region: ".$ukz["okres"]."</td></tr>
<tr><td width=\"800\">Text:<br>
".$ukz["id_4"]."</td></tr></table><br><i>Dodavatel byl registrován dne:</i> ".$ukz["datum_registrace"].");
}
}
?>
Jeej tz preklepy nekde toho si nevsimejte.
To sem to akorat blbec spatne prepsal.
kdyz se nezada zadna podminka, tak to vytvori neplatnej sql dotaz => to where tam muzes dat jenom tehdy, pokud byla zadana apon jedna podminka
kdyz se zada vic jak jedna podminka, pouzije se jenom ta posledni => musis ty podminky spojovat pomoci AND, ale zase pozor na to, abys nevytvoril neplatnej sql dotaz
jinak misto $podminka='id_5=$_POST["id_5"]'; bych napsal spis $podminka='id_5='.$_POST['id_5'];
nejprv je treba odladit sestavovani toho dotazu, takze misto mysql_query si ten sestavenej dotaz nechavej vypsat echem
Zkusil sem si to vypsat tim echem.
Mas pravdu bere to v uvahu jenom ten posledni zadanej clen.
Dal sem tam i and ale nevypisuje mi to vubec nic...ani zadnou chybu...
Tak dobry podarilo se mi to prokopat pomoci .=
Ale nebere mi to vubec sql dotaz....Tvari se ze je vsechno v poradu ale nic to nenajde.........
nejdou ti některé podmínky proti sobě? Třeba překlep, místo id_1 = 3 and id_2 = 5 napíšeš obojí s id_1 a už to nenajde nic...
Pak je možnost, že tam skutečně taková data nemáš. Další (moje) oblíbená chyba je, že místo or napíšu and, je potřeba dávat pozor na prioritu, atd atd.
Zkus si řádek, který hledáš, najít "ručně", přes php admina. Pokud ho najdeš, tak hledej chybu v SQL dotazu, pokud ne, tak je něco špatně v úvaze.
Obecně by se dalo radit hodiny. Na konkrétní chybu asi budeš muset dojít sám. :-) (to určitě zvládneš)
Ne nejdou zkousel sem si vypsat echem jak to vypada a vsechno se tvari ze je to v poradku...
Vazne uz si nevim rady.....Nehlasi to zadnou chybu, data se v echu ukazujou za sebou tak jak jsou...rikal sem si jestli nemám v tom výslednym sql dotazu nejakou chybu ale proste to nic nehlasi...
i prez admina sem to zkousel..a tam mi to pozadovany data najde...
Momentalne je to takhle....
if(!empty($_POST['id_1'])){
$podminka .= 'id_1 = '.$_POST['id_1'];
}
if(!empty($_POST['id_2'])){
$podminka .= 'id_2 = '.$_POST['id_2'];
}
if(!empty($_POST['id_3'])){
$podminka .= 'id_3 = '.$_POST['id_3'];
}
if(!empty($_POST['id_4'])){
$podminka .= 'id_4 = '.$_POST['id_4'];
}
if(!empty($_POST['id_5'])){
$podminka .= 'id_5 = '.$_POST['id_5'];
}
if(!$sql = mysql_query('SELECT * FROM table WHERE "'.$podminka.'" AND tfl="Ano" ORDER BY datum_registrace DESC LIMIT 6')) echo "chyba<br>Dotaz : $sql";
while($ukz = mysql_fetch_array($sql)){
echo ("<table border=\"1\"><tr><td width=\"800\" bgcolor=\"SILVER\">... ".$ukz["id_1"]."</td></tr>
<tr><td width=\"800\">...: ".$ukz["id_2"]."</td></tr>
<tr><td width=\"400\">...: ".$ukz["id_3"]." Region: ".$ukz["okres"]."</td></tr>
<tr><td width=\"800\">...:<br>
".$ukz["id_4"]."</td></tr></table><br><i>...:</i> ".$ukz["datum_registrace"]." ");
}
no a jakou ti to teda hlasi chybu? aha, to by sis ju napred musel vypsat funkci mysql_error(), ze...
No prave ze to nehlasi chybu zadnou.....
To uz sem taky zkousel...
když se select provede, tak si ho zkus nechat vypsat a tento select dej do php admina... to jsi asi udělal. ... divné. Ještě zkus do mysql_query přidat připojení, nemáš jich třeba víc?
Divné, fakt divné, takhle z patra se těžko radí...
... http://www.volny.cz/peter.mlich/programs/
... treba mail.txt ...
... jako prvni radek:
error_reporting(E_ALL);
... pak bych dal
echo $dotaz;
print_r($_POST);
echo "<hr>".$podminka."<hr>";
mysql_query($dotaz) or die("<hr>Err lines show:$dotaz<hr>".mysql_error());
... a dulezite je tam to dotaz a mysql_error
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'specialisté PSVid_4=Maninyid_5=Praha AND tfl='Ano' ORDER BY d
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/local/apache/domains/stavebniservis.com/www.stavebniservis.com/registrace2/fulltext.php on line 331
A tohle mi vypise u id_3 'specialisté PSV, jenom pulku dotazu.A to sem zkousel zadat vsechny udaje od id_1 do id_5 'specialisté PSV)
Tohle mi to vypsalo jak sem tam dal mysql_error().....
no a to to tam nevidis? id_4=Maninyid_5=Praha ma byt id_4=Maniny AND id_5=Praha. ty tam totiz ty podminky sice spojujes, ale bez mezer a logickych spojek, tak to se pak nediv
A jak to tam mam teda zapsat?Jsem už z toho trochu mimo.....
Omlouvam se...
co treba neco jako $podminka .= ' id_1 = '.$_POST['id_1'].' AND '; ?
A co je spatne kdyz je tahle chyba.Spatny sloupec to neni a ty data tam jsou.
Unknown column 'Firma' in 'where clause'
a samo k tomu tradicne
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
Unknown column 'Firma' in 'where clause' == neznamy sloupec Firma v klauzuli where -> ten sloupec tam proste neni
Unknown column 'Firma' in 'where clause'
== neznamy sloupec "Firma" v klauzuli WHERE
Jak rikam, cely dotaz vypis
echo $dotaz;
pak vypis strukturu SQL tabulky a zjistis, ze v tabulce mas:
"fima"
ale v SQL to volas jako "Firma"
2 naprosto rozdilne promenne
a samo k tomu tradicne
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
== Fetch nemuze zpracovat, co je v zavorce (cili tam mas asi $vysledek z SQL dotazu), ktery je v teto chvili roven -1 a nikoliv SQL poli, protoze mas chybny dotaz.
To je proste logicka chyba, ktera vznika nasledkem predchozi chyby v dotazu.
jenom napisu navrh toho jak bych to udelal, pripadne chybky si kdyztak dolad :-)
$sql_where = Array ();
if (!empty($_POST["id_1"]))
$sql_where[] = "`id_1` = '$_POST[id_1]'";
if (!empty($_POST["id_2"]))
$sql_where[] = "`id_2` = '$_POST[id_2]'";
//atd...
$sql_where = implode (" AND ", $sql_where);
$sql = "SELECT * FROM blabla WHERE $sql_where AND dalsi podminky";
no a vysvetleni - do $sql_where se budou ukladat vsechny neprazdne podminky do pole, ktere se nasledne spoji pomoci AND .. a doufam ze nazapominas osetrovat vstupy ($_POST) .. treba pomoci mysql_escape_string()
samozrejme ze jsem zapomnel - jeste podminku pro ten select:
if (count ($sql_where)) {
$sql = "SELECT...
if (!empty($_POST["id_1"]))
$sql_where[] = "`id_1` = '$_POST[id_1]'";
if (!empty($c["d"]))
$a = "`b` = '$c[d]'";
ja byt parser, hlasim parse error na $c[d] na 2hem radku, protoze pole mas spravne zapsane nad tim jako $c["d"] nebo $c['d']. Nevim, kdes to sebral, ze bez uvozovek. Mozna to funguje v novejsim PHP, ale tady myslim ne.
Jinak teda nevim, komu to pises, danovi? Ja bych to delal asi podobne, ale cyklem od 1 do n a porovnavaval isset(), mozna empty, pak jeste mozna !=="".
1. to jsou mi novinky .. funguje to a rozhodne ne v nejnovejsich php :-)
2. hlavne ze jsem upozornil, ze napisu jenom navrh, stejne tak bys mohl rict, ze v sql neprojde text "dalsi podminky" .. pro me za me at si to pise treba objektove, chtel jsem mu poradit napad, jak jednoduse a efektivne spojit nekolik podminek .. a isset nebo empty - ja pouzivam vlastni funkci na sosani dat z requestu .. nechme to na nem ;-)
Super!
Dik moc funguje.Jenom to trosku doladim a je to perfektni dekuju!