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:

<html>
<head>
<title>
Szótár
</title>
</head>
<body bgcolor="lightskyblue">
<h1>Fordító</h1>
<form name="szotar" method="post" action="fordito.php">
<label for="angol">Angol&nbsp;&nbsp; </label>
&nbsp;<input type="text" size="10" name="ang" id="angol"><br />
<label for="magyar">Magyar</label>
<input type="text" size="10" name="magy" id="magyar">
<input type="submit" value="Fordítás" style="width: 74px">
</form>
</body>
</html>
És van még egy lap ami feldolgozza.
A kódja ez:

<?php
$magyar= $POST_[magyar]
$angol= $POST_[angol]
mysql_connect("localhost","root","") or exit("paff");
mysql_select_db("szotar") or exit("puff");
if ($magyar = null){
print mysql_query(".SELECT magyar FROM `szotar` WHERE angol= $angol.");
}
else {
print mysql_query(".SELECT angol FROM `szotar` WHERE magyar= $magyar.");
}
mysql_close();
?>
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:

<?php
$magyar =$_POST['magyar'];
$angol =$_POST['angol'];
mysql_connect("localhost","root","") or exit("paff");
mysql_select_db("szotar") or exit("puff");
if ($magyar == null){
print mysql_query(".SELECT `magyar` FROM `szotar` WHERE 1");
}
else {
print mysql_query(".SELECT `angol` FROM `szotar` WHERE 1.");
}
mysql_close();
?>
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.