ugrás a tartalomhoz

MySQL lekérdezés feltétellel

minecraftmarton · 2014. Már. 26. (Sze), 19.10
Szeretnék készíteni egy egyszerű szótárprogramot. A szavakat adatbázisban tárolom( adatbázis:szotar tábla:szotar). Van egy lap amin be kell írni a fordítandó szót.
A kódja ez:
  1. <html>  
  2. <head>  
  3. <title>  
  4. Szótár  
  5. </title>  
  6. </head>  
  7. <body bgcolor="lightskyblue">  
  8. <h1>Fordító</h1>  
  9. <form name="szotar" method="post" action="fordito.php">  
  10. <label for="angol">Angol&nbsp;&nbsp; </label>  
  11. &nbsp;<input type="text" size="10" name="ang" id="angol"><br />  
  12. <label for="magyar">Magyar</label>  
  13. <input type="text" size="10" name="magy" id="magyar">  
  14. <input type="submit" value="Fordítás" style="width: 74px">  
  15. </form>  
  16. </body>  
  17. </html>  
És van még egy lap ami feldolgozza.
A kódja ez:
  1. <?php  
  2. $magyar$POST_[magyar]  
  3. $angol$POST_[angol]  
  4. mysql_connect("localhost","root",""or exit("paff");  
  5. mysql_select_db("szotar"or exit("puff");  
  6. if ($magyar = null){  
  7. print mysql_query(".SELECT magyar FROM `szotar` WHERE angol= $angol.");  
  8. }  
  9. else {  
  10. print mysql_query(".SELECT angol FROM `szotar` WHERE magyar= $magyar.");  
  11. }  
  12. mysql_close();  
  13. ?>  
Nagyon kéne segítség mert elakadtam.
Előre is köszönöm!
 
1

$magyar= $POST_[magyar] Nincs

Hidvégi Gábor · 2014. Már. 26. (Sze), 21.06
$magyar= $POST_[magyar]
Nincs $POST_ nevű globális tömb. Előre definiált változók.

if ($magyar = null){
Tipikus hiba. Összehasonlító operátorok.

A <?php utáni első sorba írd be, hogy error_reporting(E_ALL | E_STRICT);, így minden hibáról értesülni fogsz. A hibaüzenetekre utána rá tudsz keresni, hogy mi mit jelent.
2

Meg még

bamegakapa · 2014. Már. 26. (Sze), 22.01
Két dolgot tennék hozzá, az egyik hogy PHP-ban kell a pontosvessző, a másik, hogy olvass utána az SQL injection elnevezésű veszedelemnek, mert jelenleg a kódod ki van szolgáltatva neki alaposan.

Harmadikként pedig álljon itt a vesszőparipám (Gábor kedvence): ne használd a mysql_ függvényeket, használj mysqli-t vagy PDO-t, azon belül is prepared statementeket, mert így legalább amíg fogalmad sincs arról, mi az az SQL injection, addig is védve vagy ellene.
3

Persze, ezek sem elvetendő

Hidvégi Gábor · 2014. Már. 27. (Cs), 11.40
Persze, ezek sem elvetendő témák, de szerinted a kérdező van olyan szinten, hogy ilyenekkel foglalkozzon? Érzésre még futtatni sem tudja a scriptet.
4

A pontosvesszőkkel azért

Endyl · 2014. Már. 27. (Cs), 12.25
A pontosvesszőkkel azért érdemes foglalkoznia, ha futtatni akarja :)

Viccet félretéve, a prepared statementekkel pont azt nyeri, hogy amíg nem tart ott, addig különösebben nem kell foglalkoznia az SQL injectionnel (de legalább most már hallott róla), mert a legegyszerűbb formái ellen védve lesz. Plusz ha ennyire az elején tart, akkor azzal is jól jár a pdo/mysqli választásával, hogy nem az elavult mysql_ függvényeket tanulja meg, és ha esetleg egy olyan környezetbe fut bele, ahol ezek az elavultságuk miatt le vannak tiltva, akkor nem fog koppanni.
5

Ezzel tisztában vagyok, mint

Hidvégi Gábor · 2014. Már. 27. (Cs), 12.33
Ezzel tisztában vagyok, mint jeleztem, fontos témák. A beillesztett kód viszont nagy valószínűséggel sosem futott le, pont a pontosvesszők hiánya utal erre, tehát a kérdező nagy eséllyel mostanában kezdett el foglalkozni a php-val. Egy első osztályos gyereknek is hiába magyarázod, hogy nullával nem osztunk.
7

Pontosvessző

minecraftmarton · 2014. Már. 27. (Cs), 17.19
A pontosvessző hiányát észrevettem kb. 1 perccel azután hogy kiírtam ezt de ettő l függetlenül nem működik. Feledékeny vagyok.
8

Hibakeresés

Hidvégi Gábor · 2014. Már. 27. (Cs), 17.24
A szintaktikai hibákat kiírja a php, ha valamit nem értesz, a szótár segíteni fog.

Egyszerű hibakeresés.
6

Nem online

minecraftmarton · 2014. Már. 27. (Cs), 17.16
Ezt a kódot nem szeretném kitenni de azért köszönöm
9

post

minecraftmarton · 2014. Már. 27. (Cs), 17.24
A $_POST-ra rájöttem:). De a többit kösz. Ui. A MySQL hibákat is kiírja?
10

Új kód

minecraftmarton · 2014. Már. 27. (Cs), 18.54
Eljutottam addig hogy ne írjon ki semmit vagyis hibaüzenetet. De a szót továbbra sem írja ki. Az új kód:
  1. <?php  
  2. $magyar =$_POST['magyar'];  
  3. $angol =$_POST['angol'];  
  4. mysql_connect("localhost","root",""or exit("paff");  
  5. mysql_select_db("szotar"or exit("puff");  
  6. if ($magyar == null){  
  7. print mysql_query(".SELECT `magyar` FROM `szotar` WHERE 1");  
  8. }  
  9. else {  
  10. print mysql_query(".SELECT `angol` FROM `szotar` WHERE 1.");  
  11. }  
  12. mysql_close();  
  13. ?>  
Kérnék még egy kis segítséget hozzá!
Köszönöm!!!
11

Ez így nem fog működni.

bamegakapa · 2014. Már. 27. (Cs), 20.02
Ez így nem fog működni. Olvasd el a mysql_query leírását, például a PHP manualban. Nézz meg példákat, ott látszani fog, hogyan tudod egy lekérdezés eredményét kiiratni. Tele van vele az internet, magyarul is (sajnos, mert mysql_query-t már senkinek nem kéne használnia).

Akkor fordulj hozzáértőkhöz, ha már megcsináltad a házi feladatodat.