ugrás a tartalomhoz

miert jelenik meg duplan a sor az adatbazisban?

balage020 · 2006. Okt. 29. (V), 00.54
sziasztok!

van egy kis gondom az alabbi koddal:adatokat kerek be egy formon keresztul a felhasznalotol, majd az elkuld gombra kattintva a php kapcsolatot letesit egy mysql szerverrel es betolti az adatokat a tablaba, a baj az, hogy a betett sor duplan szerepel az adatbazisban, es nem jovok ra, miert.
<?php 
if(!isset($tartomany)){
	urlap_keszit();
	print "<p>tartomany nincs beallitva";
	}
else if(!isset($nem)){
	urlap_keszit();
	print "<p>nem nincs beallitva";
	}
else if(!isset($email)){
	urlap_keszit();
	print "<p>e-mail cim nincs beallitva";
	}
else
	{
	if (empty($tartomany)){
		urlap_keszit();
		print "nem adtal meg erteket a tartomany mezonek";
		}
	else if (empty($nem)){
		urlap_keszit();
		print "nem adtal meg erteket a nem mezonek";
		}
	else if (empty($email)){
		urlap_keszit();
		print "nem adtal meg erteket az email mezonek";
		}
	else
		{		
		print "meg lett adva mindharom ertek<br>";
		$vissza = adatbazis_bovit($tartomany, $nem, $email);
		if (! $vissza) print "<p>Hiba: $dbhiba<BR>";
		else print "<p><p>Köszönjük!";
		}
	}

function urlap_keszit($tartomany="",$nem="",$email="") {
	print "<form action=\"sql.php\" method=\"post\">";
	print "Tartomany:<br>";
  	print "<input type=\"text\" name=\"tartomany\" value=\"$tartomany\"><p>";
	print "Nem:<br>";
  	print "<input type=\"text\" name=\"nem\" value=\"$nem\"><p>";
	print "E-mail:<br>";
  	print "<input type=\"text\" name=\"email\" value=\"$email\"><p>";
  	print "<input type=\"submit\" value=\"Elküld\"></form><p>";
	}

function adatbazis_bovit($tartomany, $nem, $email)
 	{
		$felhasznalo = "root";
		$jelszo = "alma";
		$adatbazis = "test";
		$kapcsolat = mysql_pconnect("localhost:3306", $felhasznalo, $jelszo);
		if(! kapcsolat){$dbhiba = "Nem lehet kapcsolodni a MySQL kiszolgalohoz!";  return false;}
		mysql_select_db($adatbazis, $kapcsolat);
    	if(! mysql_select_db($adatbazis, $kapcsolat)) {$dbhiba = mysql_error(); return false;}
    	$parancs = "INSERT INTO tartomanyok(tartomany,nem,email) VALUES ('$tartomany','$nem','$email')";
 		mysql_query($parancs, $kapcsolat);
 		if (! mysql_query($parancs, $kapcsolat)) {$dbhiba = mysql_error(); return false;}
 		print "<p>adatbazis sikeresen bovitve!";
		return true;
	}
?>
 
1

koszi

balage020 · 2006. Okt. 29. (V), 00.55
A valaszokat elore is koszonom!

Udv,
Balazs
2

Hiba:

Vas Dávid · 2006. Okt. 29. (V), 02.27
A hiba a következő:

$parancs -ban letárolod zgye amit az sql-nek küldesz és le is futtatod mysql_query($parancs) -al, ez eddig oké is na de itt egy hiba:

if (! mysql_query($parancs, $kapcsolat)) {
$dbhiba = mysql_error();
return false;
}

nos itt az if-ben ellenárzi hogy jó-e(lefut-e) a parancs és ha nem akkor hibát ír ki és hamissal tér vissza, ugye, de az if ellenőrzésben mégegyszer lefut a mysql_query() vagyis mégegyzser elküldi a kérést az sql számára.

Vagy azt csinálod hogy változóba teszed a mysql_query($parancs, $kapcsolat) -ot

pl.:
$lekeres = mysql_query($parancs, $kapcsolat);
és így futtatod az if-et:
if (!$lekeres)

vagy pedig

nem futtatot le a mysql_query($parancs, $kapcsolat); -ot az if elött hanem szépen lefut az if-ben ha jó akkor bekerül ha nem akkor meg hibát és hamist ad vissza.

Remélem tudtam segíteni, és jót mondtam.
3

muxik :)

balage020 · 2006. Okt. 29. (V), 11.24
koszonom szepen! ez megoldotta a problemamat. :)

udv,
Balazs