Mit rontottam el a kódban? (PHP, MySQL)
Egy chatrobotot próbálok valahogy összehozni, már minden kész is van és működik, kivéve az üzenet, és a robot rá adott válaszának kiíratása.
Chat tábla mezői: id, username, message, date <-itt vannak a beküldött üzenetek
tudas tábla mezői: id, kerdes, valasz <-itt van a robot "agya". Na most az kéne, hogyha az általad küldött válasz benne van a tudás tábla kérdés mezőjében, írja rá ki a mellette lévő választ. Ez a kód:
$query = mysql_query("SELECT * FROM chat, tudas WHERE chat.username='$tmpname' ORDER by id DESC");
while($a=mysql_fetch_assoc($query)){
$message=$a['message'];
$username=$a['username'];
$kerdes=$a['kerdes'];
$valasz=$a['valasz'];
$date=$a['date'];
$message= str_replace("<", "<", $message);
$message= str_replace(">", ">", $message);
$valasz= str_replace("<", "<", $valasz);
$valasz= str_replace(">", ">", $valasz);
if(strstr($message , $kerdes)){
echo "<b>".$date." | <font color='green'>Teknős</font>: ".$valasz."</b><br>";
} else {
echo "<b>".$date." | <font color='green'>Teknős</font>: <font color='red'>Erre jelenleg még nincs válaszom!</font></b><br>";
}
echo "<b>".$date." | <font color='blue'>".$username."</font>: ".$message."</b><br>";
}
Ez így totál rossz.
SELECT * FROM chat, tudas WHERE chat.username='$tmpname' ORDER by id DESC
Ez a lekérdezés így a dékárd szorzatot adja vissza ahol a chat.username az a $tmpname. Illik megadni h mi alapján csatolja össze a táblákat.
A választ meg ne az alapján add vissza h kilistázol minden létező válaszlehetőséget és azt php-val keresed hanem a lekérdezésbe rakd bele: LIKE "%$kerdes%"
A sok str_replace-t sem értem h mi értelme 1-1karaktert kicserélni önmagára, dehát biztos van valami oka.
*
márminthogy ezt rakd bele: message LIKE '%$kerdes%'
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!