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.
  1. <?php   
  2. if(!isset($tartomany)){  
  3.     urlap_keszit();  
  4.     print "<p>tartomany nincs beallitva";  
  5.     }  
  6. else if(!isset($nem)){  
  7.     urlap_keszit();  
  8.     print "<p>nem nincs beallitva";  
  9.     }  
  10. else if(!isset($email)){  
  11.     urlap_keszit();  
  12.     print "<p>e-mail cim nincs beallitva";  
  13.     }  
  14. else  
  15.     {  
  16.     if (emptyempty($tartomany)){  
  17.         urlap_keszit();  
  18.         print "nem adtal meg erteket a tartomany mezonek";  
  19.         }  
  20.     else if (emptyempty($nem)){  
  21.         urlap_keszit();  
  22.         print "nem adtal meg erteket a nem mezonek";  
  23.         }  
  24.     else if (emptyempty($email)){  
  25.         urlap_keszit();  
  26.         print "nem adtal meg erteket az email mezonek";  
  27.         }  
  28.     else  
  29.         {         
  30.         print "meg lett adva mindharom ertek<br>";  
  31.         $vissza = adatbazis_bovit($tartomany$nem$email);  
  32.         if (! $vissza) print "<p>Hiba: $dbhiba<BR>";  
  33.         else print "<p><p>Köszönjük!";  
  34.         }  
  35.     }  
  36.   
  37. function urlap_keszit($tartomany="",$nem="",$email="") {  
  38.     print "<form action=\"sql.php\" method=\"post\">";  
  39.     print "Tartomany:<br>";  
  40.     print "<input type=\"text\" name=\"tartomany\" value=\"$tartomany\"><p>";  
  41.     print "Nem:<br>";  
  42.     print "<input type=\"text\" name=\"nem\" value=\"$nem\"><p>";  
  43.     print "E-mail:<br>";  
  44.     print "<input type=\"text\" name=\"email\" value=\"$email\"><p>";  
  45.     print "<input type=\"submit\" value=\"Elküld\"></form><p>";  
  46.     }  
  47.   
  48. function adatbazis_bovit($tartomany$nem$email)  
  49.     {  
  50.         $felhasznalo = "root";  
  51.         $jelszo = "alma";  
  52.         $adatbazis = "test";  
  53.         $kapcsolat = mysql_pconnect("localhost:3306"$felhasznalo$jelszo);  
  54.         if(! kapcsolat){$dbhiba = "Nem lehet kapcsolodni a MySQL kiszolgalohoz!";  return false;}  
  55.         mysql_select_db($adatbazis$kapcsolat);  
  56.         if(! mysql_select_db($adatbazis$kapcsolat)) {$dbhiba = mysql_error(); return false;}  
  57.         $parancs = "INSERT INTO tartomanyok(tartomany,nem,email) VALUES ('$tartomany','$nem','$email')";  
  58.         mysql_query($parancs$kapcsolat);  
  59.         if (! mysql_query($parancs$kapcsolat)) {$dbhiba = mysql_error(); return false;}  
  60.         print "<p>adatbazis sikeresen bovitve!";  
  61.         return true;  
  62.     }  
  63. ?>  
 
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