Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Problema la UPDATE camp
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Subiectul anterior :: Subiectul următor  
Autor Mesaj
adicrst



Data înscrierii: 30/Iun/2007
Mesaje: 38

Trimis: Sâm Apr 26, 2008 6:40 am    Titlul subiectului: Problema la UPDATE camp  

Nu reusesc sa-i dau nicicum de cap. Totul merge bine doar partea cu UPDATE nu face nimic. In alte cuvinte nu inlocuieste valorile vechi cu cele noi

presupun ca se intelege din comentarii se face scriptul. Insereaza in tabel o stire care poate fi editata sau stearsa, in functie de ce buton se apasa.

Cod: <?php
include ("../connect.php");

//selectam titlu si continutul din tabelul cu stiri
$query_stiri = mysql_query('SELECT titlu,continut FROM stiri',$con);

//selectam titlul stirii care vrem sa o editam/stergem
echo '<form action="" method="post">
      <select name="titlustire">';
while($rezultat = mysql_fetch_array($query_stiri))
   {
      echo '<option value="'.$rezultat['titlu'].'">'.$rezultat['titlu'].'</option>';   
   }
echo '</select>
   <input type="submit" name="editstire" value="edit stire"> <input type="submit" name="deletestire" value="sterge stire">
   </form>';

echo '<hr width="40%" align="left"> <br>';

if (isset($_POST['deletestire']))
   {
      //stergem stirea selectata
      mysql_query("DELETE FROM stiri WHERE titlu='$_POST[titlustire]'");
      echo '<b>stirea '.$_POST['titlustire'].' a fost stearsa';
   }
elseif (isset($_POST['editstire']))
   {
      //selectam stirea cu subiectul din dropbox, inclusiv data in cazul in care mai exista acelasi titlu
      $rezultat_edit = mysql_fetch_array(mysql_query("SELECT titlu,continut,data FROM stiri WHERE titlu='$_POST[titlustire]'"));
      
      //editam stirea selectata
      echo '<form action="" method="post">
         Editeaza stire:<br>
         Subiect: <input type="text" name="editsubiect" value="'.$rezultat_edit['titlu'].'"> <p></p>
         Stire: <textarea name="editstire" rows="10" cols="30">',$rezultat_edit['continut'],' </textarea>
         <p>
         <input type="submit" name="resavestire" value="resalveaza stire">
         </p>
         </form>';
      echo "Postat la data: ".date('d-m-Y | H:i:s',$rezultat_edit['data'])."<br>";
      //dupa ce am editat stirea o salvam doar daca s-a actionat butonul
      if ((isset($_POST['resavestire'])) && (($_POST['editsubiect'] && $_POST['editstire']) != ''))
         {
            mysql_query("UPDATE stiri SET titlu='$_POST[editsubiect]',continut='$_POST[editstire]' WHERE data='$rezultat_edit[data]' ");
            echo '<b>Stirea a fost editata cu succes !</b>';
         }
      else
         {
            echo '<b>Toate campurile trebuie completate</b>';
         }
      
   }
else
   {
      //adaugam stire noua
      echo '<form action="" method="post">
      Adaga stire:<br>
      Subiect: <input type="text" name="subiect"> <p></p>
      Stire: <textarea name="stire" rows="10" cols="30"> </textarea>
      <p>
      <input type="submit" name="savestire" value="salveaza stire"><input type="reset" name="reset" value="reseteaza">
      </p>
      </form>';
   }


if ((isset($_POST['savestire'])) && (($_POST['subiect'] && $_POST['stire']) != ''))
   {
      $timp = time();
      
      $sql_save = "INSERT INTO stiri(titlu,continut,data,username) VALUES('$_POST[subiect]','$_POST[stire]','$timp','$_COOKIE[mywebUser]')";
      $query_save = mysql_query($sql_save,$con);
      
      echo '<b>Stirea a fost salvata cu succes !</b>';
   }
elseif (isset($_POST['savestire'])) //pentru a nu aparea la toate actiunile, afisam mesajul doar la actionarea butonului de salvare
   {
      echo '<b>Va rugam sa completati atat subiectul cat si stirea.</b>';
   }
?>

------
aici aveti tabelul

Cod: -- phpMyAdmin SQL Dump
-- version 2.11.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 26, 2008 at 07:38 AM
-- Server version: 5.0.45
-- PHP Version: 5.2.4

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `myweb`
--

-- --------------------------------------------------------

--
-- Table structure for table `stiri`
--

DROP TABLE IF EXISTS `stiri`;
CREATE TABLE IF NOT EXISTS `stiri` (
  `id_stire` tinyint(3) NOT NULL auto_increment,
  `titlu` varchar(40) collate latin1_general_ci NOT NULL,
  `continut` varchar(1000) collate latin1_general_ci NOT NULL,
  `data` int(10) unsigned NOT NULL,
  `username` varchar(30) collate latin1_general_ci NOT NULL,
  `comentarii` text collate latin1_general_ci NOT NULL,
  `poster` varchar(30) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`id_stire`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=14 ;

--
-- Dumping data for table `stiri`
--

INSERT INTO `stiri` (`id_stire`, `titlu`, `continut`, `data`, `username`, `comentarii`, `poster`) VALUES
(13, 'afara este frumos', ' afara este frumos, mai', 1209183407, '', '', ''),
(12, 'test 1', ' acesta este un test', 1209183390, '', '', ''),
(11, 'bina ati veni', ' pe myweb', 1209183376, '', '', '');
Sus  
crivion



Data înscrierii: 10/Apr/2007
Mesaje: 529
Locație: Somewhere

Trimis: Sâm Apr 26, 2008 7:31 am    Titlul subiectului:  

pune un print mysql_error(); dupa fiecare mysql_query() si seteaza si error_reporting(E_ALL) si vezi ce zice
Sus  
adicrst



Data înscrierii: 30/Iun/2007
Mesaje: 38

Trimis: Sâm Apr 26, 2008 7:03 pm    Titlul subiectului:  

nu-mi afiseaza nicio eroare la mysql_error()
error_reporting(E_ALL) nu stiu sa folosesc, dar am pus print error_reporting(E_ALL); si la output imi spune 6135
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 490
Locație: Drobeta Turnu Severin

Trimis: Sâm Apr 26, 2008 8:20 pm    Titlul subiectului:  

Doar error_reporting(E_ALL); fara print, trebuie sa-ti afiseze in browser orice eroare sau warning.
Cred ca print error_reporting(E_ALL); afiseaza 6143 , vezi aici
Sus  
adicrst



Data înscrierii: 30/Iun/2007
Mesaje: 38

Trimis: Sâm Apr 26, 2008 8:33 pm    Titlul subiectului:  

nu-mi apare nimic
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 490
Locație: Drobeta Turnu Severin

Trimis: Sâm Apr 26, 2008 10:27 pm    Titlul subiectului:  

Aici :
echo '<form action="" method="post"> ...
cred ca trebuie :
echo '<form action="' . $_SERVER['PHP_SELF'] .'" method="post"> ...

Nu m-am uitat prea atent pana jos dar nu-i bine sa faci actualizarea dupa titlu, trebuie dupa id_stire (titlu poate sa nu fie unic - structura tabelei permite acest lucru)
Sus  
adicrst



Data înscrierii: 30/Iun/2007
Mesaje: 38

Trimis: Dum Apr 27, 2008 2:11 am    Titlul subiectului:  

pa iasta-i ca nu o fac dupa titlu stirii ca nu poate fi unic, de aceea fac dupa data postarii care sigur ii unica

Cod: UPDATE stiri SET titlu='$_POST[editsubiect]',continut='$_POST[editstire]' WHERE data='$rezultat_edit[data]'

asta dupa ce am incercat si cu ID, dar eu cred ca nu ajunge sa execute UPDATE-ul dupa ce apas pe resalvarestrire
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 490
Locație: Drobeta Turnu Severin

Trimis: Dum Apr 27, 2008 10:40 am    Titlul subiectului:  

Nu ajunge pentru ca nu ai adaugat atributele ACTION la tag-ul FORM.
Oricum nu-i bine, afisarea selectiei din tabela trebuie sa o faci dupa ce se executa (daca e cazul) INSERT, UPDATE sau DELETE.
Incearca codul de mai jos, ar trebui sa mearga cu datele tale.
Cod:
<?php
    error_reporting(E_ALL);
    include "../connect.php";

    if (isset($_POST['deletestire']))
    {
      // aici inserezi codul de stergere
       echo "STERGE STIRE ID=" . $_POST['titlustire'];
       echo "<br /><a href=\"". $_SERVER['PHP_SELF'] ."\">Se sterge stirea si revine in form-ul initial</a>\n";
    }

    elseif (isset($_POST['editstire']))
    {
      // aici
      //  - citesti toata inregistrarea din tabela
      //  - afisezi forma de editare
      //  - butoane: Salvare sau Abandonare
       echo "EDITARE STIRE ID=" . $_POST['titlustire'];
       echo "<br /><a href=\"". $_SERVER['PHP_SELF'] ."\">Se editeaza, salveaza stirea si revine in formu-ul initial</a>\n";
    }
   
    elseif (isset($_POST['addstire']))
    {
      // aici
      //  - afisezi forma de editare (free)
      //  - butoane: Salvare sau Abandonare
       echo "ADAUGA STIRE ";
       echo "<br /><a href=\"". $_SERVER['PHP_SELF'] ."\">Se editeaza stirea noua, se salveaza stirea si revine in form-ul initial</a>\n";
    }
   else
   {
       $query_stiri = mysql_query('SELECT id_stire, titlu,continut FROM stiri',$con);
       echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"> \n";
        echo "<select name=\"titlustire\"> \n";
       while($rezultat = mysql_fetch_array($query_stiri))
        {
          echo "<option value=\"".$rezultat['id_stire']."\">".$rezultat['titlu']."</option> \n";   
        }
       echo "</select> \n";
        echo "<input type=\"submit\" name=\"addstire\" value=\"Adaugare\"> \n";
        echo "<input type=\"submit\" name=\"editstire\" value=\"Editare\"> \n";
        echo "<input type=\"submit\" name=\"deletestire\" value=\"Sterge\"> \n";
        echo "</form> \n";
   }
?>
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1155
Locație: Sibiu

Trimis: Mie Apr 30, 2008 9:01 am    Titlul subiectului:  

[offtopic]
adicrst a scris: nu-mi afiseaza nicio eroare la mysql_error()
error_reporting(E_ALL) nu stiu sa folosesc, dar am pus print error_reporting(E_ALL); si la output imi spune 6135
Eu unul cand nu stiu sa folosesc o functie care mi-e sugerata, o caut in manual.
[/offtopic]
Sus  
adicrst



Data înscrierii: 30/Iun/2007
Mesaje: 38

Trimis: Mie Apr 30, 2008 9:03 am    Titlul subiectului:  

mihaitha a scris: [offtopic]
adicrst a scris: nu-mi afiseaza nicio eroare la mysql_error()
error_reporting(E_ALL) nu stiu sa folosesc, dar am pus print error_reporting(E_ALL); si la output imi spune 6135
Eu unul cand nu stiu sa folosesc o functie care mi-e sugerata, o caut in manual.
[/offtopic]

Stai linistit ca am cautat-o.
Sus  
Quber



Data înscrierii: 27/Iun/2006
Mesaje: 752
Locație: localhost

Trimis: Mie Apr 30, 2008 9:05 am    Titlul subiectului:  

@adicrst, de aceea si ai pus "print error_reporting(E_ALL);" ?
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 2764
Locație: Targoviste City

Trimis: Mie Apr 30, 2008 1:52 pm    Titlul subiectului:  

error_reporting(E_ALL); // linie de sine statatoare
// dar ai grija ca apoi, cand publici site-ul, sa o scoti... nu e indicata decat pentru debug

PS: nu am de gand sa citesc codul de mai sus, am facut doar o paranteza
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community