miert jelenik meg duplan a sor az adatbazisban?
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.
■ 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;
}
?>
koszi
Udv,
Balazs
Hiba:
$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.
muxik :)
udv,
Balazs