logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

PHP Lekcije - lekcija 3.3 - Rad sa MySQL bazom podataka. Ažuriranje podataka UPDATE.

26/05/2025, by Ivan

Već smo se upoznali sa MySQL operatorima kao što su SELECT, INSERT INTO, sada je vreme da naučimo kako da ažuriramo već unete podatke u bazu. Za to ćemo koristiti SQL operator UPDATE. Ali prvo, hajde da izmenimo naš fajl index.php i dodamo obradu još jednog puta. Pronađite sledeći kod:

      if( $_GET['admin'] == 1 ){ // ako postoji u URL promenljiva admin
	    print $obj->display_admin(); // ako postoji promenljiva, prikazujemo formu
	  }else{
	    print $obj->display_public(); // ako nema promenljive, prikazujemo poruke
	  }

Zamenite ga sledećim kodom:

	  switch ($_GET['admin']){
	    case 'add':
		  print $obj->display_admin(); // ako je promenljiva jednaka 'add', prikazujemo formu za dodavanje
		break;
		case 'update':
		  print $obj->display_update();  // ako je promenljiva jednaka 'update', prikazujemo formu za izmenu
		break;
		default:
		  print $obj->display_public(); // ako nema promenljive, prikazujemo poruke
	  }

Zamenio sam uslovni if sa switch operatorom koji omogućava višestruke izbore vrednosti promenljive $_GET['admin']. Kasnije ćemo dodati i delete. Takođe sam zamenio '1' sa 'add' i dodao izbor 'update'. Pošto sam promenio '1' u 'add', treba izmeniti i prikaz linkova u fajlu simpleCMS.php:

$content .= '<p><a href="/index.php?admin=1">Dodaj poruku</a></p>';

Zamenite sa:

$content .= '<p><a href="/index.php?admin=add">Dodaj poruku</a></p>';

Takođe, treba dodati novi metod display_update(), koji ćemo pozivati kad u GET zahtevu postoji admin=update. Dodajte metod display_update():

  public function display_update(){
    
  }  

Napravili smo obradu puta koja poziva naš novi metod display_update(). Sada treba dodati linkove ka stranici za izmenu i implementirati sam metod display_update().

Prvo razmislimo kako ćemo implementirati ažuriranje zapisa. Potreban nam je SQL upit sa uslovom WHERE da preciziramo koju tačno poruku ažuriramo, što je moguće ako znamo id zapisa, tj. kolonu mid. Zato treba da prosledimo vrednost mid prilikom poziva display_update(). Kako? Možemo u GET zahtevu poslati zajedno sa admin=update, na primer:

http://test/index.php?admin=update&mid=3

Ili možemo napraviti parametar metode display_update(), na primer:

  public function display_update($mid){
    
  } 

I pozvati metod ovako:

	  switch ($_GET['admin']){
	    case 'add':
		  print $obj->display_admin();
		break;
		case 'update':
                  $mid = 1; // ili ovde može $_GET['mid']
		  print $obj->display_update($mid);
		break;
		default:
		  print $obj->display_public();
	  }

Ipak, jednostavnije je koristiti prvi način sa GET parametrima, pa ćemo ga primeniti.

  public function display_update(){
    $message_id = $_GET['mid'];
  }  

Tako dobijamo mid iz GET zahteva, ali treba proveriti da li postoji.

  public function display_update(){
    $message_id = $_GET['mid']; // čuvamo mid u promenljivu
	if(!empty($message_id)){
	
	}else{
	  $content .=   '<p>Nema vrednosti mid!</p>';
	  $content .=	'<p><a href="/index.php">Vrati se na početnu</a></p>';
	}
	return $content;
  }  

Ako postoji admin=update ali nema mid, prikazaće se poruka i link na početnu.

http://test/index.php?admin=update

Sada treba izmeniti display_public() metod da prikaže linkove za izmenu:

  public function display_public() {
    $content = '';
	$sql = 'SELECT * FROM Messages ORDER BY mid DESC';
	$result = mysql_query($sql) or die(mysql_error());
	while($row = mysql_fetch_array($result)){
	  $content .= '<div class="post">';
	  $content .= '<span class="time">#' . $row['mid'] . ' od ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>';
	  $content .= '<p>' . $row['bodytext'] . '</p>';
	  $content .= '<p><a href="/index.php?admin=update&mid=' . $row['mid'] . '">Izmeni poruku</a>';
	  $content .= '</div>';
	}
	$content .= '<p><a href="/index.php?admin=add">Dodaj poruku</a></p>';
    return $content;
  }

Sada će ispod svake poruke biti link za njenu izmenu. Forma za izmenu će se prikazivati preko metode display_update(). Napišimo sada njen kod. Forma će biti slična formi za dodavanje, samo što će već sadržati postojeće vrednosti i imati skriveno polje za mid:

  public function display_update(){
    $message_id = $_GET['mid'];
	if(!empty($message_id)){
	  $result = mysql_query('SELECT * FROM Messages WHERE mid='.$message_id);
	  $message = mysql_fetch_object($result);
	  $content = '';
	  $content .= '<form action="/index.php?admin=update" method="post">';
	  $content .= '<label for="title">Ime:</label><br />';
	  $content .= '<input name="title" id="title" type="text" maxlength="150" value="' . htmlspecialchars($message->title, ENT_QUOTES) . '" />';
	  $content .= '<div class="clear"></div>';
	  $content .= '<input name="mid" id="mid" type="hidden" value="'.$message->mid.'" />';
	  $content .= '<label for="bodytext">Poruka:</label><br />';
	  $content .= '<textarea name="bodytext" id="bodytext">'. htmlspecialchars($message->bodytext, ENT_QUOTES) .'</textarea>';
	  $content .= '<div class="clear"></div>';
	  $content .= '<input type="submit" value="Sačuvaj" />';
	  $content .= '</form>';
	  $content .= '<p><a href="/index.php">Vrati se na početnu</a></p>';
	}else{
	  if (!empty($_POST)) {
	    print_r($_POST);
		$content .= '<p><a href="/index.php">Vrati se na početnu</a></p>';
	  }else{
	    $content .= '<p>Nema vrednosti mid!</p>';
	    $content .= '<p><a href="/index.php">Vrati se na početnu</a></p>';
	  }
	}
	return $content;
  } 

U komentarima su objašnjene izmene u formi. Sada da se pozabavimo obradom POST niza koji stiže nakon slanja forme za ažuriranje.

Array(
    [title] => primer
    [mid] => 1
    [bodytext] => tekst poruke
)

Moj primer izgleda ovako. Ako pogledate upit za dodavanje, polja su ista, osim mid. Napišimo sada obradu POST niza sa UPDATE upitom:

  public function display_update(){
    $message_id = $_GET['mid'];
	if(!empty($message_id)){
	  $result = mysql_query('SELECT * FROM Messages WHERE mid='.$message_id);
	  $message = mysql_fetch_object($result);
	  $content = '';
	  $content .= '<form action="/index.php?admin=update" method="post">';
	  $content .= '<label for="title">Ime:</label><br />';
	  $content .= '<input name="title" id="title" type="text" maxlength="150" value="' . htmlspecialchars($message->title, ENT_QUOTES) . '" />';
	  $content .= '<div class="clear"></div>';
	  $content .= '<input name="mid" id="mid" type="hidden" value="'.$message->mid.'" />';
	  $content .= '<label for="bodytext">Poruka:</label><br />';
	  $content .= '<textarea name="bodytext" id="bodytext">'. htmlspecialchars($message->bodytext, ENT_QUOTES) .'</textarea>';
	  $content .= '<div class="clear"></div>';
	  $content .= '<input type="submit" value="Sačuvaj" />';
	  $content .= '</form>';
	  $content .= '<p><a href="/index.php">Vrati se na početnu</a></p>';
	}else{
	  if (!empty($_POST)) {
		mysql_query('UPDATE Messages SET title="'.mysql_real_escape_string($_POST["title"]).'", bodytext="'.mysql_real_escape_string($_POST["bodytext"]).'" WHERE mid='.$_POST["mid"]);
		$content .= '<p>Poruka je izmenjena!';
		$content .= '<p><a href="/index.php#mid-'.$_POST['mid'].'">Idi na zapis</a></p>';
	  }else{
	    $content .= '<p>Nema vrednosti mid!</p>';
	    $content .= '<p><a href="/index.php">Vrati se na početnu</a></p>';
	  }
	}
	return $content;
  }  

Evo celog koda metode display_update(). Hajde da ukratko pogledamo od čega se sastoji UPDATE upit:

Prvo ide operator UPDATE, zatim ime tabele. Posle toga ide operator SET, gde navodimo polja koja menjamo i njihove nove vrednosti, a zatim uslov WHERE kojim preciziramo koje zapise treba ažurirati (gde je mid jednako određenoj vrednosti). Ovo će biti osnov za dalje učenje SQL operatora; ovaj čas je namenjen pre svega početnicima u PHP i MySQL-u.