Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mysql usuwanie.Nie działa
Forum PHP.pl > Forum > PHP
sajborg
Siemka mam kilka checkbox o nazwie usun[] taraz daje taki kodzik


[php:1:b8235fa313]<?
if($action=="wykonaj"){
if ($act=="usun"){
$ids = join(' AND id=',$_POST['usun']);
$query=mysql_query("DELETE FROM mecze_typer WHERE id='$ids'") or Die("Nie udało się!");


}
}

?>[/php:1:b8235fa313]
Teoretycznie powinno mi usunąć wszystkie wpisy.Ale usuwa tylko jeden chociaz zmienna $ids ma taką postać

20 AND id=21 AND id=22 AND id=23

czyli

[php:1:b8235fa313]<?

$query=mysql_query("DELETE FROM mecze_typer WHERE id=20 AND id 21 AND id=22 AND id=23") or Die("Nie udało się!");

?>[/php:1:b8235fa313]

ALE NIE DZIAŁA DLACZEGO questionmark.gif
rzseattle
jak dla mnie to pytanie wyglada inaczej:

... where id='10 and id=30'


Daj printa to sam zobaczysz ze $ids masz w cudzyslowach,a stringa '10 and id=30' pewnie nie masz w bazie winksmiley.jpg
sajborg
No własnie nie ma w ' ' jest samo 20 AND ....
rzseattle
Cytat
No własnie nie ma w ' '  jest samo 20 AND ....


a mozna jasniej questionmark.gif

bo tobie chyba chodzilo o zapytanie

Kod
DELETE FROM mecze_typer WHERE id=$ids


pozatym zamiast AND chyba OR powinien byc
sajborg
OR=albo
AND= i

a ja chcem zeby usuneło id=22 i id=23
rzseattle
Cytat
OR=albo
AND= i

a ja chcem zeby usuneło id=22 i id=23


OR=lub

usun wiersze gdzie id ma wartosc 10 lub 20 lub 30 :wink:
KaMeLeOn
W tym wypadku musisz użyć AND...
Wykonaj zapytanie na surowo i sprawdź czy działa, czyli:
[php:1:d13bd02d06]<?php
$link = mysql_connect('...');
$query=mysql_query('DELETE FROM mecze_typer WHERE id=20 AND id=21 AND id=22 AND id=23', $link) or Die("Nie udało się!");
?>[/php:1:d13bd02d06]
PS. Sprawdź też czy masz rekordy o podanych ID.
rzseattle
Cytat
W tym wypadku musisz użyć AND


a czemu akurat trza AND?

[sql:1:0a4148811d]DELETE FROM `uzytkownicy` WHERE id = 1 OR id = 10[/sql:1:0a4148811d]

Cytat
Skasowane rekordy: 2 (Wykonanie zapytania trwało 0.0226 sekund(y))
FiDO
Alternatywne rozwiazanie:
[sql:1:522b151f26]DELETE FROM tabela WHERE id IN (21,22,23);[/sql:1:522b151f26]
PMadej
Cytat
W tym wypadku musisz użyć AND...

Przy czymś takim masz błąd logiczny ... usuń costam gdzie id=10 i id=20
przecież dla danego rekordu możesz mieć tylko jedną wartość id więc musi być zastosowane OR czyli LUB
rzseattle
Cytat
Cytat
W tym wypadku musisz użyć AND...

Przy czymś takim masz błąd logiczny ... usuń costam gdzie id=10 i id=20
przecież dla danego rekordu możesz mieć tylko jedną wartość id więc musi być zastosowane OR czyli LUB


ano wlasnie smile.gif
KaMeLeOn
Cytat
Przy czymś takim masz błąd logiczny ... usuń costam gdzie id=10 i id=20  
przecież dla danego rekordu możesz mieć tylko jedną wartość id więc musi być zastosowane OR czyli LUB

Nic nie musi... może być.
Cytat
Siemka mam kilka checkbox o nazwie usun[] [...]

Rozumiem, że checkboxy są generowane na podstawie danych z bazy, więc nie będzie "błędu logicznego"...
rzseattle
Cytat
Rozumiem, że checkboxy są generowane na podstawie danych z bazy, więc nie będzie "błędu logicznego"...


hmm az sprawdzilem,
AND poprostu nie dziala jesli dasz ...id=2 AND id=3 to poprostu nie skasuje zadnego (zamiast skasowac dwoch), natomiast OR dziala bez problemu i kasuje 2 rekordy

pozatym co do tego ma generowanie checkboksow z bazy do wyrazenia logicznego??
wiesio
nie mozeszz skasowac wielu rekordow naraz
musisz uzyc foreach ktora pojedzie po tablicy i skasuje po kolei
[/b]
rzseattle
Cytat
nie mozeszz skasowac wielu rekordow naraz
musisz uzyc foreach ktora pojedzie po tablicy i skasuje po kolei

A to niby czemu questionmark.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.