Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Pareri magazin online quickmobile?

Unde gasesc banane albastre?

Despre compania de aministrare Sq...

Durere taietura deget dupa 2 luni
 Dalți gravare lemn

Didgeridoo

Motorola Edge 50 Ultra

Gaura perete apartament cu evitar...
 Orientare antena prime focus

Problema conectare mail yahoo

comisioane asociatie proprietari

Primul sistem de televiziune cu p...
 Internetul este neutilizabil fara...

Eroare cloud burn icopy face id

DermaRoller ce este ?

Articole limba Germana
 

delete from union tables

- - - - -
  • Please log in to reply
10 replies to this topic

#1
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Am trei tabele (una de comentarii, una de recenzii si una de poze), care au acelasi numar de coloane si aceeasi denumire.
Am facut un select in union de cele trei tabele, pentru ca am avut nevoie sa afisez toate comentariile, recenziile si pozele unui utilizator (cu id cunoscut).
La fiecare linie afisata din acest union, am si un buton de delete (pentru ca userul sa isi poata sterge propria postare).
Fiecare postare este identificata cu data si ora.

Problema este ca nu stiu cum sa fac ca sa identific carei tabele ii apartine acea linie (daca este in tabela de comentarii, de recenzii sau de poze) ca sa pot executa delete-ul.
Cam care ar trebui sa fie abordarea?

Multumesc.

#2
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,023
  • Înscris: 24.02.2006
adaugi o coloana suplimentara in query, pe care o completezi (manual) cu valori diferite in functie de tabel
ceva de genul
SELECT Id, Name, 1 as Source FROM Table1
UNION
SELECT Id, Name, 2 as Source FROM Table2
UNION
SELECT Id, Name, 3 as Source FROM Table3




#3
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Geniala solutie! Simpla si eficienta.

...
...
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
...
...
echo "..... (aici afiseze ce am de afisat plus butonul de delete care arata cam asa: <form method='post' action='numepagina.php'>
<button type='submit' class='delete' name='delete' value='delete' title='Sterge comenariul'>Delete</button></form>";

if (isset($_POST['delete'])) {
	 echo $row["Source"];
}
...
...


Pentru inceput, pana sa purced la operatiunea efectiva de delete, ca sa vad ca functioneaza bine, am zis sa fac un test pentru butonul delete si sa vad ca imi afiseaza correct valoarea lui Source. Zis si facut, face, DAR, imi arata pentru TOATE comentariile. Eu ma asteptam (sau as vrea) sa imi arate doar pentru linia pe care sunt si am apasat butonul.

Cum as putea sa fac asta?


LE: Mi-a venit o idee: fac i=1, care se incrementeaza la fiecare comentariu afisat, si, in acelasi timp sa fie si parametru in butonul delete (ceva genul delete1, delete2 etc si doar cand apas pe deletex sa se intample ceva pentru linia aia). Sa vedem daca fuctioneaza...

Edited by colombo2003, 16 January 2017 - 15:11.


#4
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,023
  • Înscris: 24.02.2006
pui un camp tip hidden in form, iar pe onclick-il butoanelor pui o functie in care setezi acel camp si apoi dai submit manual.

#5
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
N-a functionat ideea mea cu "i".
Pe de alta parte, am afisat si id-ul din tabela de unde vine, in combinatie cu valoaea lui Source; si vad ca se afiseaza bine (correct).

@_Smiley_: prima parte (cu hidden) am priceput-o; sa zicem ca prin functie, i-as atribui valoarea (exact ca mai sus, sa stiu id-ul si tabela din care vine). N-am inteles partea cu submit manual... Aici m-ai pierdut.

#6
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,023
  • Înscris: 24.02.2006
nu mai stiam cum se comporta un buton de submit daca-i modifici onclick-ul, am presupus ca nu mai face Submit si doar executa codul dat
dar pare-se ca poti pune o functie pe onclick care sa intoarca true, caz in care totul merge
<input type="submit" value="submit" onclick="return action(id1, source1);" >Delete</button>
function action(id, source)
{
  //set id, source in hidden fields
   return true;
}



#7
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Nu a functionat. Am sters toate comentariile, recenziile si pozele dintr-un foc, cu un singur click...!!! Posted Image

...
...
//tot in bucla while am si asta
if (isset($_POST['delete'])) {
		  if ($row["Source"] == 3) {
			$querydlt = "delete from poze where id = $row[id]";
			$dlt = mysqli_query($dbconfig, $querydlt);
			if ($dlt) {
			  echo "poza stearsa!";
			}
			else {
			  echo "poza nestearsa!";
			}
		   }
		  elseif ($row["Source"] == 2) {
			$querydlt = "delete from recenzii where id = $row[id]";
			$dlt = mysqli_query($dbconfig, $querydlt);
			if ($dlt) {
			  echo "recenzie stearsa!";
			}
			else {
			  echo "recenzie nestearsa!";
			}
		  }
		  else {
			$querydlt = "delete from comments where id = $row[id]";
			$dlt = mysqli_query($dbconfig, $querydlt);
			if ($dlt) {
			  echo "comment sters!";
			}
			else {
			  echo "comment nesters!";
			}
		  }
	   }
...
...

Dar acea fct la onlick nu este js? Or eu am comenturile pe server... Posted Image
Mai sap, mai sap...

#8
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,023
  • Înscris: 24.02.2006
codul tau pare ok, nu prea inteleg cum de a sters totul
functia data de mine este in javascript, ar trebui sa se execute in browser la apasarea unuia din butoanele Delete

pune codul php cu care afisezi acele butoane

#9
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
<?php
require('login/dbconfig.php');
$login_session = $_SESSION['login_user'];

$sqluser = "select id from users where username = '$login_session'";
$res = mysqli_query($dbconfig, $sqluser);
$res1 = mysqli_fetch_array($res);

$sql = "select id, data, comentariu, id_resto, nota, 1 as Source from comments union all select id, data, comentariu, id_resto, nota, 2 as Source from recenzii union all select id, data, poza, id_resto, nota, 3 as Source from poze where id_user = '$res1[0]' order by data DESC";
$result = mysqli_query($dbconfig, $sql);
if (mysqli_num_rows($result) > 0) {
	 while($row = mysqli_fetch_assoc($result)) {
		echo "<div class='commentshow'>" . $row["data"]. " - Rating: " . $row["nota"]. "<form method='post' action='testdeletecomm.php'><button type='submit' class='delete' name='delete' value='delete' title='Sterge comenariul'>Delete</button></form><hr>" . $row["comentariu"]. "</div>";

		if (isset($_POST['delete'])) {
		  //echo $row['Source']. "-" . $row["id"];
		  if ($row["Source"] == 3) {
			$querydlt = "delete from poze where id = $row[id]";
			$dlt = mysqli_query($dbconfig, $querydlt);
			if ($dlt) {
			  echo "poza stearsa!";
			}
			else {
			  echo "poza nestearsa!";
			}
		   }
		  elseif ($row["Source"] == 2) {
			$querydlt = "delete from recenzii where id = $row[id]";
			$dlt = mysqli_query($dbconfig, $querydlt);
			if ($dlt) {
			  echo "recenzie stearsa!";
			}
			else {
			  echo "recenzie nestearsa!";
			}
		  }
		  else {
			$querydlt = "delete from comments where id = $row[id]";
			$dlt = mysqli_query($dbconfig, $querydlt);
			if ($dlt) {
			  echo "comment sters!";
			}
			else {
			  echo "comment nesters!";
			}
		  }
	   }
	 }
}
else {
	 echo "Nu ai scris nici un comentariu.";
}
mysqli_close($dbconfig);
?>



#10
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,023
  • Înscris: 24.02.2006
cred ca trebuie sa mai inveti un pic despre progrmarea in php si folosirea bazelor de date :)
codul tau e complet amestecat si ar dura o gramada sa explic ce nu-i in regula. uite un tutorial, incearca sa-l intelegi si-ti va fi de mare folos: http://www.killersit...ds-with-mysqli/

#11
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Am reusit! :)
Multumesc pentru ajutor!


PS. Se poate inchide!

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate