Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: usuń z 2 tablic
Forum PHP.pl > Forum > Bazy danych > MySQL
JOHNY
Mam taki problem bo nie wiem jak w jednym zapytaniu usunąć zawartość tablicy gdzie sa przechowywane komentarze questionmark.gif
tablice:
news
id|autor|.... / reszta nieważna

coments
id|news_id|...

id z news = news_id z coments // wiadoma sprawa
I nie wiem jak dokończyć zapytanie

[sql:1:22606cacb1]
$query = "DELETE FROM news, coments WHERE id='$id'";
[/sql:1:22606cacb1]

Pytając tak to mi usunie tylko newsa z ID i komentarza z ID zamiast komenta z NEWS_ID

Czy można jak w przypadku form news, coments zastosować coś podobnego w WHERE np: WHERE id='$id', news_id='$id' questionmark.gif ale chyba tak się nie da sad.gif

Próbowałem też tak
[sql:1:22606cacb1]
$query = "DELETE FROM newspl, coments WHERE newspl.id='$id' AND coments.news_id='$id'";[/sql:1:22606cacb1]

Ale też lipa
Czy jest na to jakiś sposób questionmark.gif
FiDO
Musisz to rozbic na 2 zapytania:
[sql:1:be5767097e]DELETE FROM komentarze WHERE news_id = $id;[/sql:1:be5767097e]
[sql:1:be5767097e]DELETE FROM newsy WHERE id = $id;[/sql:1:be5767097e]
JOHNY
Hmm no nie wiem czy to ma jakieś znaczenie jeśli mam function
standardowo to funkcja tak wygladala
[php:1:d81f9f4dc9]<?php
function del($id, $co="newspl") {

$query = "DELETE * FROM $co WHERE id='$id'";
$wynik = mysql_query($query);

}
?>[/php:1:d81f9f4dc9]

A po modyfikacji
[php:1:d81f9f4dc9]<?php
function del($id, $co="newspl", $co1="coments") {

$query = "DELETE * FROM $co WHERE id='$id'";
$query = "DELETE * FROM $co1 WHERE news_id='$id'";
$wynik = mysql_query($query);
echo '<meta http-equiv="refresh" content="0; url=index.php?pg=newspl">';

}
?>[/php:1:d81f9f4dc9]
chociaż nie wiem czy czegoś nie skopałem to i tak nie chce trybić sad.gif
Majdan
[php:1:735b6cde2e]<?php
function del($id, $co="newspl", $co1="coments") {

$query1 = "DELETE * FROM $co WHERE id='$id'";
$query2 = "DELETE * FROM $co1 WHERE news_id='$id'";
$wynik1 = mysql_query($query1);
$wynik2 = mysql_query($query2);
echo '<meta http-equiv="refresh" content="0; url=index.php?pg=newspl">';

}
?>[/php:1:735b6cde2e]
JOHNY
Majdan najgorsze z tego wszystkiego jest to że tak też próbowałem i nawet nie drgnie odświeży strone i nic dalej w bazie jest sad.gif <płacze>

link wyglada tak do tego
[php:1:2c5d7068e1]<?php
echo "<TD align=center class="pole"><a href=index.php?pg=newspl&op=del&id=".$row['id'].">Usuń</a></TD>n";
?>[/php:1:2c5d7068e1]
Pokazuje nr id ale nie chce usunąć z tych 2 tablic

Na pojedynczym query chodzi ale jak sa 2 to juz nie
Majdan
[php:1:e52e60ad32]<?php
$query1 = "DELETE * FROM $co WHERE id='$id'";
$query2 = "DELETE * FROM $co1 WHERE news_id='$id'";
if (!$wynik1 = mysql_query($query1)) echo mysql_errno($link) . ": " . mysql_error($link). "n";
if(!$wynik2 = mysql_query($query2)) echo mysql_errno($link) . ": " . mysql_error($link). "n";
?>[/php:1:e52e60ad32]
Sprawdź co Ci teraz wyświetli.

EDIT: W miejsce '$link' wstaw identyfikator połączenia z bazą.
JOHNY
Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in C:Apache2htdocsrc2adminnewspl.php on line 25

25 i 26 to twoje pierwsze if i 2 if
Majdan
Zmieniłem posta.
JOHNY
1064: Something is wrong in your syntax obok '* FROM newspl WHERE id='16'' w linii 1 1064: Something is wrong in your syntax obok '* FROM coments WHERE news_id='16'' w linii 1
cichy
Powinno być:
[php:1:213376e838]<?php
$query1 = "DELETE FROM $co WHERE id='$id'";
$query2 = "DELETE FROM $co1 WHERE news_id='$id'";
?>[/php:1:213376e838]
bez * miedzy delete i from

Pozdro
JOHNY
Z * nie ma się co dziwić ze nie usunąłem skrypta poprawiałem do 4 rano zeby dojść do tego i nic
No teraz mi wypisuje że:
1046: Nie wybrano żadnej bazy danych 1046: Nie wybrano żadnej bazy danych

jak nie wybrano jak jest wybrane ID
Majdan
[php:1:e89aa6ac53]<?php
$host = "localhost";
$user = "";
$haslo = "";
$baza = "";

$co = "";
$co1 = "";
$id = "";

$id = mysql_connect($host, $user, $haslo);
if (!mysql_select_db($baza, $id)) echo mysql_errno($id) . ": " .
mysql_error($id). "n";

$query1 = "DELETE FROM " . $co . " WHERE id='" . $id . "'";
$query2 = "DELETE FROM " . $co1 . " WHERE news_id='" . $id . "'";

if (!$wynik1 = mysql_query($query1)) echo mysql_errno($id) . ": " .
mysql_error($id). "n";
if(!$wynik2 = mysql_query($query2)) echo mysql_errno($id) . ": " .
mysql_error($id). "n";
?>[/php:1:e89aa6ac53]
JOHNY
Wielkie dzięki Majdan
trochę przemodelowałem kod teraz wygląda tak

[php:1:aa5a5c0537]<?php
function del($id, $co = "newspl", $co1 = "coments") {

$query1 = "DELETE FROM " . $co . " WHERE id='" . $id . "'";
$query2 = "DELETE FROM " . $co1 . " WHERE news_id='" . $id . "'";

if (!$wynik1 = mysql_query($query1)) echo mysql_errno($id) . ": " .
mysql_error($id). "n";
if(!$wynik2 = mysql_query($query2)) echo mysql_errno($id) . ": " .
mysql_error($id). "n";
echo '<meta http-equiv="refresh" content="0; url=index.php?pg=newspl">';
}
?>[/php:1:aa5a5c0537]

Działa jak natura chciała biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.