Jump to content
php.lv forumi

Probleema ar id nodosanu


<?php_kods_?>

Recommended Posts

Esmu jauninais ieks PHP un gribeeju uzzinaat kaa efektiivaak nodot no formas ID? Nu piemeeram pievienojot rakstu. Ja es veelaak gribu to rakstu labot es ar UPDATE paliidziibu to rakstu varu izlabot bet kaa piedabuut php zinaat to ka tiesi to rakstu es gribu labot bet nevis citu. Tad mans jautaajums kaa lai to id nolasa no DB lai vareetu konkreeto rakstu veelaak izlabot.

Link to comment
Share on other sites

Eksistē tāds jēdziens datubāzēs kā primārā atslēga (primary key). Piemēram:

Datubāzes tabulā raksti mēs rakstām:

Laiku, kad tika pielikts raksts - laiks

Raksta virsrakstu - virsraksts

Paša raksta saturu - saturs

Ja mēs uztaisām tabulu tikai ar šādiem tris laukiem, tad rodās problēma, kā atšķirt dažādus rakstus (jeb kā atrast konkrētu rakstu datubāzē)...

Tādēļ parasti mēdz pievienot vēlvienu lauku, nosauksim to par ID, kurš viennozīmigi identificē rakstu. Parasti tas ir vesels skaitlis, kurš automātiski palielinās (autoincrement) katram nākošajam rakstam.

Lūk pēc šī ID visvienkāršāk ir atsaukties uz konkrētu rakstu.

Tātad formai, kura labo rakstus, varētu padot konkrētā raksta ID vērtibu (šajā piemērā pieņemsim, ka tas ID ir 12):

<form method="post" action="labo.php">
<input type="hidden" name="raksta_id" value="12">
<input type="text" name="virsraksts">
<textarea name="saturs"></textarea>

un labo.php fragments būtu šāds (obligāti vispirms uztaisi ievaddatu pārbaudi, kas piemērā navizdarits!!!):

$vaicajums = <<<BEIGAS
UPDATE raksti SET virsraksts='{$_POST['virsraksts']}', saturs='{$_POST['saturs']}' WHERE ID={$_POST['raksta_id']}
BEIGAS;
$rezultats = mysql_query($vaicajums); //Ja mysql izmanto, protams

 

Kaut kā šādi. Bet iesaku palasīt kautko parSQL un datubāzēm, citādi tālu netiksi (-;

Link to comment
Share on other sites

katram rakstam tak id nebuus 12. Ka to ID dabuut aaraa no db?

Pienemsim, ka tev ir lapa, kas izdrukā sarakstu ar visiem rakstiem:

<?php
...
$vaicajums = 'SELECT * from raksti ORDER BY laiks';
$rezultats = mysql_query($vaicajums);
while($rinda=mysql_fetch_assoc($rezultats)){
echo <<<BEIGAS
<div><a href="laboshanas_lapa.php?raksta_id={$rinda['ID']}">$nosaukums</a></div>

BEIGAS;
}
...
?>

Un pieņemot, ka lapa, kurā atradās tā labošanas forma saucās labosanas_lapa.php :

<form method="post" action="labo.php">
<input type="hidden" name="raksta_id" value="<?php echo $_GET['raksta_id']; ?>">
<input type="text" name="virsraksts">
<textarea name="saturs"></textarea>

Link to comment
Share on other sites

<?php
$host="localhost";
$user="root";
$db="datub";
$con=mysql_connect("$host","$user");
$select=mysql_select_db("$db",$con);
$result = mysql_query('SELECT * FROM raksts ORDER BY id DESC') or ("šeit ir probleema");
while($rinda=mysql_fetch_assoc($result)){
echo <<<BEIGAS
<div><a href="labo.php?id={$rinda['ID']}">virsraksts te</a></div>


BEIGAS;
}
?>

 

 

Kaapeec sitais kods nestraadaa? paraada

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp\www\tests\index.php on line 16
Link to comment
Share on other sites

Varbūt tādēļ, ka nav datubāzē tāda tabula raksts, vai arī tabulā raksts nav tādas kolonnas id...

šai rindai:

$result = mysql_query('SELECT * FROM raksts ORDER BY id DESC') or ("šeit ir probleema");

jābūt šādai:

$result = mysql_query('SELECT * FROM raksts ORDER BY id DESC') or die("šeit ir probleema" .  mysql_error());

Link to comment
Share on other sites

×
×
  • Create New...