ugrás a tartalomhoz

Adott sor adataival való munkálatok

Erni19 · 2013. Dec. 7. (Szo), 12.02
Udv!

Az adatbazis.php-ben van egy lista a konyvekrol és minden egyes konyv mellett egy gomb "visszahozás". Hogy lehetne kivitelezni azt, hogy az adatbazis.php-ban a gombra kattintva az abban a sorban levo értékeket berakja a kolcsonzes táblába?

A lenti kóddal annyi a gondom, hogy hibát ír ki erre a részre '$sor['cim']' ...). Valahogy úgy kéne megoldani, hogy jegyezze meg az adatbázis.php-ben a sorban tárolt értékeket mikozben átirányítódik a visszahozas.php-ra.

visszahozas.php

$parancs = ("SELECT * adatbazis") or die(mysql_error());
										
$eredmeny=mysql_query( $parancs, $kapcsolat ) or die (mysql_error()); 
mysql_query("DELETE FROM `munka`.`hozzaadas` WHERE `hozzaadas`.`iro` = '' AND `hozzaadas`.`cim` = '' AND `hozzaadas`.`kategoria` = '' AND `hozzaadas`.`polc` = 0 AND `hozzaadas`.`regal` = 0 AND `hozzaadas`.`tulaj` = ''");

while (@$sor = mysql_fetch_array( $eredmeny ) );

mysql_query("INSERT INTO kolcsonzes SET cim = '$sor['cim']', 
					iro= '$sor['iro']', 
					tulaj= '$sor['tulaj']', 
					kategoria = '$sor['kategoria']', 
					polc= '$sor['polc']',
					kolcsonozheto= '$sor['regal']',
					regal= '$sor['kolcsonozheto']'") or die(mysql_error());

header('Location: adatbazis.php');
Koszi szépen elore is
 
1

Mivel a mellékelt kódból

Endyl · 2013. Dec. 7. (Szo), 13.08
Mivel a mellékelt kódból sokat nem tudok kihámozni, első körben pár általános megjegyzést fűznék csak hozzá.

Az említett sorra azért dob hibát, mert nem megfelelően hivatkozol a stringből a változóra. Vonatkozó olvasmány a PHP manualból.

De ezzel nem is lenne gondod jelen esetben, ha a jelenleg elfogadott (és támogatott) adatbázis-kezelési kiterjesztéseket és módszereket használnád (ha van rá lehetőséged). Mysql kiterjesztés helyett minimum mysqli és prepared statements, vagy a praktikusabb PDO.
2

+1

bamegakapa · 2013. Dec. 7. (Szo), 13.48
Csatlakozom, a mysql_ függvényeket már csak azért sem érdemes megtanulnod, mert hamarosan kikerülnek a PHP-ból, már deprecated státuszban vannak jelenleg is. Ősrégi tananyagok persze ezzel vannak tele, de ne foglalkozz vele.

Mysqli vagy PDO. És csakis prepared statements.
4

Nos a kódban minden benne van

Erni19 · 2013. Dec. 7. (Szo), 15.32
Nos a kódban minden benne van ahhoz, hogy a program lefutása során a beírt adatokat a phpmyadminba elmentse...
A hivatkozásom tokéletes, a hiba azért merult fel, mivel a beviteli mezos rész nem ezen a php-n van, hanem azon, ahonnan le akarom kéretni az adatokat...
Koszonom az építo jellegu tanácsot.

bamegakapa
Olyan helyzetben vagyok, hogy 2 hete kezdtem el php-val foglalkozni, úgyhogy nekem egyelore ehhez a munkához a mysql tokéletesen megfelel, de koszonom a figyelmeztetést. Komolyabb programhoz már szélesebb korben szeretnék dolgozni-

Pepita
A zárójel jól van ott ahol van.
Aposztrofhibáról szó sincs.
A 4. soron nem esik semmiylen változtatás, az hogy neked nem átlátható nem az én gondom. Nekem tokéletesen megfelel és tisztában vagyok a saját programrészeimmel.
5

Vitatkoznék. Mivel két hete

bamegakapa · 2013. Dec. 7. (Szo), 16.48
Vitatkoznék. Mivel két hete kezdtél el vele foglalkozni, neked felel meg a legkevésbé. Megtanulsz valamit feleslegesen, mivel már elavult. Furcsa lesz, amit mondok, de a mysql_ függvények használata több szakértelmet igényel, mint a mysqli vagy a PDO, ahhoz hogy biztonságosan tudd használni.

Persze a döntést te hozod meg - de még nyúlfarknyi projekthez sem érdemes mysql_ függvényeket használni, főleg ha most tanulod az egészet. Másoknál nehezebb a dolog, mert már berögzült, nehezebb váltani, de te még szerencsés helyzetben vagy, használd ki!
7

Ritka eset: +1

Pepita · 2013. Dec. 7. (Szo), 23.35
mysql_ függvények használata több szakértelmet igényel, mint a mysqli vagy a PDO
Ez így igaz, ilyesmire gondoltam 3-ban is.

Viszont van egy-két olyan (pl. backup) szolgáltatása a mysql-nek, ami utódainak nincs. Ezzel együtt én is a mysqli-t vagy a pdo-t javaslom, de lehet, hogy berögződés miatt, az escape-elést nem bízom csak prepared statament-ekre.
6

Tanácsok

Endyl · 2013. Dec. 7. (Szo), 17.12
Nem kéne ilyen ellenségesen, "énmindenttudok" hozzáállással válaszolni azoknak, akik a saját szabadidejükat áldozzák ingyen és bérmentve arra, hogy neked segítsenek (és valószinűleg, veled ellentétben, nem két hete kezdtek a témával foglalkozni). A leírt tanácsokat célszerűbb megfogadnod, mint harcolni ellenük, mert magadnak segítesz vele a leginkább.

A változó hivatkozásod nem tökéletes, mert egy
"'$foo['bar']'"
kódrész egy "Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING"-hez hasonló hibát generál. De ha olvastad volna a PHP kézikönyv vonatkozó, linkelt részét, akkor nem kétkednél ebben.

Ez a két mondat valahogy üti egymást:
Nos a kódban minden benne van ahhoz, hogy a program lefutása során a beírt adatokat a phpmyadminba elmentse...
vs.
a beviteli mezos rész nem ezen a php-n van

Arról nem is beszélve, hogy a beszúrt kódban nem látok hivatkozást "beviteli mező"-re.

ehhez a munkához a mysql tokéletesen megfelel

Amennyiben ez egy ténylegesen hosszú életű munka (bár kéthetes php próbálgatással remélhetőleg nem), és a későbbiekben frissítenek egy olyan php verzióra, ami már nem fogja támogatni a mysql_* kiterjesztést, akkor az ügyfél/felhasználó nem fogja olyan tökéletesen érezni magát.
Hidd el -lásd bamegakapa megjegyzéseit-, csak magadnak spórolsz időt, ha minél előbb áttérsz a mysqli vagy PDO használatára. Nem viccből mondjuk.

Nekem tokéletesen megfelel és tisztában vagyok a saját programrészeimmel.

Vajon a fél, egy vagy több évvel későbbi önmagad ugyanilyen tökéletesen át fogja látni? (Segítek; az általános tapasztalat az, hogy nem. Ezért célszerű minél olvashatóbb és átláthatóbb kódot írni. Arról nem is beszélve, hogy nem lehetsz benne biztos, hogy csak te fogod olvasni a kódodat. Például felteszel egy kérdést egy fórumban, és azért nem fog senki sem válaszolni, mert értelmezhetetlen a kódod, és jobb dolga is van a fórumozóknak, mint más össze-vissza kódját kibogozni. A legalapvetőbb tisztelet jele, hogy jól formázott kódot mellékelsz a kérdésedhez.)

Utolsó tanácsként megjegyezném, nem szégyen belátni, hogy tévedett az ember. ;) Vagy ahogy a szólás tartja:
Tévedni emberi dolog, de a hibában kitartani ostobaság.
8

Hát, ahogy gondolod

Pepita · 2013. Dec. 7. (Szo), 23.45
bamegakapa és Endyl jó tanácsait nem fogom ismételni.
Az, hogy te kijelented: a kódod tökéletes - hát tudod az informatikában nem így mennek a dolgok. Esetleg politikai pálya?... :)

Egy biztos, míg ezen a rossz hozzáállásodon nem változtatsz, én nemigen segítek neked többet, de azt hiszem, más sem.

Hogy én is hozzak egy szólást:
A jó pap holtig tanul.
A jó webfejlesztő pedig nyugdíjig, de akkor meg már úgysem tudja abbahagyni... :)
3

Az első sorban

Pepita · 2013. Dec. 7. (Szo), 13.54
értelmetlen a zárójel, és a or die(mysql_error()) rész, mivel egyszerű string értéket adsz csak egy változónak.

Az aposztrófhibát már tudod, ezen lehet segíteni úgy is, hogy "."-okkal összefűzött querystringet csinálsz, így jobban láthatóan bele tudod írni a jelenleg hiányzó escape-eléseket is.

A 4. sort is tördelhetnéd szebben, nem árt az olvasható kód, mikor hibát kell keresni.

Ha megfelelően automatizálod magadnak az escape-elést, akkor nem muszáj mysgli-t vagy pdo-t használni, de ez az automatizálás nem kis feladat, úgyhogy én is a driverváltás mellett vagyok.