Autor Zpráva
Trickle
Profil
Zdravím
Mám problém. Mám kod pro vytvoření a zároveň pro editaci kontaktů. Vytvoření záznamu není problém to jde, ale problém je v editaci nechce mi fungovat. A nedokážu najít chybu. Byl by někdo ochoten mi pomoci?
Přidávám kod:

<?
 include ("config.db.php");
 
//Pristupy do DB   
$Firma_Info=Array();
if  ( (isset($Firma_ID)) && (!empty($Firma_ID)) ){
    $SQLText="SELECT * FROM TKontakty_Firmy WHERE Firma_ID=$Firma_ID";
    $RS=mysql_query($SQLText,$Conn);
    if (mysql_num_rows($RS)<=0){
        mysql_close($Conn);
        die ("Záznam neexistuje");
    }

    $Firma_Info=mysql_fetch_array($RS);
}
else
    $Firma_ID=0;
mysql_close($Conn);

echo "<!doctype html public \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
echo "<html>\n";
echo "<head>\n";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1250\">\n";
echo "<title>Kontakty založit/upravit firmu</title>\n";
echo "<link rel=\"STYLESHEET\" href=\"base.css\" type=\"text/css\">\n";
echo "</head>\n";
echo "<body topmargin=5 leftmargin=5 marginheight=5 marginwidth=5>\n";
echo "<table cellpadding=0 cellspacing=0 border=0>\n";
echo "<tr>\n";
echo "<td WIDTH=125 valign=top>\n";
echo "<img src=\"1px.gif\" width=125 height=1 vspace=2><br>\n";
echo "<a href=\"search_person.php\">Hledat osobu</a><br>\n";
echo "<a href=\"search_company.php\">Hledat firmu</a><br>\n";
echo "<br>\n";
echo "<a href=\"edit_person.php\">Přidat osobu</a><br>\n";
echo "<a href=\"edit_company.php\">Přidat firmu</a><br>\n";
echo "</td>\n";
echo "<td valign=top width=7><img src=\"1px.gif\" width=7 height=1></td>\n";
echo "<td WIDTH=\"100%\" valign=top>\n";
echo "<img src=\"1px.gif\" width=1 height=5><br>\n";
echo "<table cellpadding=3 cellspacing=0 border=0>\n";
echo "<tr><td CLASS=SectionTitle colspan=2>Přidání/úprava firmy</td></tr>\n";
echo "<tr>\n";
echo "<FORM ACTION=\"save_company.php?Firma_ID=\"".$Firma_ID."\" METHOD=\"post\" NAME=myform>\n";
echo "<TR>\n";
echo "<TD>Název:</TD>\n";
echo "<TD><INPUT TYPE=text NAME=\"Nazev\" value=\"".$Firma_Info["Nazev"]."\"></TD>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<TD>Ulice:</TD>\n";
echo "<TD><INPUT TYPE=\"\"text\"\" NAME=\"Ulice\" value=\"".$Firma_Info["Ulice"]."\"></TD>\n";
echo "</TR>\n";
echo "<tr>\n";
echo "<TD >Město:</TD>\n";
echo "<TD><INPUT TYPE=text NAME=\"Mesto\" value=\"".$Firma_Info["Mesto"]."\"></TD>\n";
echo "</TR>\n";
echo "<tr>\n";
echo "<TD>PSČ:</TD>\n";
echo "<TD><INPUT TYPE=text NAME=\"PSC\" value=\"".$Firma_Info["PSC"]."\"></TD>\n";
echo "</TR>\n";
echo "<tr>\n";
echo "<TD>Telefon:</TD>\n";
echo "<TD><INPUT TYPE=text NAME=\"Telefon\" value=\"".$Firma_Info["Telefon"]."\"></TD>\n";
echo "</TR>\n";
echo "<tr>\n";
echo "<TD>FAX:</TD>\n";
echo "<TD><INPUT TYPE=text NAME=\"Fax\" value=\"".$Firma_Info["Fax"]."\"></TD>\n";
echo "</TR>\n";
echo "<tr>\n";
echo "<TD>Komentář:</TD>\n";
echo "<TD><TEXTAREA ROWS=\"5\" NAME=\"Komentar\" COLS=\"40\" >\"".$Firma_Info["Komentar"]."\"</TEXTAREA></TD>\n";
echo "</TR>\n";
echo "<tr>\n"; 
echo "<TD colspan=\"2\" align=\"right\">\n";
echo "<input type=hidden name=Firma_ID value=$Firma_ID>\n";
echo "<input type=button class=button value=Ok onClick=\"SendForm()\">\n";
echo "<input type=reset class=button value=\"Původní\">\n";
echo "</td>\n";
echo "</tr>\n";                            
echo "</FORM>\n";
echo "</table>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<script type=\"text/javascript\" language=\"JavaScript\">\n";
echo "<!--\n";
echo "function SendForm(){\n";
echo "    var df = document.myform;\n";
echo "    if (df.Nazev.value.length==0){\n";
echo "        alert(\"Není vyplněn název firmy!\");\n";
echo "        df.Nazev.focus();\n";
echo "        return;\n";
echo "    }\n";
echo "    df.submit();\n";
echo "}\n";
echo "// -->\n";
echo "</script>\n"; 
echo "</body>\n";
echo "</html>\n";
?>

A ještě bych potřeboval pomoci vyřešit. Textareu(Komentář) mám tam kod.. ale vložil jsem to tam asi na prasáka a ukazuje mi to tam uvozovky. Jak by se to dalo správně zapsat?. V kodu je to zvýrazněno.
Děkuji
FUYO
Profil *
Trickle:
Nikde nevidím kód na přidávání nebo editaci kontaktu.

"A ještě bych potřeboval pomoci vyřešit. Textareu(Komentář) mám tam kod.. ale vložil jsem to tam asi na prasáka a ukazuje mi to tam uvozovky. Jak by se to dalo správně zapsat?. V kodu je to zvýrazněno."[i][/i]

".$Firma_Info["Komentar"]."
Trickle
Profil
FUYO:
Jasně pardon zapomněl jsem přidat ukládací kod.
Ten zní takto:
<?

 include ("config.db.php");
//Pristupy do DB
if (!isset($Firma_ID))
    die ("Neexistující firma");
  
if ($Firma_ID==0){
    $SQLText="INSERT INTO TKontakty_Firmy (Nazev,Ulice,Mesto,PSC,Telefon,Fax,Komentar) VALUES ('$Nazev','$Ulice','$Mesto','$PSC','$Telefon','$Fax','$Komentar')";
  mysql_query($SQLText,$Conn);
}
else {
    $SQLText="UPDATE TKontakty_Firmy SET ";
    $SQLText.="Nazev='$Nazev',";
    $SQLText.="Ulice='$Ulice',";
    $SQLText.="Mesto='$Mesto',";
    $SQLText.="PSC='$PSC',";
    $SQLText.="Telefon='$Telefon',";
    $SQLText.="Fax='$Fax',";
    $SQLText.="Komentar='$Komentar'," ;
    $SQLText.="WHERE Firma_ID=$Firma_ID";
  mysql_query($SQLText,$Conn);
}

mysql_close($Conn);
echo "<html><head><meta HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=edit_company.php\"></html>";
?>

V kodu jsou už opravené chyby na které jsem přišel a nebo na které jsem byl již upozorněn
Taps
Profil
Trickle:
co ti vypíše mysql_error?

<?
mysql_query($SQLText,$Conn) or die (mysql_error());
?>
Alphard
Profil
Přinejmenším v "Fax='$Fax' " chybí čárka a navíc se zřejmě spoléháte na register_globlas on a neescapujete vstupy.
Ale rada [#4] Taps k vypsání chyby je dobrá, jen příšerně provedená (to or die).
Trickle
Profil
Díky měl jsem chybu v ukončení 19. a 20. řádku. Nicméně pořád nechce editovat.
mysql_error píše že někde kolem WHERE Firma_ID =$Firma_ID je chyba v syntax
Keeehi
Profil
Trickle:
Za Komentář nemá být čárka ale mezera.
Trickle
Profil
Keeehi:
Díky moc. Funguje to. Njn zkušenosti se poznají .
smiesek
Profil
ráda bych se hloupě zeptala, když už to tu vidím, tak jaký je rozdíl, že autor má části kodu u proměnných bez teček, zatím co já bych to psala s tečkami?

autora
$SQLText.="Komentar='$Komentar'" ;

moje doměnka
$SQLText.="Komentar='.$Komentar.'" ;

Jak tedy poznám kdy a co je správně? :(
Fisir
Profil
Reaguji na smieska:
$Komentar = 'toto je komentář';
$SQLText = "Komentar='$Komentar'"; // => Komentar='toto je komentář'
$SQLText = "Komentar='".$Komentar."'"; // => Komentar='toto je komentář'
$SQLText = 'Komentar=\''.$Komentar.'\''; // => Komentar='toto je komentář'
$SQLText = 'Komentar=\'$Komentar\''; // => Komentar='$Komentar'

(Ta zpětná lomítka před apostrofy je escapování, aby se nebraly jako konec řetězce.)

Jak vidíš, tak při použití uvozovek nemusíš řetězec rozdělovat a spojovat jej, ale proměnnou můžeš vepsat přímo. Pokud ale text obalíš do apostrofů, rozdělit musíš vždy.

$SQLText.="Komentar='.$Komentar.'" ;
Z toho by ti vylezlo Komentar='.toto je komentář.', protože řetězec je uzavřený do uvozovek (a tam se mohou proměnné vepisovat přímo, jak popisuji výše).
smiesek
Profil
Fisir:
no moc tomu nerozumím - je to na mě až moc terminologie a slovíčkaření, tak si to budu muset nějak napsat na papír a vždy zkoušet pokus omyl dle poučky co jste mi napsal:(

proto že i u těch třeba insert bych dala tečky a tedy nevím podle čeho autor je nemusí používat

    $SQLText="INSERT INTO TKontakty_Firmy (Nazev,Ulice,Mesto,PSC,Telefon,Fax,Komentar) VALUES ('$Nazev','$Ulice','$Mesto','$PSC','$Telefon','$Fax','$Komentar')";


    $SQLText="INSERT INTO TKontakty_Firmy (Nazev,Ulice,Mesto,PSC,Telefon,Fax,Komentar) VALUES ('".$Nazev."','".$Ulice."',...')";
petr 6
Profil
smiesek: V [#9] je tvoje verze odlišná od tvojí verze v [#11] - srovnej uvozovky a apostrofy.
Taky si můžeš jednotlivé varianty vypsat na localhostu, ať vidíš, co to dělá.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0