UPDATE DB MYSQL

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

UPDATE DB MYSQL

Caut un tutorial sau script bun pt update DB dupa ID, am gasit cateva dar nimic clar si nefunctionale. Va multumesc anticipat.

MarPlo Mesaje:4343
Salut
Incearca sa adaptezi codul urmator:

Cod: Selectaţi tot

<?php
// Intai faceti conectarea la MySQL si selectarea bazei de date

// Daca sunt trimise datele pt. 'id'
if (isset($_REQUEST['id'])) {
    // Se verifica daca "magic_quotes_gpc()" este setat ON
    // Daca e ON, se aplica stripslashes() pentru a nu se adauga de 2 ori "\"
    if(get_magic_quotes_gpc()) {
        $_REQUEST['id'] = stripslashes($_REQUEST['id']);
    }

    // Se adauga valorile filtrate cu mysql_real_escape_string() in variabile
    $id = mysql_real_escape_string($_REQUEST['id']);

    // Acum se adauga in siguranta datele in MySQL
    $sql = "UPDATE `nume_tabel` SET `col1`='$val1', `col2`='$val2' WHERE `id`='$id'";

    // Se executa interogarea si afiseaza confirmarea
    if (mysql_query($sql)) {
        echo 'Datele au fost modificate';
    }
}
?> 
- col1 , col2 sunt numele coloanelor.
- $val1 , $val2 sunt variabilele cu valorile ce trebuie adaugate.

cipriand Mesaje:18
Asa arata in baza de date.

Cod: Selectaţi tot

CREATE TABLE IF NOT EXISTS `anunt` (
  `id` int(3) NOT NULL auto_increment,
  `titlu` varchar(40) NOT NULL default '',
  `nume` varchar(20) NOT NULL default '',
  `email` varchar(40) NOT NULL default '',
  `telefon` varchar(20) NOT NULL default '',
  `idmess` varchar(20) NOT NULL default '',
  `data` varchar(40) NOT NULL default '',
  `domeniu` varchar(40) NOT NULL default '',
  `judet` varchar(40) NOT NULL default '',
  `localitate` varchar(40) NOT NULL default '',
  `poza` text NOT NULL,
  `site` text NOT NULL,
  `anunt` text NOT NULL,
  `vizite` int(11) unsigned NOT NULL default '0',
  `ip` varchar(550) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=319 ;
si vreau sa dau editare doar pe titlu anunt si domeniu luata dupa id . Sunt pun pik stangaci si nu-mi iese :(

MarPlo Mesaje:4343
In mare, codul ar fi cam asa:

Cod: Selectaţi tot

<?php
// Intai preiei cum stii: titlu, anunt, domeniu si id
// in variabile: $titlu, $anunt, $domeniu si $id

// se adauga datele din variabile in MySQL
$sql = "UPDATE `nume_tabel` SET `titlu`='$titlu', `anunt`='$anunt', `domeniu`='$domeniu' WHERE `id`='$id'";

// Se executa interogarea si afiseaza confirmarea
if (mysql_query($sql)) { echo 'Datele au fost modificate'; }
?>

cipriand Mesaje:18
Am facut 2 fisiere update.php

Cod: Selectaţi tot

<? 
// Connect to the database 
$db = mysql_connect("localhost","lalal","parola"); 
mysql_select_db ("lalal"); 

// Ask the database for the information from the links table 


$result = mysql_query("SELECT * FROM anunt ORDER by id desc LIMIT 1"); 
$num=mysql_numrows($result); 
mysql_close(); 



$i=0; 
while($row=mysql_fetch_array($result)){ 
$titlu=mysql_result($result,$i,"titlu"); 
$domeniu=mysql_result($result,$i,"domeniu"); 
$poza=mysql_result($result,$i,"poza"); 
$idmess=mysql_result($result,$i,"idmess"); 


?> 

<form action="updated.php" method="post"> 
<input type="hidden" name="ud_id" value="<? echo "$id";?>"> 
Titlu: <input type="text" name="ud_titlu" value="<? echo "$titlu"?>"><br> 
Domeniu: <input type="text" name="ud_domeniu" value="<? echo "$domeniu"?>"><br> 
Poza: <input type="text" name="ud_poza" value="<? echo "$poza"?>"><br> 
Idmess: <input type="text" name="ud_idmess" value="<? echo "$idmess"?>"><br> 
 

<input type="Submit" value="Update"> 
</form> 

<? 
++$i; 
} 
?> 
si updated.php

Cod: Selectaţi tot

<?php 
$hostname="localhost"; 
$username="lalala"; 
$password="parola"; 
$database="lalala"; 

// Connect to the database 
mysql_connect($hostname, $username, $password) OR DIE("Unable to connect"); 
mysql_select_db("$database") or die("Unable to select database"); 

$query="UPDATE anunt SET titlu='" . $_POST['ud_titlu'] . "', domeniu='" . $_POST['ud_domeniu'] . "', poza='" . $_POST['ud_poza'] . "' , idmess='" . 

$_POST['ud_idmess'] . "'"; 
$checkresult = mysql_query($query); 
if ($checkresult) echo 'update query succeeded'; 
else echo 'update query failed'; 

mysql_close(); 
?> 
Problema e ca face update dar schimba anunturile la toti :) . Pune la toti acelasi titlu , aceiasi poza :mrgreen:

MarPlo Mesaje:4343
Cand faci SELECT-ul, trebuie preluat si valoarea din casuta 'id':
$id = mysql_result($result,$i,"id");

Iar la UPLOAD trebuie adaugata la sfarsit conditia WHERE, care sa specifice exact unde sa modifice:

Cod: Selectaţi tot

$query="UPDATE anunt SET titlu='". $_POST['ud_titlu']. "', domeniu='". $_POST['ud_domeniu']. "', poza='". $_POST['ud_poza']. "' , idmess='". $_POST['ud_idmess']. "' WHERE id='". $_POST['ud_id']. "'";

cipriand Mesaje:18
PFIU REZOLVAT !
update.php

Cod: Selectaţi tot

<?php

	include "conexiune.php";

	?>

 <? 
$result = mysql_query("SELECT * FROM anunt ORDER by id desc LIMIT 1"); 
$num=mysql_numrows($result); 
mysql_close(); 



$i=0; 
while($row=mysql_fetch_array($result)){ 
$id=mysql_result($result,$i,"id");
$titlu=mysql_result($result,$i,"titlu"); 
$domeniu=mysql_result($result,$i,"domeniu"); 
$poza=mysql_result($result,$i,"poza"); 
$idmess=mysql_result($result,$i,"idmess"); 



?> 

<form action="updated.php" method="post"> 
<input type="hidden" name="ud_id" value="<? echo "$id";?>"> 
Titlu: <input type="text" name="ud_titlu" value="<? echo "$titlu"?>"><br> 
Domeniu: <input type="text" name="ud_domeniu" value="<? echo "$domeniu"?>"><br> 
Poza: <input type="text" name="ud_poza" value="<? echo "$poza"?>"><br> 
Idmess: <input type="text" name="ud_idmess" value="<? echo "$idmess"?>"><br> 
 

<input type="Submit" value="Update"> 
</form> 

<? 
++$i; 
} 
?> 
si updated.php

Cod: Selectaţi tot

<?php

	include "conexiune.php";

	?>

<? 



$ud_id=$_POST['ud_id'];
$ud_titlu=$_POST['ud_titlu'];
$ud_domeniu=$_POST['ud_domeniu'];
$ud_poza=$_POST['ud_poza'];
$ud_idmess=$_POST['ud_idmess'];

mysql_query("UPDATE anunt SET titlu='$ud_titlu', domeniu='$ud_domeniu', poza='$ud_poza', idmess='$ud_idmess' WHERE id='$ud_id'") or exit(mysql_error());
echo "Record Updated";
mysql_close();
?>
Va multumesc o zi buna !

trif Mesaje:500
salut, am si eu o problema cu UPDATE si nu deschid alt topic pt asta si scriu tot aici. problema este am acest cod:

Cod: Selectaţi tot

function valideaza_formular($editare = false) {
	$errors = array();
	if(! $editare) {
	if(img_existent($_POST['img'])) { $errors[] = 'IMG deja existent. Va rugam verificati';}
	}
	//********* verifica numele sa fie in formatul corect
	if(empty($_POST['img']))  { $errors[] = 'campul img nu este completat corect';}
	return $errors;
}
function img_existent($img) {
	global $connection;
	$query = "SELECT img FROM foto_bd WHERE img = '$img'";
	$result_set = run_query($query);
	return(mysql_num_rows($result_set) >0) ? true: false;
}
function confirm_query($query) {
	if(!$query) {
		die("Eroare " . mysql_error());
	}
}
function run_query($query) {
	global $connection;
	$result_set = mysql_query($query);
	confirm_query($result_set);
	return $result_set;
}
function mysql_prep($value) {
	$magic_quotes_active = get_magic_quotes_gpc();
	$new_enough_php = function_exists('mysql_real_escape_string');
	if ($new_enough_php) {
		if ($magic_quotes_active){
			$value = stripslashes($value);
		}
		$value = mysql_real_escape_string($value);
	}
	else {
		$value = addslashes($value);
	}
	return $value;
}
si il preiau cu

Cod: Selectaţi tot

<?php  
	 //****** seteaza variabila message, care deocamdata e goala. va contine mesajele de la validarea formularului
if(isset($_POST['submit'])) {
	$errors = valideaza_formular();
	if(empty($errors)) {
		//******* pregateste valorile sa fie bagate in BD
		$img = mysql_prep($_POST['img']);		
		$video = mysql_prep($_POST['video']);	
		//******* baga in BD
		$query = "INSERT INTO video_bd (img, video) VALUES ('{$img}', '{$video}')";
		$result_set = mysql_query($query);
		confirm_query($result_set);
			if(mysql_affected_rows() == 1) {
				$message = 'CODUL/LINK-ul si NUMELE pentru VIDEO a fost introdus cu succes.</p>';
				$message .='<br/>' . '<a href="adaugare_video.php" class="button">Urmatorul COD/LINK si NUME</a>';
				$disabled = 'disabled = "disabled"';
			}
		}
		else {
			$message = 'CODUL/LINK-ul pentru VIDEO nu a putut fi introdus sau mai este o data. <br> Va rugam incercati din nou.</p>';
		}
	}
?>
acest cod il mai folosesc la adaugare foto si imi merge perfect si acolo am de introdus doar o informatie img iar aici am de introdus 2 info img si video si imi merge DAR imi baga de mai multe ori in bd la fiecare reflesh si teoretic nu trebuie ca asa este scriptul, greseala este ca nu am declarat undeva "video" dar nu stiu unde poate aici

Cod: Selectaţi tot

function valideaza_formular($editare = false) {
	$errors = array();
	if(! $editare) {
	if(img_existent($_POST['img'])) { $errors[] = 'IMG deja existent. Va rugam verificati';}
	}
	//********* verifica numele sa fie in formatul corect
	if(empty($_POST['img']))  { $errors[] = 'campul img nu este completat corect';}
	return $errors;
}
function img_existent($img) {
	global $connection;
	$query = "SELECT img FROM foto_bd WHERE img = '$img'";
	$result_set = run_query($query);
	return(mysql_num_rows($result_set) >0) ? true: false;
}
si faza este ca daca aici nu stiu cum sa fac asta

Cod: Selectaţi tot

if(img_existent($_POST['img'])) { $errors[] = 'IMG deja existent. Va rugam verificati';}
pt mai mutle date, adica cu $_POST.... astept raspuns, multumesc.
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Incearca sa inlocuiesti functia "img_existent()" cu urmatoarea:

Cod: Selectaţi tot

function img_existent($img, $video) {
   global $connection;
   $query = "SELECT img, video FROM video_bd WHERE img='$img' OR video='$video'";
   $result_set = run_query($query);
   return(mysql_num_rows($result_set) >0) ? true: false;
}
 
Iar in functia "valideaza_formular()", inlocuita cu:

Cod: Selectaţi tot

function valideaza_formular($editare = false) {
   $errors = array();
   if(! $editare) {
   if(img_existent($_POST['img'], $_POST['video'])) { $errors[] = 'IMG sau VIDEO deja existent. Va rugam verificati';}
   }
   //********* verifica numele sa fie in formatul corect
   if(empty($_POST['img']))  { $errors[] = 'campul img nu este completat corect';}
   if(empty($_POST['video']))  { $errors[] = 'campul video nu este completat corect';}
   return $errors;
}
 
- Daca studiezi bine functiile, observi modificarile si poti face mai departe ce mai trebuie.

trif Mesaje:500
merge super bine, multumesc mult de tot!
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif