Adaugare date din baza de date in formular pt modificare

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
crissti777
Mesaje:21

Adaugare date din baza de date in formular pt modificare

Salutare....
Am citit ceva despre bazele de date, ma descurc oarecum cu crearea si extragerea datelor din ele si acum vreau sa invat si cum se pot modifica datele dintr-un tabel dar vreau sa fac asta intr-un anumit fel si nu stiu cum. :D

Mai pe scurt, vreau sa inserez informatiile dorite intr-un camp de text "textarea", adica, sa selectez id-ul sau numele postarii respective si atunci cand apas un buton sa imi apara in formular articolul pe care vreau sa-l modific.

Am mai intalnit pe unele forumuri aceasta posibilitate, nu vreau scripturi, vreu doar cateva opinii care sa ma lamureasca macar daca pot face asta cu php si ce anume sa citesc.

Multumesc!

steell Mesaje:190
Selectezi in formular id-ul postarii respective asa cum ai zis si dupa ce trimiti formularul selectezi din baza de date postarea cu id-ul respectiv si o afisezi in interiorul tagului textarea cum ai spus si tu, dupa care cand trimiti formularul respectiv faci update pentru a inlocui informatia din postarea respectiva. Ca sa faci update folosesti interogarea de genul acesta :

Cod: Selectaţi tot

UPDATE tabel SET coloana1='noua valoare a coloanei 1', coloana2='noua valoare a coloanei 2' WHERE conditii; 
In ceea ce vrei sa faci conteaza cat de mult te duce capu sa faci scriptul respectiv (o modalitate, un algoritm). O solutie ar fi cu javascript cand alegi postarea dintr-un tag <select> sa o extraga din baza de date si sa o puna in textarea (cu ajax sau cu load). Alta solutie ar fi doar cu php si doua formulare, unul cu tagul select ce contine postarile si dupa ce tirmiti formularul asta afisezi in alt formular in tagul textarea informatia postarii respective. Varianta a doua merge si cu un singur formular nu neaparat cu doua, doar ca trebuiesc puse niste conditii. Succes.

MarPlo Mesaje:4343
Salut
Uite un exemplu de cod din care sa te inspiri:

Cod: Selectaţi tot

<?php
// Se face conectarea la baza de date

// Select pt a adauga id-urile intr-un <select>
$sql = "SELECT id FROM nume_tabel";

// Se efectueaza comanda sql, se preia datele si se creaza formular cu <select> cu id-uri
$sel = '<form action="this_file.php" method="post"><select name="id"><option>Id-uri</option>';
while($row = $result->fetch()) {
  $sel .= '<option value="'. $row['id']. '">'. $row['id']. '</option>';
}
$sel .= '</select><br/><input type="submit" value="Get Data" /></form>';

echo $sel;     // afiseaza formularul cu id-uri

// daca e primit id
if(isset($_POST['id'])) {
  // selecteaza datele de la acel id, si le adauga intr-un formular
  $id = intval($_POST['id']);
  $sql = "SELECT * FROM nume_tabel WHERE id=$id LIMIT 1";

  // Se efectueaza comanda sql, se preia datele

  $form = '<form action="this_file.php" method="post"><input type="hidden" name="idup" value="'. $id .'" />';

  $row = $result->fetch();

  // creasza formularul, id-ul retinut in camp ascuns, va fi folosit la update
  $form .= 'Title <input type="text" name="title" value="'. $row['title'] .'" /><br/>
  Description<br/>
  <textarea name="description">'. $row['description'] .'</textarea><br/>
  <input type="submit" value="Update" /></form>';

  echo $form;
}
else if(isset($_POST['idup'])) {
  // daca e primit id-ul pt update, preia datele si se face UPDATE la randul cu acel id
  $sql = "UPDATE nume_tabel SET title='$title', description='$description' WHERE id = $idup";
  // se efectueaza update ...
}
 

crissti777 Mesaje:21
Ok, multumesc...o sa ma uit pe coduri sa vad ce pot face, defapt stau pe ele pana reusesc si mai rsvin atunci cu un mesaj, o sa ma limitez doar la php pt ca abia il stapanesc pe asta :) de alte limbaje nu sw poate pune problema.

crissti777 Mesaje:21
Revin din nou, am urmat oarecum ce e scris mai sus dar nu am reusesc sa inteleg in totalitate si am modificat si dupa intelesul meu dar si dupa ceea ce vreau eu sa fie, am reusit pana la extragerea datelor din tabel si afisarea lor dar cand sa le introduc din nou modificate in tabel nu mai merge, probabil e ceva gresit, am sa trec mai jos codul pana unde functioneaza si dupa ceea ce nu merge....

Cod: Selectaţi tot

//aici am pus datele pt conectare la bd in formulare iar ele intr-o variabila

$nht = "<form action='index.php' method='POST'>
	   
	    <select name='numehost'>
		  <option value='localhost'>localhost</option>
		</select>
		
		<select name='numeutilizator'>
		  <option value='crissti'>crissti</option>
		</select>
		
		<input type='password' name='parola' placeholder='parola' size='10' value=''/>
		
		<select name='bazadedate'>
		  <option value='bd_bancuri'>bd bancuri</option>
		</select>
		
		<select name='numetabel'>
		  <option value=''>tabele</option>
		  <option value='bancuri'>bancuri</option>
		  <option value='tabelul_doi'>tabelul 2</option>
		</select><br>";
echo $nht;

                                  // conectare la baza de date
if(isset($_POST['submit']))
{
  $numehost = $_POST["numehost"];
  $numeutilizator = $_POST["numeutilizator"];
  $parola = $_POST["parola"];
  $bazadedate = $_POST["bazadedate"];
  
  $connect = mysql_connect($numehost,$numeutilizator,$parola) or die("<center>Eroare: Conexiune nereusita!!</center>" . mysql_error());
  $select = mysql_select_db($bazadedate) or die("<center><font id='paragraf'><b><i>Eroare: Selectare nereusita!!</i></b></font><br></center>" . mysql_error());
}


                                  // selectare tabel, id si titlu postului ce urmeaza modificat
@$numetabel = $_POST['numetabel'];

$sql = mysql_query ("SELECT `id`,`titlu` FROM `$numetabel`");

if(isset($_POST['submit']) && $numetabel == 'bancuri')
{
    $selid = "<hr color='#ffffff'><select name='id'><option>Id-uri</option>";
    $seltitlu ="<select name='titlu'><option>titluri</option>";

    while($row = mysql_fetch_array($sql))
	{
	    $id1 = $row['id'];
	    $titlu1 = $row['titlu'];
	    $selid .= '<option value="'. $row['id']. '">'. $row['id']. '</option>';
	    $seltitlu .= '<option value="'. $row['titlu']. '">'. $row['titlu']. '</option>';
	}
	    $selid .= '</select>';
       	$seltitlu .= '</select>';
		$id1 = $row['id'];
	    echo $selid . $seltitlu; 
		

	    @$id2 = $_POST['id'];
        $sql = mysql_query("SELECT `titlu`,`banc` FROM `$numetabel` WHERE `id`='$id2'");
		

        while($row = mysql_fetch_array($sql))
        {
		    $titlu = $row['titlu'];
            $banc = $row['banc'];
			$seltitlu1 = ' </center> <hr color="#ffffff"><input type="text" name="tit" value="'.$row['titlu'].'"></input>';
            $selbanc = '<center><textarea name="ban" value="'.$row['banc'].'" rows="15" cols="65">'.$row['banc'].'</textarea>';
	    
	    
		}
		echo @$seltitlu1 . @$selbanc;  
//pana aici merge, mai apareau niste mici erori dar le-am stopat cu @

Iar asta e partea care vreau sa o folosesc pt update, ceva asemanator folosesc intr-un alt script mai simplu unde imi functioneaza:

Cod: Selectaţi tot

         //aici iau datele pe care le am extrase din bd in campul textarea
         @$banc1 = $_POST['ban'];
         //aici am id-ul liniei unde trebuie facut update-ul
         @$id2 = $_POST['id'];
          //aici se face udate
         @$sql = "UPDATE `$numetabel` SET `banc`='$banc1' WHERE `id`='$id2'";

pe langa asta am incercat si alte variante dar n-a mers, am vrut sa pun dupa sql asta:

    if ($conn->query($sql)) 
    {
       echo "Datele selectate au fost modificate cu succes!!</center>";
    }
	
	    else
	    {
           echo "Error: " . $conn->error . ;
        }
	
	
Ce ar mai fi de facut? mi-am batut capul o zi si degeaba :lol:

MarPlo Mesaje:4343
Ascunderea erorilor cu "@" nu rezolva problema, mai bine sa rezolvi cauza lor, si inveti sa lucrezi fara erori.
Incearca comanda SQL fara ghilimele la valori numerice (id), asa ("echo $sql este ca sa vezi ce instructiune contine acel sir, sa poti vedea daca e corecta):

Cod: Selectaţi tot

$sql = "UPDATE `$numetabel` SET `banc`='$banc1' WHERE `id`=$id2";
echo $sql;
 

crissti777 Mesaje:21
OK incerc acum, acele variabile care au @ dadeau eroare pt ca imi spunea in pagina ca nu sunt gasite, cu toate astea existau si functionau in cadru scriptului, de asta le-am ascuns eroarea

Subiecte similare