ugrás a tartalomhoz

Felhasználói adat módosításnál nem megy végbe a lekérdezés!

Tailor993 · 2010. Már. 15. (H), 15.40
Sziasztok! Kezdő PHP programozóként sikerült egy login rendszert elkészítenem regisztrációval bejelentkezéssel és sütikkel. De a felhasználó adatainak módosítása nem akar össze jönni.

Az volt az ötletem hogy lejön az az űrlap mint a regisztrációnál kitöltve a már bevitt adatokkal és ezt lehet majd átírni. Így átmásoltam az a <form> utasítást a regisztrációból. Ezután a value értékét megváltoztattam $e_mezöneve paraméterre.
pl így:
ez volt a regisztrációnál:


echo'<tr><td>Felhasználó név:</td><td><input type=text name=name value=Felhasználóneved></td></tr>'; 
ez lett a beállításoknál:


echo'<tr><td>Felhasználó név:</td><td><input type=text name=name value=';  print($e_name); 
echo'></td></tr>';
De hogy tisztán lássatok itt a teljes és hibás kód!

<?php
//bejelentkezési állapot ellenőrzése

if(isset($_COOKIE['login_tailor993_jog']))
{

//Felhasználó jogkörének ellenőrzése
if($_COOKIE[login_tailor993_jog]>0)
{
//beléptető sütik megújítása
$name=$_COOKIE['login_tailor993_name'];
$jog=$_COOKIE['login_tailor993_jog'];
setcookie('login_tailor993_jog', '0', time()-10*365*24*60*60);
setcookie('login_tailor993_name', '0', time()-10*365*24*60*60);
setcookie('login_tailor993_jog', $jog, time()+2*60*60);
setcookie('login_tailor993_name', $name, time()+2*60*60);

//felhasználó felület

echo'<body bgcolor=#FFFFCC><h1>Beállítások</h1><a target=_self href=./main.php>Vissza a főmenübe!</a>';

 //MySQL kapcsolódás eleje
$kapcsolat = mysql_connect("Host", "Felhasználó név", "Jelszó");
if (!$kapcsolat) die("Nem sikerült kapcsolódni az adatbázishoz!");

mysql_select_db("tailor993", $kapcsolat) or die("Nem sikerült kiválasztani az adatbázist!");
//MySQL kapcsolódás vége

//MySQL művelet eleje


$sql_jog="select jog from login where name='$name'" ;
$e_jog = mysql_query($sql_jog, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (2)! A hiba oka: ".mysql_error()));

$sql_date="select date from login where name='$name'" ;
$e_date = mysql_query($sql_date, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (3)! A hiba oka: ".mysql_error()));

$sql_id="select id from login where name='$name'" ;
$e_id = mysql_query($sql_id, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (4)! A hiba oka: ".mysql_error()));

$sql_vezetek = "select vezer from login where name=$name" ; 
$e_vezetek = mysql_query($sql_vezetek, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (5)! A hiba oka: ".mysql_error()));

$sql_kereszt="select kereszt from login where name='$name'" ;
$e_kereszt = mysql_query($sql_kereszt, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (6)! A hiba oka: ".mysql_error()));

$sql_email="select email from login where name='$name'" ;
$e_email = mysql_query($sql_email, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (7)! A hiba oka: ".mysql_error()));

$sql_szulet="select szulet from login where name='$name'" ;
$e_szulet = mysql_query($sql_szulet, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (8)! A hiba oka: ".mysql_error()));

$sql_nevnap="select nevnap from login where name='$name'" ;
$e_nevnap = mysql_query($sql_nevnap, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (9)! A hiba oka: ".mysql_error()));

$sql_horoszkop="select horoszkop from login where name='$name'" ;
$e_horoszkop = mysql_query($sql_horoszkop, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (10)! A hiba oka: ".mysql_error()));

$sql_lakik="select lakik from login where name='$name'" ;
$e_lakik = mysql_query($sql_lakik, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (11)! A hiba oka: ".mysql_error()));

$sql_tel="select tel from login where name='$name'" ;
$e_tel = mysql_query($sql_tel, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (12)! A hiba oka: ".mysql_error()));

$sql_fogl="select fogl from login where name='$name'" ;
$e_fogl = mysql_query($sql_fogl, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (13)! A hiba oka: ".mysql_error()));

$sql_text="select text from login where name='$name'" ;
$e_text = mysql_query($sql_text, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (14)! A hiba oka: ".mysql_error()));
 
 $sql_hogy="select hogy from login where name='$name'" ;
$e_hogy = mysql_query($sql_hogy, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (15)! A hiba oka: ".mysql_error()));
 
 $sql_fogl="select fogl from login where name='$name'" ;
$e_fogl = mysql_query($sql_fogl, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (16)! A hiba oka: ".mysql_error()));

 $sql_nem="select nem from login where name='$name'" ;
$e_nem = mysql_query($sql_nem, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (17)! A hiba oka: ".mysql_error()));

 $sql_pass="select password from login where name='$name'" ;
$e_pass = mysql_query($sql_pass, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (18)! A hiba oka: ".mysql_error()));
print($e_vezetek);    
//MySQL művelet vége
$email=$e_email;
echo'<form method=POST action=./options_fix.php>
Az azonosító számod: ';  
 switch($e_jog){
   case 0:
  echo'0';
   break;
   case 1:
  echo'1';
   break;
      case 2:
  echo'2';
   break;
      case 3:
  echo'3';
   break;
   case 4:
  echo'4';
   break;
   case 5:
  echo'5';
   break;
      case 6:
  echo'6';
   break;
      case 7:
  echo'7';
   break;
      case 8:
  echo'8';
   break;
      case 9:
  echo'9';
   break;
      case 10:
  echo'10';
   break;
      case 11:
  echo'11';
   break;
      case 12:
  echo'12';
   break;
      case 13:
  echo'13';
   break;
      case 14:
  echo'14';
   break;
      case 15:
  echo'15';
   break;
      case 16:
  echo'16';
   break;
      case 17:
  echo'17';
   break;
      case 18:
  echo'18';
   break;
      case 19:
  echo'19';
   break;
      case 20:
  echo'20';
   break;
      case 21:
  echo'21';
   break;
      case 22:
  echo'22';
   break;
      case 23:
  echo'23';
   break;
      case 24:
  echo'24';
   break;
      case 25:
  echo'25';
   break;
      case 26:
  echo'26';
   break;
      case 27:
  echo'27';
   break;
      case 28:
  echo'28';
   break;
      case 29:
  echo'29';
   break;
      case 30:
  echo'30';
   break;
      case 31:
  echo'31';
   break;
   }
 echo' <br>
A jogosultsági köröd: ';
 switch($e_jog){
   case 0:
  echo'0';
   break;
   case 1:
  echo'1';
   break;
      case 2:
  echo'2';
   break;
      case 3:
  echo'3';
   break;
   case 4:
  echo'4';
   break;
   case 5:
  echo'5';
   break;}
 $date=$e_date;

$sor=mysql_fetch_array($e_vezetek, MYSQL_ASSOC);
FOREACH($sor as $i=>$ertek)
{print"$ertek";}

 echo'  <br>
A regisztrációd ideje: '; print($date1); echo' <br>
A így találtál ide: '; print($e_hogy); echo'  <br>
<table>
<tr><td>Felhasználónév:</td><td><input type=text name=name value=';print($name);echo'></td></tr>
<tr><td>vezetéknév:</td><td><input type=text name=vezetek value=';print($e_vezetek);echo'></td></tr>
<tr><td>Keresztnév:</td><td><input type=text name=kereszt value=';print($e_kereszt);echo'></td></tr>
<tr><td>E-mail:</td><td><input type=text name=email value=';print($email);echo'></td></tr>
<tr><td>Születésnap:</td><td><input type=text name=szulet value=';print($e_szulet);echo'></td></tr>
<tr><td>Névnap:</td><td><input type=text name=nevnap value=';print($e_nevnap);echo'></td></tr>
<tr><td>Horoszkóp:</td><td><input type=text name=horoszkop value=';print($e_horoszkop);echo'></td></tr>
<tr><td>Lakhely:</td><td><input type=text name=lakik value=';print($e_lakik);echo'></td></tr>
<tr><td>Telefonszám:</td><td><input type=text name=tel value=';print($e_tel);echo'></td></tr>
<tr><td>Foglalkozás</td><td><input type=text name=fogl value=';print($e_fogl);echo'></td></tr>
<tr><td>Nemed:</td><td>';
if($e_nem==='f'){
echo'<label><input type=radio value=n name=nem>Nő<br><input type=radio check=check value=f name=nem>Férfi</label>';}
elseif($_nem==='n'){
echo'<label><input type=radio value=n check=check name=nem>Nő<br><input type=radio value=f name=nem>Férfi</label>';}
else{
echo'<label><input type=radio value=n name=nem>Nő<br><input type=radio value=f name=nem>Férfi</label>';}
Echo'
</td></tr>
<tr><td>Megjegyzés:</td><td><textarea name=text value=';print($e_text);echo'></textarea></td></tr>
<tr><td>Régi jelszó:</td><td><input type=password name=oldpass ></td></tr>
<tr><td>Új jelszó</td><td><input type=password name=pass1 ></td></tr>
<tr><td>Új jelszó ismét:</td><td><input type=password name=pass2 ></td></tr>

</table>
<input type=submit value=Módosít name=send>
</form>
';



}
//sikertelen beléptetés
else
echo'<body bgcolor=#FFFFCC>Nincs megfelelő jogköröd az oldal megtekintéséhez! <a target=_self href=./login.php>Vissza</a>';
}
else
 echo'<body bgcolor=#FFFFCC> Nem vagy bejelentkezve! <a target=_self href=./login.php> Jelentkezzbe</a> vagy ha nem vagy regisztrálva  <a target=_self href=./reg.php>regisztrálj</a>!';

?>

Remélem tudtok segíteni. A MySQL kapcsolatból biztonsági okokból vettem ki a valós paramétereket.

Előre is Köszönöm a segítséget.
 
1

Utóirat

Tailor993 · 2010. Már. 15. (H), 15.43
A mezők értéke mindig Resourcid lesz igazából ez a bajom.
2

UPDATE

Poetro · 2010. Már. 15. (H), 17.18
Én nem látok egyetlen UPDATE SQL utasítást sem így nem értem mit takar számodra a módosítás. Ha teszel egy lekérdezést, akkor az sorokat fog visszaadni, amiket külön még ki kell szedned mysql_fetch_* műveletekkel.
3

Re: UPDATE

Tailor993 · 2010. Már. 15. (H), 19.04
Itt csak átírhatja az adatlapot és mikor rákattint hogy módosít az adatok átadódnak a options_fix.php -be de előbb ennek a lehívásnak kéne végbemennie. De minden esetbe csak 1 sor az eredmény mert nem lehet 2 azonos nevű felhasználó.
4

Nincs itt hiba...

a.d.a.m · 2010. Már. 15. (H), 23.15
az általad jelzett állapotot (ti. "mezők értéke mindig Resourcid lesz") az okozza, hogy a php végrehajtja amit kérsz tőle.

Részletesebben:
$sql_nem="select nem from login where name='$name'" ;  
$e_nem = mysql_query($sql_nem, $kapcsolat) or die(print("Nem sikerült a művelet végrehajtása (17)! A hiba oka: ".mysql_error()));
A fenti esetben az $e_nem értéke resource lesz (ld. a manual-t), mert a mysql_query visszatérési értéke egy erőforrás mutató. Amit te kiiratsz.

Ahhoz hogy a lekérdezésed eredményét megjelenítsd egy másik függvényre van szükséged: mysql_fetch_array, mysql_fetch_assoc, mysql_result. Bármelyiket választhatod.

Érdemes lenne az egyes elemek lekérdezéseit összevonni. Én vizsgálnám azt is, hogy a megadott $name szerepel-e egyáltalán az adatbázisban és levédeném a sütiből származó adatokat. A miértről további olvasnivaló itt.
5

OFF - Switch lecserélése

Kevlar · 2010. Már. 17. (Sze), 17.02
Nem vagyok PHP-s, így ha butaságot mondok, majd kijavítanak, de szükséges ez a hosszú switch a kódban? Hiszen a visszatérési érték ugyanaz, mint a vizsgált változó értéke. Egyszerűbb lenne így:
echo 'Az azonosító számod: '.$e_jog;