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 (emptyempty($tartomany)){
- urlap_keszit();
- print "nem adtal meg erteket a tartomany mezonek";
- }
- else if (emptyempty($nem)){
- urlap_keszit();
- print "nem adtal meg erteket a nem mezonek";
- }
- else if (emptyempty($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