Jump to content
php.lv forumi

mysql: nolasīt var / ierakstīt nesanāk


born

Recommended Posts


Tā, atkal jau es. Cerams, ka šoreiz nebūt pareizrakstības kļūdas :D Bet ja godīgi , šodien sāku apgūt mysql kā tādu, so man piedodami. Izveidoju db, no kura nolasa infu un iespeja ari labot.

Lūk pie labošanas arī notiek lielie prieki, ka dažreiz izlabo dažreiz nē. Citreiz paņem tikai pirmo simbolu, pēc refreša parāda visu stringu, tad atkal nē...

Rakstīju vadoties pēc netā pieejamiem paraugiem, so droši vien ka kods līks, bet nu enivei. Par tiem mysql_free_result($results); saliktajiem neesmu pārliecināts, vai viņiem tur jābūt vai nē :)

 

 

<a href="?do=print〈=text_lv&page=1">PRINT LV</a>
<a href="?do=print〈=text_ru&page=1">PRINT RU</a>
<a href="?do=edit〈=text_lv&page=1">EDIT LV</a>
<a href="?do=edit〈=text_ru&page=1">EDIT RU</a>

<?php
require($_SERVER["DOCUMENT_ROOT"]."/blabla/config/db_config.php");
$connection = @mysql_connect($db_host, $db_user, $db_password) or die ("error connect");
mysql_select_db($db_name, $connection);


switch ($_GET['do']) {

case "edit":
echo '<form action="admin.php?do=save〈='.$_GET[lang].'&page='.$_GET

.'" method="POST" >';
echo '<textarea name="text" rows="20" cols="50">';

$query = "SELECT $_GET[lang] FROM saturs WHERE page = $_GET

";
$results=mysql_query($query, $connection);
$text = mysql_fetch_array($results);
mysql_free_result($results);
echo $text[0];
echo '</textarea><br />';
echo '<input type="submit" value="submit" /></form> ';
break;

case "print":
echo '<div>';

$query= "SELECT $_GET[lang] FROM saturs WHERE page = $_GET

";
$results=mysql_query($query, $connection);
$text = mysql_fetch_array($results);
mysql_free_result($results);
echo $text[0];
echo '</div>';
break;

case "save":

$query= "UPDATE saturs SET $_GET[lang] = $_POST[text] WHERE page = $_GET

";
$write=mysql_query($query, $connection);
echo '<div>';
$query= "SELECT text_lv FROM saturs WHERE page = 1";
$results=mysql_query($query, $connection);
mysql_free_result($results);
echo $text[0];
echo '</div>';
break;

default:
echo '<div>';
$query= "SELECT text_lv FROM saturs WHERE page = 1";
$results=mysql_query($query, $connection);

$text = mysql_fetch_array($results);
mysql_free_result($results);
echo $text[0];

echo '</div>';
break;
}
?>

 

Ceram ska var iebraukt problērmā.

Edited by born
Link to comment
Share on other sites


Šī

UPDATE saturs SET $_GET[lang] = $_POST[text] WHERE page = $_GET


vietā raksti

UPDATE `saturs` SET `$_GET[lang]` = '$_POST[text]' WHERE `page` = '$_GET

'

 

Citus kverijus arī līdzīgi izlabo. Tur, kur apdeito int (integer - vesels skaitlis) lauku, obligāti pēdiņās nav vajadzīgas.

 

Tāpat arī visām vērtībām, ko liec datubāzē, vispirms uzrīdi http://lv.php.net/mysql_real_escape_string fju. Paskaties tur best practise piemēru.

Edited by andrisp
Link to comment
Share on other sites

Principā man strādā tikai palabojot UPDATE qveriju, bet kad parējos laboju, vis saiet grīztē. Varbūt ātri izstāstīsi ideju vai iemetīsi linku, kur saprotamā un uzskatāmā veidā tas demostrēts?

 

PLUS - ierakstus tabula vaicu 2 valodās - LV & RU, table kolonam uzliku utf8 kodejumu. Un vieta pec UPDATE , kad jauzrada jauna infa - man izmet ārā kaut kādu kjebutu pirmajā momentā (ja es rakstu ar lv vai krievu burtiem)

Edited by born
Link to comment
Share on other sites

born: Visi tekstuālie/datuma stringi jābūt iekļauti pēdiņās. Tb tie, kuri nāk no php, ieliekot update teikumā, vai select teikumam where daļā.

Tb:

UDPATE tabule SET xx = "asdasd z zx " WHERE page = "blaa lbaa"

un SELECT * FROM tabule WHERE xx = "azz xcasd "

 

Paskaties pats, kas notiks, ja noņemsi pēdiņas - MySQL taču nezinās kura atstarpe pieder datiem, un kura SQL teikumam.

UDPATE tabule SET xx = asdasd z zx WHERE page = blaa lbaa

Varbūt tu xx laukā gribi ielikt tekstu "asdasd z zx WHERE page = blaa lbaa". Tāpēc arī vajag pēdiņas! Tieši tāpat kā php:

$xx = "asdasd z zx";

 

andrisp: `saturs` un `page` ačgārnās pēdas gan nevajadzēja viņam rādīt. Tikai galvu sajauks. Nav tās nevienam vajadzīgas.

Link to comment
Share on other sites

×
×
  • Create New...