o problema cu update

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

o problema cu update

buna ziua,
am urmatorul cod pentru update a mers cand avea doar 3 actualizari de facut dar acum cand am pus mai multe nu vrea sa mai merga si tot m-am uitat sa vad unde este greseala dar nu o gasesc. uitati-va va rog si ziceti si mie care este.

Cod: Selectaţi tot

<?php
require_once('conectare.php'); 
$id=trim($_POST['id']);
$familie=$_POST['familie'];
$tata=$_POST['tata'];
$mama=$_POST['mama'];
$membri=$_POST['membrii'];
$baieti=$_POST['baieti'];
$fete=$_POST['fete'];
$poza=$_POST['poza'];
$query="SELECT * FROM membrii_bisericii;" ;
$result=mysql_query($query);
$num=mysql_num_rows($result);
if ( $num <> 0 )
{
  $row=mysql_fetch_array($result);
  print '<form action="cautare.php" method="post">';
  print 'ID : <input name="id" value="'.$row['id'].'" type="text" > <br>';
  print 'Familie: <input name="familie" type="text" value="'.$row['familie'].'" > <br>';
  print 'Tata: <input name="tata" type="text" value="'.$row['tata'].'" > <br>';
  print 'Mama: <input name="id" value="'.$row['mama'].'" type="text" > <br>';
  print 'Membrii: <input name="familie" type="text" value="'.$row['membrii'].'" > <br>';
  print 'Baieti: <input name="familie" type="text" value="'.$row['baieti'].'" > <br>';
  print 'Fete: <input name="familie" type="text" value="'.$row['fete'].'" > <br>';
  print 'Poza: <input name="familie" type="text" value="'.$row['poza'].'" > <br>';
 // print "Detalii: <textarea name="detalii" cols="45" rows="3" id="detalii" value= "'.$row['detalii].'" ></textarea> <br>';
  print ' <input type="Submit" value="Actualizare membrii" > ';
  print '</form>'; 
}  
$query = "UPDATE membrii_bisericii SET id='".$id."' familie='".$familie."', tata ='".$tata."', mama ='".$mama."', membrii='".$membrii."', baieti ='".$baieti."', fete ='".$fete."', poza ='".$poza."' WHERE id=".$id.";"; 
mysql_query($query);
$query="SELECT * FROM membrii_bisericii";
$result=mysql_query($query);
$num=mysql_num_rows($result);
$i=0;
mysql_close();
?> 
si mai este o problema, am inserat pentru fiecare imparte id, familie.. etc dar la detalii nu vrea sa imi ia ceea ce am facut eu sau cred ca nu asa se face. imi explicati si mie cum se face va rog. cu stima trif
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
La UPDATE cu elemente multe se strecoara greseli de genul lipsa unei virgule sau ghilimele, incearca forma urmatoare, sper ca am scris-o corect fiindca e netestata.
$query = "UPDATE `membrii_bisericii` SET `id`='".$id."', `familie`='".$familie."', `tata`='".$tata."', `mama`='".$mama."', `membrii`='".$membrii."', `baieti`='".$baieti."', `fete`='".$fete."', `poza`='".$poza."' WHERE `id`='".$id."' LIMIT 1";

Pt. "detalii", ai greseli la ghilimele. Pune codul de afisare asa:
print 'Detalii: <textarea name="detalii" cols="45" rows="3" id="detalii" value= "'. $row['detalii'].'" ></textarea> <br>';
- Apoi preiei cu $_POST si adaugi la UPDATE ca pe celelalte.

trif Mesaje:500
Am pus si merge dar detalii nu merge nu stiu de ce?

Cod: Selectaţi tot

<?php
require_once('conectare.php'); 
$id=trim($_POST['id']);
$familie=$_POST['familie'];
$tata=$_POST['tata'];
$mama=$_POST['mama'];
$membrii=$_POST['membrii'];
$baieti=$_POST['baieti'];
$fete=$_POST['fete'];
$poza=$_POST['poza'];
$detalii=$_POST['detalii'];
$query="SELECT * FROM membrii_bisericii;" ;
$result=mysql_query($query);
$num=mysql_num_rows($result);
if ( $num <> 0 )
{
  $row=mysql_fetch_array($result);
  print '<form action="cautare.php" method="post">';
  print 'ID: <input name="id" value="'.$row['id'].'" type="text" > <br>';
  print 'Familie: <input name="familie" type="text" value="'.$row['familie'].'" > <br>';
  print 'Tata: <input name="tata" type="text" value="'.$row['tata'].'" > <br>';
  print 'Mama: <input name="mama" type="text" value="'.$row['mama'].'" > <br>';
  print 'Membrii: <input name="membrii" type="text" value="'.$row['membrii'].'" > <br>';
  print 'Baieti: <input name="baieti" type="text" value="'.$row['baieti'].'" > <br>';
  print 'Fete: <input name="fete" type="text" value="'.$row['fete'].'" > <br>';
  print 'Poza: <input name="poza" type="text" value="'.$row['poza'].'" > <br>';
  print 'Detalii: <textarea name="detalii" cols="45" rows="3" id="detalii" value= "'.$row['detalii'].'" ></textarea> <br>';
  print ' <input type="Submit"> ';
  print '</form>'; 
}  
$query = "UPDATE `membrii_bisericii` SET `id`='".$id."', `familie`='".$familie."', `tata`='".$tata."', `mama`='".$mama."', `membrii`='".$membrii."', `baieti`='".$baieti."', `fete`='".$fete."', `poza`='".$poza."', `detalii`='".$detalii."' WHERE `id`='".$id."' LIMIT 1";
mysql_query($query);
$query="SELECT * FROM membrii_bisericii";
$result=mysql_query($query);
$num=mysql_num_rows($result);
$i=0;
mysql_close();
?> 
cu stima trif
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 la "detalii" asa:
print 'Detalii: <textarea name="detalii" cols="45" rows="3" id="detalii" >'. $row['detalii'].'</textarea> <br>';

- Daca nu merge, nu stiu.

trif Mesaje:500
merge asa cum ai zis ultima data! mersi mult de tot! cu stima trif
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

trif Mesaje:500
am alta problema tot cu update dar diferita, am "pagina mea" in care am pus codul de mai jos

Cod: Selectaţi tot

<?
$nume=$_SESSION['SESS_NUME'];
$prenume=$_SESSION['SESS_PRENUME'];
$query="SELECT * FROM members where nume='".$prenume."'";
$result=mysql_query($query);
$num=mysql_num_rows($result);
$i=0;
while ($i < $num) {
  $rand=mysql_fetch_array($result);
	echo '<a href="rezultate_membrii_site.php?id='.$rand['id'].' "><center>Schimba date!</center> </a> ';
    ++$i;
}
?>
si ma trimite la urmatorul cod

Cod: Selectaţi tot

 <?php
$utilizator=mysql_real_escape_string($_GET['id']);
$id=trim($_POST['id']);
$nume=$_POST['nume'];
$prenume=$_POST['prenume'];
$utilizator=$_POST['utilizator'];
$email=$_POST['email'];
$localitate=$_POST['localitate'];
$religie=$_POST['religie'];
$poza=$_POST['poza'];
$cerereSQL = 'SELECT * FROM members WHERE id="'.$_GET['id'].'"'; 
$rezultat = mysql_query($cerereSQL);
$num=mysql_num_rows($rezultat);
if ( $num <> 0 )
{
  $rand=mysql_fetch_array($rezultat);
  print '<form action="rezultate_membrii_site.php?id='.$rand['id'].'" method="post">';
  print 'Nume: <input name="nume" type="text" value="'.$rand['nume'].'" > <br>';
  print 'Prenume: <input name="prenume" type="text" value="'.$rand['prenume'].'" > <br>';
  print 'Utilizator: <input name="utilizator" type="text" value="'.$rand['utilizator'].'" > <br>';
  print 'E-mail: <input name="email" type="text" value="'.$rand['email'].'" > <br>';
  print 'Localitate: <input name="localitate" type="text" value="'.$rand['localitate'].'" > <br>';
  print 'Religie: <input name="religie" type="text" value="'.$rand['religie'].'" > <br>';
  print 'Poza: <input name="poza" type="text" value="'.$rand['poza'].'" > <br><br>';
  print ' <input type="Submit" value="Actualizare date!"> ';
  print '</form>'; 
}  
$cerereSQL = "UPDATE `members` SET `nume`='".$nume."', `prenume`='".$prenume."', `utilizator`='".$utilizator."', `email`='".$email."', `localitate`='".$localitate."', `religie`='".$religie."', `poza`='".$poza."' WHERE `id`='".$id."'";
mysql_query($cerereSQL) or die("NU se poate adauga!");
print "<br><a href='pagina_mea.php'>Inapoi la pagina mea</a>";
$cerereSQL="SELECT * FROM members";
$rezultat=mysql_query($cerereSQL);
$num=mysql_num_rows($rezultat);
$i=0;
mysql_close();
?>
dar nu merge cum vreau eu sau nu este bine pusa problema dar am tot invartit codul si tot nu imi da ceea ce vreau adica fiecare care se autentifica si intra pe "pagina mea" sa poata sa isi modifice datele. mai este ceva ca nu imi ia pe cel care este autentificat ci imi ia pe toti din lista si

Cod: Selectaţi tot

<?php echo $_SESSION['SESS_PRENUME'];?>
am acest cod care imi scoate numele din bd. adica nu stiu ce sa ii fac. cu stima trif
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
Nici eu nu stiu, tu cunosti mai bine ce ai facut si despre ce e vorba, pot doar sa-ti spun ca atunci cand se lucreaza cu sesiuni, fisierul .php trebuie sa aibe adaugat la inceput functia session_start();. La tine obser ca nu este si asta e sigur o cauza, daca or fi si altele, nu stiu.

P.S. Vezi lectia despre sesiuni de la cursul php-mysql

trif Mesaje:500
eu am la inceput de tot functia asta

Cod: Selectaţi tot

<?php
session_start();
include "conectare.php";
?>
si merge la celelalte script-uri php.
faza este ca nu stiu cum sa ii dau sa inteleaga ca doar cel logat poate sa isi modifice datele lui si sa ii apara doar datele lui. asa cum avem fiecare pe forumul acesta "panoul utilizatorului". cu stima trif
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
1. Cand se face autentificarea, dupa verificaarea datelor de logare, adaugi id-ul sau numele lui intr-o sesiune, ex.: $_SESSION['user']=$rand['user']
2. In pagina care are formularul de update poti pune conditia sa transmita la browser codul html pt. formular doar daca exista acea sesiune

Cod: Selectaţi tot

if (isset($_SESSION['user'])) {
  echo 'Formular';
}
3. La "query-ul pt. UPDATE preiei id-ul sau numele (ce e pus in sesiune) si pe baza lui faci update-ul

Cod: Selectaţi tot

// ...
$user = $_SESSION['user'];
$sql = "UPDATE ... WHERE `user`='$user'";
Cam asta e ideea.

trif Mesaje:500
am incercat dar nu merge cred ca asta este problema, eu cand ma loghez am la fiecare pag asta

Cod: Selectaţi tot

<?php
	require_once('auth.php');
?> 
si auth.php contine

Cod: Selectaţi tot

<?php
	//Start session
	session_start();
	
	//Check whether the session variable SESS_MEMBER_ID is present or not
	if(!isset($_SESSION['SESS_ID']) || (trim($_SESSION['SESS_ID']) == '')) {
		header("location: access-denied.php");
		exit();
	}
?>
si daca nu indeplineste asta nu ma lasa sa intru. si in rest nu am nimic de verificat ci numai asta. nu este ca si scriptul pe care l-ai facut u. problema este aici cum fac ca sa verific ca utilizatorul este logat si sa imi ia cu $_GET['id'] si sa actualizeze. uite ce am facut pana acum:
asta este din "pagina_mea.php"

Cod: Selectaţi tot

<?php
$query="SELECT * FROM members";
$result=mysql_query($query);
$num=mysql_num_rows($result);
$i=0;
while ($i < $num) {
  $rand=mysql_fetch_array($result);
	echo '<a href="profil_actualizat.php?id='.$rand['id'].' "><center>Actualizare</center> </a> ';
    ++$i;
} 
?>  
si acesta este din profil_actualizare.php

Cod: Selectaţi tot

     <?php
$utilizator=mysql_real_escape_string($_GET['id']);
$id=trim($_POST['id']);
$nume=$_POST['nume'];
$prenume=$_POST['prenume'];
$utilizator=$_POST['utilizator'];
$email=$_POST['email'];
$localitate=$_POST['localitate'];
$religie=$_POST['religie'];
$cerereSQL = 'SELECT * FROM members WHERE id="'.$_GET['id'].'"'; 
$rezultat = mysql_query($cerereSQL);
$num=mysql_num_rows($rezultat);
if ( $num <> 0 )
{
  $rand=mysql_fetch_array($rezultat);
  print '<form action="profil_actualizat.php?id='.$rand['id'].'" method="post">';
  print 'ID: <input name="id" value="'.$rand['id'].'" type="text" > <br>';
  print 'Familie: <input name="nume" type="text" value="'.$rand['nume'].'" > <br>';
  print 'Tata: <input name="prenume" type="text" value="'.$rand['prenume'].'" > <br>';
  print 'Mama: <input name="utilizator" type="text" value="'.$rand['utilizator'].'" > <br>';
  print 'Membrii: <input name="email" type="text" value="'.$rand['email'].'" > <br>';
  print 'Baieti: <input name="localitate" type="text" value="'.$rand['localitate'].'" > <br>';
  print 'Fete: <input name="religie" type="text" value="'.$rand['religie'].'" > <br>';
  print ' <input type="Submit" value="Actualizare date!"> ';
  print '</form>'; 
}  
$cerereSQL = "UPDATE `members` SET `id`='".$id."', `nume`='".$nume."', `prenume`='".$prenume."', `utilizator`='".$utilizator."', `email`='".$email."', `localitate`='".$localitate."', `religie`='".$religie."' WHERE `id`='".$id."' LIMIT 1";
mysql_query($cerereSQL) or die("NU se poate adauga!");
$cerereSQL="SELECT * FROM members";
$rezultat=mysql_query($cerereSQL);
$num=mysql_num_rows($rezultat);
$i=0;
mysql_close();
?>
. faza este ca la pagina_mea.php imi face array si nu imi trebuie asta. nu stiu ce sa ii fac. cu stima trif
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
Din ce am inteles, daca utilizatorul e autentificat, o sa existe o sesiune "$_SESSION['SESS_ID']"
Atunci, la query ar merge asa:

Cod: Selectaţi tot

$id_user = $_SESSION['SESS_ID'];
$query="SELECT `id` FROM `members` WHERE `id`='$id_user'";
// Restul codului ...
P.S. In MySQL se foloseste des WHERE pt. a specifica randu[rile],

trif Mesaje:500
cum am zis merge dar este ceva ce nu imi place, in primul rand asta este codul de actualizare

Cod: Selectaţi tot

 <?php
$utilizator=mysql_real_escape_string($_GET['id']);
$id=trim($_POST['id']);
$nume=$_POST['nume'];
$prenume=$_POST['prenume'];
$utilizator=$_POST['utilizator'];
$email=$_POST['email'];
$localitate=$_POST['localitate'];
$religie=$_POST['religie'];
$cerereSQL = 'SELECT * FROM members WHERE id="'.$_GET['id'].'"'; 
$rezultat = mysql_query($cerereSQL);
$num=mysql_num_rows($rezultat);
if ( $num <> 0 )
{
  $rand=mysql_fetch_array($rezultat);
  print '<form action="profil_actualizat.php?id='.$rand['id'].'" method="post">';
  print 'ID: <input name="id" value="'.$rand['id'].'" type="text" > <br>';
  print 'Nume: <input name="nume" type="text" value="'.$rand['nume'].'" > <br>';
  print 'Prenume: <input name="prenume" type="text" value="'.$rand['prenume'].'" > <br>';
  print 'Utilizator: <input name="utilizator" type="text" value="'.$rand['utilizator'].'" > <br>';
  print 'E-mail: <input name="email" type="text" value="'.$rand['email'].'" > <br>';
  print 'Localitate: <input name="localitate" type="text" value="'.$rand['localitate'].'" > <br>';
  print 'Religie: <input name="religie" type="text" value="'.$rand['religie'].'" > <br><br>';
  print ' <input type="Submit" value="Actualizare date!"> ';
  print '</form>'; 
}  
$cerereSQL = "UPDATE `members` SET `id`='".$id."', `nume`='".$nume."', `prenume`='".$prenume."', `utilizator`='".$utilizator."', `email`='".$email."', `localitate`='".$localitate."', `religie`='".$religie."' WHERE `id`='".$id."' LIMIT 1";
mysql_query($cerereSQL) or die("NU se poate adauga!");
 print "Datele au fost actualizate!";
?>
si acum problema este ca dupa ce dau actualizare trebuie sa dau F5 sau reload ca sa imi arate modificare si eu vreau ca dupa ce ii dau "actualizare date!" ori sa imi zica un mesaj in care sa imi zica sau sa mi le schimbe atunci direct la urmatoarea afisare. am pus de exemplu

Cod: Selectaţi tot

$cerereSQL = "UPDATE `members` SET `id`='".$id."', `nume`='".$nume."', `prenume`='".$prenume."', `utilizator`='".$utilizator."', `email`='".$email."', `localitate`='".$localitate."', `religie`='".$religie."' WHERE `id`='".$id."' LIMIT 1";
mysql_query($cerereSQL) or die("NU se poate adauga!");
 print "Datele au fost actualizate!";
?>
dar imi apare tot timpul nu atunci dupa ce ii dau actualizare. cu stima trif
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

Subiecte similare