ugrás a tartalomhoz

Egy változó két elágazásban

aky22 · 2011. Jún. 5. (V), 10.06
Lécci segítsetek! Nem jövök rá hogy hogy tudnám megoldani azt hogy egy változót két elágazásban használjak. Az lenne a lényeg hogy megkapja a getelt adatot és azt letárolom egy változóban, de nekem ez két helyre kellene és mivel le van ellenőrizve, hogy van e ilyen ezért csak az egyik helyen jelenik meg és ezért az update utasítás nem tud lefutni itt a kód:
include("../dbconnect2.php");
		mysql_set_charset("latin2");
		$tabla2=$_GET['tabla'];
		if (isset($_GET['id']) && isset($_GET['tabla']))
		{
		$id=$_GET['id'];
		$tabla=$_GET['tabla'];
		$p="SELECT * FROM `$tabla` WHERE `id`='$id'";
		if ($e=mysql_query($p))
		{
			$sor=mysql_fetch_array($e);
			echo '<form class="iform" action="'.$_SERVER['PHP_SELF'].'" method="post">
					Verseny:<br/>
					<input type="text" name="title" value="'.$sor['verseny'].'" size="40"/><br/>
					Név:<br/>
					<input type="text" name="user" value="'.$sor['user'].'" size="50"><br/>
					Eredmény:<br/>
					<textarea name="message" rows="15" cols="67">'.$sor['eredmeny'].'</textarea><br/>
					Dátum:<br/>
					<input type="text" id="datepicker" name="date" value="'.$sor['date'].'" size="50"><br/>
					<center><input type="submit" name="submit" value="Módosít" /></center>
					<input type="hidden" value="'.$sor['id'].'" name="id" />
				  </form>';
		}
		}		
			if (isset($_POST['submit']))
				{
				$_verseny=$_POST['title'];
				$_verseny=mysql_real_escape_string(stripslashes($_verseny));
				$_user=$_POST['user'];
				$_eredmeny=$_POST['message'];
				$_date=$_POST['date'];
				$id=$_POST['id'];
							
				include("../dbconnect2.php");
				mysql_set_charset("latin2");
				$parancs = "UPDATE `$tabla2` SET `verseny` = '$_verseny', `user` = '$_user', `eredmeny` = '$_eredmeny', `date` = '$_date', WHERE `id` =  '$id'";
					if (mysql_query($parancs))
					{
						header("location:../eredmenyeink.php");
					}
					else
					{
						print "Sikertelen módosítás";
						echo $parancs;
					}
						mysql_close($kapcs);
				}
 
1

Továbbítani kell a get paramétert

stan · 2011. Jún. 5. (V), 12.04

<form class="iform" action="'.$_SERVER['PHP_SELF'].'" method="post">
helyett ezt írd:

<form class="iform" action="'.$_SERVER['PHP_SELF'].'"?tabla="'.$tabla.'" method="post">
valamint ezt a részt egészítsd ki:

 if (isset($_POST['submit']))  
                {  
                $_verseny=$_POST['title'];
     $_verseny=mysql_real_escape_string(stripslashes($_verseny));  
                $_user=$_POST['user'];  
                $_eredmeny=$_POST['message'];  
                $_date=$_POST['date'];  
                $id=$_POST['id'];  
így:

 if (isset($_POST['submit']))  
                {  

include("../dbconnect2.php");
$tabla = mysql_real_escape_string($_GET["tabla"]);

                $_verseny=$_POST['title'];
     $_verseny=mysql_real_escape_string(stripslashes($_verseny));  
                $_user=$_POST['user'];  
                $_eredmeny=$_POST['message'];  
                $_date=$_POST['date'];  
                $id=$_POST['id'];  
Tehát a form elküldésekor továbbítod a get paramétert, a fogadáskor pedig eltárolod egy változóban.

Ne felejtsd el ezen kívül, hogy a mysql_real_escape_string előtt csatlakozni kell az adatbázishoz, mert ez a funkció csak így működik. (Legalábbis nálam.)
2

Köszi ez magamtól eszembe se

aky22 · 2011. Jún. 5. (V), 13.36
Köszi ez magamtól eszembe se jutott volna thx
3

Nem teljesen tiszta, hogy mi

H.Z. v2 · 2011. Jún. 5. (V), 15.38
Nem teljesen tiszta, hogy mi volt az eredeti problémád, de egy apró kiegészítés az egyebekhez: az include helyett javasolnám a require_once használatát. Az include dob egy warningot, ha nem találja a betöltendő file-t, a require megállítja a programot. A _once a végén meg arra való, hogy ha egyszer már betöltődött, akkor ne töltse újra. Pl.: a dbconnect2.php nevéből ítélve teljesen felesleges egy lapon kétszer meghívni, hiszen ha először lefutott, akkor már megvan a kapcsolat.