Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie do bazy - DELETE FROM xxx WHERE ID
Marusz
post 19.05.2003, 22:20:28
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

Ostrzeżenie: (0%)
-----


Chcac brnac dalej w tajniki php i MySQL, natrafilem na kolejny klopot - tym razem w logach pusto. Stworzylem linka:
Kod
echo "<a href='$PHP_SELF?action=delete_record&row=$row[3]'>skasuj</a><br>";

i potem funkcje:
Kod
function delete_record() {

$roz_del_db = "DELETE FROM adresy WHERE ID = $_GET[row]";

$rezultat = mysql_query($roz_del_db);

}

No i gdy klikam na linka, przegladarka dobrze go rozpoznaje (w zaleznosci od ID wpisu): http://serwer/php/baza.php?action=delete_record&row=31 ale nic sie nie kasuje. W logach, jak wspomnialem na wstepie, cisza. Gdzie jest problem? Powiem tylko, ze napisalem sobie to na podstawie ksiazki i kurcze nie wychodzi sad.gif
Go to the top of the page
+Quote Post
DeyV
post 19.05.2003, 22:25:06
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




zrób tak:
[php:1:c0de10c95f]<?php
$pyt = "DELETE FROM adresy WHERE ID = $_GET[row] ";
$rezultat = mysql_query($pyt) or die ("Błąd w pytaniu $pyt);
?>[/php:1:c0de10c95f]
Jeżeli się wyświetli błąd, wrzuć otrzymane zapytanie do PHPmyAdmin i zobacz, co się stanie.
I jeszcze cos - przed wprowadzeniem danych do zapytania, należy je choć odrobinę skontrolować, choćby [php:1:c0de10c95f]<?php
$row= addslashes($_GET[row] );
?>[/php:1:c0de10c95f]


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Marusz
post 19.05.2003, 22:58:44
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

Ostrzeżenie: (0%)
-----


No i kurcze nie dziala. Wkleje calosc jaka mam:
[php:1:d7bab28120]<?
$wynik = mysql_query("SELECT * FROM adresy ORDER BY $sort_b");

while($row = mysql_fetch_row($wynik)) {
echo "uin: " . $row[3] . "<br>";
echo "imie: " . $row[0] . "<br>";
echo "nazwisko: " . $row[1] . "<br>";
echo "<b>numer gg: </b>" . $row[2] . "<br>";
global $PHP_SELF;
echo "<a href='$PHP_SELF?action=delete_record&row=$row[3]'>skasuj</a><br>";
echo "<br>";
}

function delete_record() {

$pyt = "DELETE FROM adresy WHERE ID = $_GET[row] ";
$rezultat = mysql_query($pyt) or die ("Błąd w pytaniu $pyt");

}

?>[/php:1:d7bab28120]

Tak to wyglada po modyfikacji zrobionej przez Ciebie. Dalej nie wywala nigdzie bledu, wszystko niby OK, a rekord nadal istnieje...
Go to the top of the page
+Quote Post
DeyV
post 19.05.2003, 23:36:14
Post #4





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




A ... to bedzie nieco idiotyczne pytanie - gdzie wywołujesz, uruchamiasz ta funkcję? Bo w podanym przez Ciebie kodzie brakuje zapisu typu :
[php:1:bdb2f9a9d0]<?php
if ($_REQUEST['action'] == 'delete_record'){
delete_record()
}
?>[/php:1:bdb2f9a9d0]


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Fo
post 20.05.2003, 13:00:24
Post #5





Grupa: Zarejestrowani
Postów: 401
Pomógł: 0
Dołączył: 18.04.2003
Skąd: Trójmiasto

Ostrzeżenie: (0%)
-----


a zerznales poprostu przez copy/paste to co napisal DeyV ? bo tutaj --> [php:1:b0a46b1214]<?php
$pyt = "DELETE FROM adresy WHERE ID = $_GET[row] ";
$rezultat = mysql_query($pyt) or die ("Błąd w pytaniu $pyt);
?>
[/php:1:b0a46b1214] chyba brakuje jednego -->"<-- koncowka powinna byc taka chyba [php:1:b0a46b1214]$rezultat = mysql_query($pyt) or die ("Błąd w pytaniu $pyt"); [/php:1:b0a46b1214]

heh a wlasnie gdzie masz wywolanie do funkcji ktora usuwa questionmark.gif
Go to the top of the page
+Quote Post
Marusz
post 20.05.2003, 13:41:03
Post #6





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

Ostrzeżenie: (0%)
-----


Nie. nie zerznalem (to nie w moim stylu) winksmiley.jpg A co do
Cytat
heh a wlasnie gdzie masz wywolanie do funkcji ktora usuwa questionmark.gif

Chyba nie rozumiem. Generalnie zrobilem teraz tak:

[php:1:df4887cf92]<?php
while($row = mysql_fetch_row($wynik)) {
echo "uin: " . $row[3] . "<br>";
echo "imie: " . $row[0] . "<br>";
echo "nazwisko: " . $row[1] . "<br>";
echo "<b>numer gg: </b>" . $row[2] . "<br>";
global $PHP_SELF;
echo "<a href='$PHP_SELF?action=delete_record&row=$row[3]'>skasuj</a><br>";
echo "<br>";
}

if ($_REQUEST['action'] == 'delete_record'){
delete_record()
}

function delete_record() {

$pyt = "DELETE FROM adresy WHERE ID = $_GET[row] ";
$rezultat = mysql_query($pyt) or die ("Błąd w pytaniu $pyt");

}
?>[/php:1:df4887cf92]
No i dalej nie dziala. I tak jak mowilem wczesniej: nie wyskakuje w ogole blad ani nic.
Go to the top of the page
+Quote Post
kurtz
post 20.05.2003, 13:48:50
Post #7





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

Ostrzeżenie: (0%)
-----


Cytat
No i dalej nie dziala. I tak jak mowilem wczesniej: nie wyskakuje w ogole blad ani nic.
troszke dziwne ale:
1) dodaj echo $pyt; przed wykonaniem.
2) dodaj na koniec pliku echo mysql_error();

tak czy siak cosik na oko tutaj nie gra..


pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
Marusz
post 20.05.2003, 14:53:44
Post #8





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

Ostrzeżenie: (0%)
-----


Ha, niezly numer! Oczywiscie zrobilem wszystko co mi kazaliscie... i cos sie ruszylo. Kod obecnie wyglada tak:
[php:1:34e9579a9e]<?php
if ($_REQUEST["action"] == "delete_record"){
delete_record();
}

function delete_record() {

$pyt = "DELETE FROM adresy WHERE ID = $_GET[row] ";
$rezultat = mysql_query($pyt) or die ("Błąd w pytaniu $pyt");

}
?>[/php:1:34e9579a9e]
Jak "latwo" zauwazyc, pozmienialem z apostrofow na cudzyslowy w regule $_REQUEST. I dziala! Ale! Aby skasowac jakikolwiek rekord, musze klikac na linka skasuj po 2 razy! Dlaczego?
Go to the top of the page
+Quote Post
[fisher]
post 21.05.2003, 00:24:36
Post #9





Grupa: Zarejestrowani
Postów: 151
Pomógł: 0
Dołączył: 4.03.2003

Ostrzeżenie: (0%)
-----


[php:1:cfbe37b4d9]<?php
function delete_record() {

global $_GET[row];

$pyt = "DELETE FROM adresy WHERE ID = $_GET[row] ";
$rezultat = mysql_query($pyt) or die ("Błąd w pytaniu $pyt");
}
?>[/php:1:cfbe37b4d9]

nie wnikalem zbytnio, ale widze brak global'a w funkcji, wiec moze tak pojdzie ... ?


--------------------
Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn<
Go to the top of the page
+Quote Post
Wankster
post 21.05.2003, 00:53:31
Post #10





Grupa: Zarejestrowani
Postów: 208
Pomógł: 0
Dołączył: 19.04.2003

Ostrzeżenie: (0%)
-----


Cytat
[..]You don't need to do a global $_GET; to access it within functions or methods, as you do with $HTTP_GET_VARS.[..]


[php:1:db98c5549f]<?php

if ( $_REQUEST["action"] == "delete_record" )
{
delete_record();
}

function delete_record() {
$pyt = mysql_query( "DELETE FROM adresy WHERE ID = " . $_GET['row'] ) or die( mysql_error() );
}

?>[/php:1:db98c5549f]

A tak?
Go to the top of the page
+Quote Post
KaMeLeOn
post 21.05.2003, 01:04:39
Post #11





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat
"][php:1:97406cae9b]<?php
[...]
global $_GET[row];
[...]
?>[/php:1:97406cae9b]
nie wnikalem zbytnio, ale widze brak global'a w funkcji, wiec moze tak pojdzie ... ?

No Ty chyba żartowałeś... biggrin.gif
global dla tablicy $_GET :?:


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
[fisher]
post 21.05.2003, 01:06:56
Post #12





Grupa: Zarejestrowani
Postów: 151
Pomógł: 0
Dołączył: 4.03.2003

Ostrzeżenie: (0%)
-----


Cytat
No Ty chyba żartowałeś...  :D  
global dla tablicy $_GET  :?:


fakt, wymsknelo mnie sie smile.gif


zdrovka zycze


--------------------
Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn<
Go to the top of the page
+Quote Post
Marusz
post 21.05.2003, 08:13:52
Post #13





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

Ostrzeżenie: (0%)
-----


[php:1:912fb3bbb4]<?php

if($_GET["action"] == "del"){
delete_record();
}

function delete_record() {

$pyt = "DELETE FROM adresy WHERE ID = $_GET[row]";
$rezultat = mysql_query($pyt);
}

$wynik = mysql_query("SELECT * FROM adresy ORDER BY $sort_b");

while($row = mysql_fetch_row($wynik)) {
echo "uin: " . $row[3] . "<br>";
echo "imie: " . $row[0] . "<br>";
echo "nazwisko: " . $row[1] . "<br>";
echo "<b>numer gg: </b>" . $row[2] . "<br>";
global $PHP_SELF;
echo "<a href='$PHP_SELF?action=del&row=$row[3]'>skasuj</a><br>";
echo "<br>";
}

?>[/php:1:912fb3bbb4]
Przeczytalem wszystkie Wasze porady i napisalem sobie takie cos, co widzicie powyzej, i... dziala! biggrin.gif Dzieki za pomoc!
Go to the top of the page
+Quote Post
DeyV
post 21.05.2003, 10:25:02
Post #14





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Jedna uwaga - przydatna na przyszłość.
Jeżeli zamieżasz korzystać z jakiejś funkcji, to dobrym nawykiem jest jej zdefiniowanie przed użyciem.
W php 4 nie ma to znaczenia, ale w innych jezykach, (również w php 5) inaczej może nie zadziałać.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Marusz
post 21.05.2003, 10:32:57
Post #15





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 16.05.2003
Skąd: POLAND

Ostrzeżenie: (0%)
-----


Czy w ostatnim listingu ktory wkleilem zrobilem dobrze? Bo napisalem funkcje wyzej niz kod ktory owa funkcje wywoluje smile.gif Mam jeszcze ostatnie pytanie do tego watku. W petli wyciagajacej dane z bazy mysql zrobilem sobie:
[php:1:d8c72ba74b]<?php

echo "<b>numer gg: </b>" . "$gg";

?>[/php:1:d8c72ba74b]
i zdefiniowalem wyzej:
[php:1:d8c72ba74b]<?php

$gg = "<a href="gg:" . $row[2] . ""><img src="http://www.gadu-gadu.pl/users/status.asp?id=" . $row[2] . "" alt="Status GG" align="absmiddle" width="16" height="16" hspace="3" border="0"></a>";

?>[/php:1:d8c72ba74b]

wszystko by bylo dobrze, gdyby nie fakt, ze zmienna $gg musze wsadzic rowniez do petli, a nie gdzies w stopce strony - dlaczego tak sie dzieje? Jesli wstawie gdzies wyzej, to zamiast numerka, pojawia sie $row[2]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:50