ugrás a tartalomhoz

Törlés nem fut le!

aky22 · 2011. Jún. 3. (P), 20.46
Hali! Az a problémám hogy a következő törlés nem fut le pedig minden adatot megkap.
<?php
	if (isset($_GET['id']))
	{
		include ("dbconnect2.php");
		mysql_set_charset("latin2");
		$id=$_GET['id'];
		$tabla=$_GET['tabla'];
		$p="DELETE FROM `$tabla` WHERE `id` = '$id'";
		print $p;
		mysql_query($p);
		//mysql_close($kapcs);
	}
	header("location:../eredmenyeink.php");
?>
 
1

Én először teljesen

Totti 1986 · 2011. Jún. 3. (P), 21.22
Én először teljesen szétszedném az egészet a helyedben.

A header location-t eleve kommenteld ki és akkor legalább van esélyed látni, mi a probléma.
Aztán egy
print '<pre>';
print_r($_GET);
print '</pre>';
megmutatja, h tényleg átjöttek-e a kívánt adatok.
Ha nincs meg minden adat, vagy nem azok amiknek lenniük kéne, így meg fogod tudni.
2

A mysql_query után írasd ki a

H.Z. v2 · 2011. Jún. 3. (P), 21.23
A mysql_query után írasd ki a mysql_error() által visszaadott értéket!
Ha nincs hiba, akkor lehet, hogy olyan "motort" használsz a tábládhoz, ami tranzakcióképes és nem csinál autocommit-ot. Ezesetben segíthet egy "commit" SQL utasítás.

(lenne némi kritikai megjegyzésem az ellenőrizetlen inputod felhasználását illetően, de az nem tűr nyomdafestéket, úgyhogy megtartom magamnak. ;) )
3

Próbáltam

aky22 · 2011. Jún. 3. (P), 21.26
A header locationt már próbáltam és kiírattam az sql utasítást és meg is kapta az adatokat az ellenőrzést pedig azért vettem ki hátha ott rontok valamit. (a commit meg nem tudom mit jelent)
4

Ilyet NE!

Poetro · 2011. Jún. 3. (P), 21.33
Ilyet nem szabad írni. Ebben a formában kockáztatod, hogy valaki teljesen kiüríti az összes táblát, amiben van id nevű mező. Tegyük fel hogy a felhasználó az alábbi id paramétert adja át az URL-ben: 0' OR id <> 0 Ekkor ugye az összes, az adott táblában levő sort kiüríti. Ezért a felhasználótól jövő adatot mindenképpen megfelelően escapelni kell, ebben az esetben mysql_real_escape_string segítségével. Igaz ez mind a $tabla, mind az $id változókra.

Másik dolog, amit nem szabad csinálni, az az, hogy GET formában vársz adatokat, amik megváltoztatják az adatbázis. Olyan esetekben, aminek következményeként INSERT / UPDATE / DELETE adatbázis művelet fut le, mindenképpen POST (illetve amennyiben lehetséges, akkor PUT) kéréssel legyenek megoldva.

pedig minden adatot megkap

Honnan tudod, hogy minden adatot megkap? Kiírattad a megkapott adatokat? Mondjuk a $_GET és $_POST tömbök kiíratásával ellenőrizheted ezt.
6

Azt megcsinálom csak előbb ez

aky22 · 2011. Jún. 4. (Szo), 11.11
Azt megcsinálom csak előbb ez az egyszerű dolog működjön és utána majd ellenőrzéseket beletolom. A másik meg az, hogy onnan tudom hogy az adatokat megkapom, hogy a mysql utasítást kiírattam ás minden tök jól benne volt csak éppen nem akart működni
7

Hibák

Poetro · 2011. Jún. 4. (Szo), 13.20
Megnézted, hogy a MySQL adatbázishoz sikeres volt-e a kapcsolódás? A mysql_query adott vissza hibát (mysql_error())? A lekérdezésben levő tábla létezik? A lekérdezés sikeresen lefut-e akkor, ha egy MySQL adminisztrációs felületen futtatod?
8

A kapcsolódás sikerül mert

aky22 · 2011. Jún. 4. (Szo), 16.37
A kapcsolódás sikerül mert ugyan ez van beincludolva máshova is ahol működik a tábla jó phpmyadminból futtatva az utasítás lefut. A mysql_query-t még nem néztem
9

Eddig asszem, hárman

H.Z. v2 · 2011. Jún. 4. (Szo), 16.47
Eddig asszem, hárman említettük, hogy nézd meg, mit mond a mysql_error.
Egyébként az "ugyan ez" és az "ugyanez" mást jelent!
Hogy máshol működik az include-olt program, még nem feltétlenül jelenti, hogy ebben a környezetben is, erre ne alapozz, ha hibát keresel!
10

A mysql_error a

aky22 · 2011. Jún. 4. (Szo), 17.01
A mysql_error a mysql_query-re semmit nem dob pedig ha elágazásba rakom akkor az else ágat írja ki tehát nem fut le. A kapcsolatot most néztem meg de az is rendben van
11

Bocsi én voltam a balf*sz

aky22 · 2011. Jún. 4. (Szo), 17.21
Bocsi én voltam a balf*sz mert télleg a kapcsolat nem épült föl. Az include nem akart működni. ha simán beillesztem úgy megy
5

Valóban ne így csináld,

varcsaba · 2011. Jún. 3. (P), 22.12
Valóban ne így csináld, figyelj oda a biztonságosabb működésre amit ez előtte m szólóak írtak. A hiba szerintem az, hogy az id-et nem kell aposztrófok közé tenni.