[ timberman @ 02.07.2013. 14:43 ] @
Hteo bih da izmenim postojeću formu za brisanje postova al mi ne polazi za rukom. Sadašnja forma dobro radi al bih hteo da izmenim jer post koji hoću da obrišem se bira iz select liste. Evo dela koda koji bih da izmenim:
Code:
<h4>Izaberi post koji se briše</h4>
        <form action="delete.php" method="get">
            <select onchange="this.form.submit();" name="id">
               <?php foreach ($articles as $article) {?>
               <option value="<?php echo $article['article_id'];?>"><?php echo $article['article_title'];?></option>
               <?php } ?>
            </select>
            
        </form>


Ja bih sad htio da postove ne biram iz selecta nego da mi budu poređani u tabelu i da pored imam ikonicu za brisanje. Ja sam probao ovako da to uradim:
Code:
<h4>Izaberi post koji se briše</h4>
        <form action="delete.php" method="get">
        <tr name="id">
            <?php foreach ($articles as $article) {?>
            <td><input type="hidden" value="<?php echo $article['article_id'];?>"/><?php echo $article['article_title'];?></td>
            <td><a href="delete.php"><img src="delete.png"/></a></td>
         </tr><br/>
            <?php } ?> 
        </form>

Negde pravim grešku, jer il neće uopšte da briše post il obriše samo poslednji bez obzira na koji ja kliknuo...
Ima li neko ideju gde grešim...
[ ivan.a @ 02.07.2013. 15:07 ] @
Nigde nisi označio koji post brišeš, pa ti se verovatno zbog toga briše poslednji. HTML ti nije dobar...tr tag se otvara van petlje, a zatvara u petlji.

Code:
<form action="delete.php" method="get">

            <?php foreach ($articles as $article) {?>
        <tr name="id">
            <td><?php echo $article['article_title'];?></td>
            <td><a href="delete.php?id=<?php echo $article['article_id'];?>"><img src="delete.png"/></a></td>
         </tr>
            <?php } ?> 

</form>


I u delete.php brišeš post sa određenim ID -> $_GET["id"]
[ timberman @ 02.07.2013. 16:46 ] @
Hvala Ivane. Biću slobodan pa ću te pitati još nešto oko čeka se petljam da ne postavljam novu temu...
Pored ove forme za brisanje oko koje si mi pomogao, htio bih da napravim i edit.php formu za editovanje postojećih postova. Pokušao sam da iskombinujem add.php i delete.php al ne ide. Znači ona kao i ova oko koje si mi pomogao izlista postove i kad kliknem na edit ucitava mi formu istu kao i ovu na add.php i preko id u naslov ucitam naslov a u sadrzaj sadrzaj. Toliko sam se zapetljao da je bolje da ne postavljam sta sam uradio. Postavicu add.php i delete.php koji rade pa ako može mala pomoć oko izrade edit.php
delete.php
Code:
<?php
session_start();
$article = new Article;

if(isset($_SESSION['logged_in'])){
    if(isset($_GET['id'])){
       $id = $_GET['id'];
       $query = $pdo->prepare('DELETE FROM articles WHERE article_id = ?');
       $query->bindValue(1, $id);
       $query->execute();
       header('Location: delete.php');
       
    }
    $articles = $article->fetch_all();
    
    ?>
    
    <html>
    <head>
    <title></title>
    </head>
<body>
    <div class="container">
        <a href="index.php" id="logo">Admin</a>
        <br/>
        <h4>Select an article to delete</h4>
        <form action="delete.php" method="get">

            <?php foreach ($articles as $article) {?>
        <tr name="id">
            <td><?php echo $article['article_title'];?></td>
            <td><a href="delete.php?id=<?php echo $article['article_id'];?>"><img src="delete.png"/></a></td>
         </tr><br/>
            <?php } ?> 

</form>
        
    </div>
</body>
</html>
    
    <?php
}else {
    header('Location: index.php');
}
?>

add.php
Code:
<?php
session_start();
if(isset($_SESSION['logged_in'])){
    if(isset($_POST['title'], $_POST['content'])){
       $title = $_POST['title'];
       $content = nl2br($_POST['content']);
       
       if(empty($title) or empty($content)){
            $error = 'All fields are required!';
       } else {
         $query = $pdo->prepare('INSERT INTO articles (article_title, article_content, article_timestamp) VALUES (?,?,?)');
         $query->bindValue(1, $title);
         $query->bindValue(2, $content);
         $query->bindValue(3, time());
         $query->execute();
         header('Location: index.php');
       }
    }
    ?>
    <html>
    <head>
    <title>Admin</title>
    </head>
<body>
    <div class="container">
        <a href="index.php" id="logo">Admin</a>
        <br/>
        <h4>Dodaj post</h4>
        <?php if (isset($error)) { ?>
        <small style="color:#aa0000"><?php echo $error; ?></small>
        <br/><br/>
        <?php } ?>
        <form action="add.php" method="post" autocomplete="off">
        <input type="text" name="title" placeholder="Title"/><br/><br/>
        <textarea rows="15" cols="50" name="content" placeholder="Content"></textarea><br/><br/>
        <input type="submit" value="Dodaj post"/>   
        </form>
    </div>
</body>
</html>
    <?php
} else {
    header('Location: index.php');
}

?>
[ ivan.a @ 03.07.2013. 12:51 ] @
Možeš sve uraditi u okviru jednog fajla, a upite izvršavati u odnosu na zahteve koji su prosleđeni. Mislim na to da ne moraš za svaki kreirati novi fajl (add, edit, delete itd).

Npr:
post_edit.php

Code:
<?php 

//BRISANJE
if ( isset($_GET["delete"]) AND is_numeric($_GET["delete"]) ) {
  $id = (int) $_GET["delete"];
  //KOD ZA BRISANJE POSTA -> $id
}

//DODAVANJE/UREĐIVANJE
if ( isset($_GET["add"]) ) {
   
  //EDITOVANJE
   if ( isset($_GET["edit"]) AND is_numeric($_GET["edit"]) ) {
   $id = (int) $_POST["id"];
   //KOD ZA SELECT WHERE article_id = $id
   $article_id = $row["article_id"];
   $article_title= $row["article_title"];
   $article_text= $row["article_text"]; // ili kako vec ide naziv tog polja...
   } else {
     $article_id = ""; 
     $article_title = "";
   }
   ?>
   <h2>Dodaj novi post</h2>
  <form action="" method="post">
   <table>
      <tr>
        <td>Post name: </td>
        <td><input type="text" value="<?= $article_title?>" name="article_title" /></td>
      </tr>
      <tr>
        <td>Text: </td>
        <td><textarea name="article_text"><?=$article_text?></textarea></td>
      </tr>
      <tr>
        <td></td>
        <td><input type="submit" value="Dodaj/Izmeni" name="post_add"  /></td>
      </tr>
   </table> 
   </form>
   <?php
}
?>


To ti je neka osnovna forma za unos/editovanje postova. Naravno, potrebno je da je izmeniš tako da polja i nazivi polja budu odgovarajući. Bitno je da shvatiš suštinu.

Potrebno je još da dodaš kod za dodavanje tj. editovanje postova (na samom početku ovog fajla):

Code:
if ( isset($_POST["post_add"]) AND isset($_POST["article_title"]) AND isset($_POST["article_text"])) {
   $article_title= $_POST["article_title"];
   $article_text= $_POST["article_text"];

  //Dodavanje ili editovanje posta
  
  //dodavanje:
  if ( !isset($_GET["edit"]) ) {
   //OVDE IDE INSERT 
  } else {
   $id = (int) $_GET["edit"]; 
   //OVDE IDE UPDATE GDE JE POST ID -> $id
  }
}


I tako za delete isto...
[ timberman @ 03.07.2013. 14:31 ] @
Hvala, nemoj se čuditi mojim pitanjima jer sam počernik...video sam da može da se to odradi u jednom fajlu al sam izbegavao jer nisam znao kako da onda pozovem ili dam privilegije
npr u kodu oko kog si mi pomogao pozivao sam jednostavno sa delete.php
Code:
<form action="delete.php" method="get">
.
.
.
<td><a href="delete.php?id=<?php echo $article['article_id'];?>"><img src="delete.png"/></a></td>


Ne znam kako bih to uradio da su mi npr u istom fajlu bili i kod za delete i edit i....
[ ivan.a @ 03.07.2013. 15:17 ] @
Jednostavnom proverom.

Ako je u pitanju editovanje, koristiš $_GET["edit"]:

if ( isset($_GET["edit"]) AND is_numeric($_GET["edit"]) ) {
//FORMA ZA EDITOVANJE POST-a GDE JE id = $_GET["id"]
}

if ( isset($_GET["add"]) ) {
//FORMA ZA DODAVANJE POSTA
}

if ( isset($_GET["delete"]) AND is_numeric($_GET["delete"]) ) {
//FORMA ZA BRISANJE POST-a GDE JE id = $_GET["delete"]
}

Slanje zahteva $_POST metoda:
U formi imaš:
<input type="text" name="article_title" value="" />

Kada se pošalje zahtev:
if ( isset($_POST["article_title"]) ) {
$article_title = $_POST["article_title"]; // <--- NASLOV
}
[ timberman @ 03.07.2013. 19:30 ] @
Napravio sam kao neku formu (za sad u posebnom fajlu) za edit. uspeva mi da izaberem post al nikako da mi u formu ucita naslov i sadrzaj. Sigurno nisam dobro odradio deo
Code:
"select * from addd where id='$id'"
al ne znam gde...
Evo to što sam do sad napisao
edit.php
Code:
<?php
session_start();
include_once('../includes/conection.php');
include_once('../includes/article.php');
$article = new Article;

if(isset($_SESSION['logged_in'])){
    if(isset($_GET['id'])){
       $id = $_GET['id'];
       if(isset($_POST['title'], $_POST['content'])){
       $title = $_POST['title'];
       $content = $_POST['content'];
       $query = $pdo->prepare("UPDATE articles set artice_title='$title', article_content='$content' where article_id='$id'");
       $query->execute();{
       header('Location: edit.php');
       }
       }
       $query1 = $pdo->prepare("select * from addd where id='$id'");
       $query1->execute(array($_GET['id']));
       $rows = $query1->fetch();
    ?>
    <html>
    <head>
    <title>CMS</title>
    <link href="../assets/style.css" rel="stylesheet"/>
    </head>
<body>
    <div class="container">
        <a href="index.php" id="logo">CMS</a>
        <br/>
        <h4>Edit Article</h4>
        <form action="" method="post" autocomplete="off">
        <input type="text" name="title" value="<?php echo $rows['article_title']; ?>"/><br/><br/>
        <textarea rows="15" cols="50" name="content"><?php echo $rows['article_content']; ?></textarea><br/><br/>
        <input type="submit" value="Edit Article"/>   
        </form>
    </div>
</body>
</html>
    <?php
}$articles = $article->fetch_all();
    
    ?>
    
    <html>
    <head>
    <title></title>
    </head>
<body>
    <div class="container">
        <a href="index.php" id="logo">CMS</a>
        <br/>
        <h4>Select an article to edit</h4>
        <form action="" method="get">

            <?php foreach ($articles as $article) {?>
        <tr name="id">
            <td><?php echo $article['article_title'];?></td>
            <td><a href="edit.php?id=<?php echo $article['article_id'];?>"><img src="edit.png"/></a></td>
         </tr>
            <?php } ?> 

</form>
        
    </div>
</body>
</html>
    
    <?php
}else {
    header('Location: index.php');
}
?>
[ ivan.a @ 03.07.2013. 19:46 ] @
Čemu ovo

$query1->execute(array($_GET['id']));

Stavi:
Code:
$result = $query1->execute();
$rows = $sth->fetch(PDO::FETCH_ASSOC);


Takodje, redirekcija ti nije dobra jer nemaš id od post-a

Code:
header('Location: edit.php?id='. $id );
exit;
[ timberman @ 03.07.2013. 20:03 ] @
To sam vidio i promenio ($query1 umesto $sth), al kad stavim i ovo ponovo mi ne ucitava naslov i sadrzaj u formu...

[Ovu poruku je menjao timberman dana 03.07.2013. u 21:40 GMT+1]
[ Tpojka @ 03.07.2013. 20:18 ] @
Pretpostavljam da je typo
Citat:
ivan.a:
Stavi:
Code:

$result = $query1->execute();
$rows  = $query1->fetch(PDO::FETCH_ASSOC);


Pregledaj primjere, uporedi. Igraj se malo sa kodom - mijenjaj...