Autor Zpráva
Yuff.3
Profil
Ahojte,
vytvoril som si jednoduchý kód na odoslanie textov do databázy mysql. Používam php-fusion systém a vypíše mi tam túto chybu vždy: 1064 - 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 ')' at line 1 - viete niekto čo tá chyba znamená a ako ju odstránim, aby mi kód uvedený nižšie fungoval? Už som skúšal asi všetko. (Ten zakomentovaný kód na vytvorenie tabuľky je zakomentovaný preto, lebo tabuľka je vytvorená už a keď som skúsil daný formulár, tak mi vypísalo, že tabuľka už existuje, ale údaje do databázy samozrejme neodoslalo. Predpokladám, že to neodosiela vďaka tej spomínanej chybe..

<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";

/*$s = dbquery("CREATE TABLE prefix_zapasy (
`id` smallint(5) unsigned NOT NULL auto_increment,
`hra` varchar(255) NOT NULL,
`nas_team` varchar(255) NOT NULL,
`super_team` varchar(255) NOT NULL,
`nas_team_body` varchar(255) NOT NULL,
`super_team_body` varchar(255) NOT NULL,
`liga` varchar(255) NOT NULL,
`datum` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ");*/

?>
<html><body>    
    <h1>Pridať nový zápas</h1>

    <form method="POST" action="">
  
        Hra: 
        <input name="hra" type="text">
    <br>
        Náš team: 
        <input name="nas_team" type="text">
    <br>
    Súperov team: 
        <input name="super_team" type="text">
    <br>
    Body nášho teamu: 
        <input name="nas_team_body" type="text">
    <br>
    Body súperovho teamu: 
        <input name="super_team_body" type="text">
    <br>
    Liga: 
        <input name="liga" type="text">
    <br>
    <!--Dátum: <br>        zistiť ako pridať aktuálny čas
        <input name="datum" type="text">
    -->
    Dátum: 
        <input name="datum" type="text">
    
        <input class="submit" type="submit" name="ok" value="Odoslať" >
    </form>
    
</body>
</html>


<?
$hra = $_POST['hra'];
$nas_team = $_POST['nas_team'];
$super_team = $_POST['super_team'];
$nas_team_body = $_POST['nas_team_body'];
$super_team_body = $_POST['super_team_body'];
$liga = $_POST['liga'];
$datum = $_POST['datum'];

$odoslat = mysql_query(" INSERT INTO zapasy (hra, nas_team , super_team, nas_team_body , super_team_body , liga , datum ) VALUES( '". $hra ."' , '". $nas_team ."' , '". $super_team ."' , '". $nas_team_body ."' , '". $super_team_body ."' , '". $liga ."' , '". $datum ."' ,  ) ");

if( !$odoslat ) { echo mysql_errno() . " - " . mysql_error(); }
else {
    echo "Bol pridaný nový zápas teamu ".$nas_team." , v hre ".$hra." , proti teamu ".$super_team." , v lige ".$liga." , 
  kde s nase body sú: ".$nas_team_body." a súperove body sú: ".$super_team_body." "; 
}

require_once THEMES."templates/footer.php";
?>
Zechy
Profil
$odoslat = mysql_query(" INSERT INTO zapasy (hra, nas_team , super_team, nas_team_body , super_team_body , liga , datum ) VALUES( '". $hra ."' , '". $nas_team ."' , '". $super_team ."' , '". $nas_team_body ."' , '". $super_team_body ."' , '". $liga ."' , '". $datum ."' ,  ) ");

Hádám, že ta čárka tam být nemá - SQL očekává, že tam bude ještě nějáká hodnota, místo toho najednou dostane závorku -> Příčina chyby.
Yuff.3
Profil
Zechy:
Áno, tam bol pes zakopaný. Ďakujem veľmi pekne - všetko už funguje presne ako má.

// Zisťujem, že nie celkom tak presne...
Php-Fusion mi vypisuje chybovú hlášku - vikita/novy-zapas.php
Use of undefined constant fusionU5IW6_zapasy - assumed 'fusionU5IW6_zapasy' Riadok: 63

vikita/novy-zapas.php
Undefined index: super_team_body Riadok: 59

čo by sa ale teoreticky dalo ignorovať - vidí to len administrátor v tomto systéme php-fusion.

Čo ale neviem vyriešiť je takáto záležitosť. Akokoľvek otvorím tú stránku kde mám daný kód - vždy mi do DB odošle údaje. Aj keď nevyplním nič, odošle prázdne riadky do tabuľky v databáze.
Potreboval by som to ošetriť podmienkou, ktorú neviem zapísať. Mala by znieť asi nejak tak, že ak niečo, hocičo z tých inputov (či valuesov) nebude vyplnené alebo teda bude prázdne, tak v kóde nepokračuje - a teda neodošle do DB nič.

// Vyriešené - pomohol som si týmto: http://pabi3.com/blog/php-formular-a-email/
mimochodec
Profil
Yuff.3:
Podmínky používat umíš, viz ř. 65 v kódu. Když chceš testovat, jestli byl formulář vyplněn a odeslán, použij toto
if (isset($_POST['hra'])) {
..
aha, ok, příště budu číst i poslední řádek. Nicméně: v tom článku je použito toto:

<input name="email" type="text" size="32" />

..
if ($meno && $email && $predmet && $text){
Neboli používá se ta technika, kdy se místo $_POST['hra'] pracuje s proměnnou $hra. To je poněkud nepěkné a nelze to doporučit. Používej pole $_POST.
Yuff.3
Profil
mimochodec:
Ďakujem pekne, vážim si tvojej pomoci.

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:

0