Autor Zpráva
table
Profil *
Ahojte,
mam v db sloupec zapas, odehrano a id.
odesilam do nej data pomoci formulare.
Stejné id muze obsahovat nekolik radku.
Nyni oc mi jde.
potreboval bych aby po odeslani formulare projel skript tabulku nasel stejne id skontroloval sloupec zapas, pokud v nem budou nejake údaje pricetl k nim data z formulare, pokud zadna nebudou zapise je. do sloupce odehrano by se mel udaj vzdy prepsat. Zapisuji se do obou sloupcu jen ciselne udaje. Jelikoz o PHP toho moc nevim tak bych vás chtel poprosit jestli by nebyl nekdo tak hodny a nenapsal mi to, pokud je vubec mozne takto formular zpravovat. Dekuji vsem.
Zechy
Profil
Bud můžeš nejdřív použít SQL SELECT kdy ve where zadáš podmínku, jaké ID má najít, pokud mysql_num_rows nakonec vrátí nulu, provedeš akci, kterou potřebuješ. A nebo by to měl zvládat MERGE v SQL, kterej zjistí, zda záznam již existuje a pokud ano, tak jej přepíše, pokud ne, tak jej vloží do tabulky.
table
Profil *
pro me spanelska vesnice
table
Profil *
Napsal jsem toto ale nefunguje mi to
$confid=intval($_POST['confid']);

    $zap=$_POST['zap'];
    $odehrano=$_POST['odehrano'];

      // tu se dívám do databáze jeslti daný udaj už v databázi existuje.
    $exist_zapas = mysql_result(mysql_query("SELECT COUNT(*) FROM sportsdb_teams  WHERE zap='$zap' AND confid='$confid' "), 0);
//neexistuje -> potom ho vytvoříme pomocí insert
    if($exist_zapas==0){
    if ($zap != "zap" && $zap)
    {
    $import2="INSERT INTO sportsdb_teams (zap,odehrano) VALUES ('$zap', '$odehrano') WHERE confid='$confid'";
    mysql_query($import2) or die(mysql_error());
    }
    }
    //existuje -> potom ho aktualizujeme pomocí update
    else {
    if ($zap != "zap" && $zap )
    {
    $import="UPDATE sportsdb_teams SET zap=zap+'$zap',odehrano='$odehrano' WHERE confid='$confid'";
    mysql_query($import) or die(mysql_error());
    }

        }
 print "Limit zápasů v pořádku zapsán. Limit je $zap zápasů<br /><br /><a href=\"" . $_SERVER['PHP_SELF'] . "?action=mainview&conf=$confid\">Back</a>\n";
Možná je to úplná blbost nevím.
Jak jsem psal jsem začátečník a ještě skoro nic neumím :D
Píše mi to tuto chybu:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE confid='12'' at line 1
juriad
Profil
$import2="INSERT INTO sportsdb_teams (zap, odehrano, confid) VALUES ('$zap', '$odehrano', '$confid')";
Klauzule WHERE u INSERTu neexistuje.
table
Profil *
Děkuji za radu.
Tak už to chybu neháže ale do databáze to nic nezapíše, ikdyž to ukáže že to bylo v pořádku zapsané :-(
Joker
Profil
table:
Jestli dotaz spočívá v tomhle:
vložit záznam do databáze, ale pokud daný záznam (stejné IDčko) už v databázi je, tak jenom přičíst,
tak k tomu slouží konstrukce INSERT … ON DUPLICATE KEY UPDATE …

Jestli dotaz spočívá v tomhle:
pokud v daném sloupci je nějaká hodnota tak přičíst, pokud je NULL, vložit tam to číslo,
asi bych v první řadě zvážil, jestli by nebylo lepší tomu sloupci dát NOT NULL a jako výchozí hodnotu použít 0.
table
Profil *
Vyřešil jsem to takto jednoduše, nevím jestli je to tak správně ale funguje to:
<?php

  ob_start();
$confid=intval($_POST['confid']);

    $zap=$_POST['zap'];
    $zap2=$_POST['zap'];
    $odehrano=$_POST['odehrano'];

$query="UPDATE sportsdb_teams SET zap = zap+'$zap',zap2 = '$zap2', odehrano = '$odehrano' WHERE confid=$confid ";
        $result = mysql_query($query);
    print "Limit zápasů v pořádku zapsán. Limit je $zap zápasů<br /><br /><a href=\"" . $_SERVER['PHP_SELF'] . "?action=mainview&conf=$confid\">Back</a>\n";
 
  

ob_end_flush();
?>
juriad
Profil
Joker:
tak k tomu slouží konstrukce INSERT … ON DUPLICATE KEY UPDATE …
Jenže on z neznámého důvodu má těch řádků se stejným confid víc a tedy confid nemůže být klíč.

asi bych v první řadě zvážil, jestli by nebylo lepší tomu sloupci dát NOT NULL a jako výchozí hodnotu použít 0.
Ano to by bylo lepší.

Vůbec nejlepší by bylo, aby table vysvětlil, co se snaží namodelovat a podle toho navrhnout lepší databázové schéma.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: