Skocz do zawartości
bemben1997

Kod nie działa

Rekomendowane odpowiedzi

Witam mam pewien problem z kodem nwm czemu nie działa chodzi o to ze chciałbym wiedzieć co mam nie tak .

<!DOCTYPE html> <html lang="pl">
<head>
<meta charset="UTF-8">
<title>GRSP</title>
</head> <body> <!--KOD FORMULARZA HTML--> <form action="grsp.php" method="post" method="post">   <input type="text" name="id" />   <input type="submit" value="Resetuj GRSP" /> </form> <!--KOD ŁĄCZENIA SIĘ Z BAZĄ DANYCH--> <?php try{
$db = new PDO('mysql:host=mysql3.superhost.pl;dbname=sh191956_panel', 'sh191956_panel', 'qwerty',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}catch (PDOException $e){
print "Błąd połączenia z bazą danych!: " . $e->getMessage() . "<br/>";
die();
} ?> <?php
//OPERATOR TRÓJOPERANDOWY(ODPOWIEDNIK INSTRUKCJI WARUNKOWEJ)
$id = isset($_POST['id']) ? $_POST['id'] : false;
//JEŚLI ISTNIEJE ZMIENNA $_POST O PARAMETRZE `id`...
if(isset($_POST['id'])){
$isPlayer = $db->prepare("SELECT * FROM `Gangs` WHERE `id` = :id");
$isPlayer->bindValue(":id", $id, PDO::PARAM_STR);
if (!$isPlayer->execute()){
    print_r($isPlayer->errorInfo());
}
if($isPlayer->rowCount() > 0)  {
$delete = $db->prepare("UPDATE `Gangs` SET `gRsp`='0' WHERE `id`='%d'" );
$delete->bindValue(":id", $id, PDO::PARAM_STR);
if (!$delete->execute()){
print_r($delete->errorInfo());
}
echo 'Gangowi: '.$id.' został zresetowany respekt!';
}else if(empty($id)){
echo 'This input can not be empty!';
}else{
echo 'Nie ma takiego id gangu!';
}
} ?> </body> </html>

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Co znaczy, że kod nie działa? Rozwiń jakoś swoją wypowiedź :)

Nie wiem jakie masz błędy ale taka rada: dla wartości liczbowych tj. id nie podawaj PDO::PARAM_STR, tylko PDO::PARAM_INT.

W zapytaniu też masz %d a powinno by' raczej :id

Podaj jakieś błędy etc to wtedy coś więcej Ci powiem.

Edytowane przez dawid4157

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Układaj ten kod bardzo Cię o to proszę. Jak nie chce Ci się tego robić ręcznie to "przepuść" go chociaż przez z jakiś układacz kodu np. na codegenerators.pl. Co prawa stworzony był pod PAWN ale nadaje się też do PHP.

 

Tak jak wyżej napisałem, nie chcę się powtarzać. 

Dla pierwszego zapytania(to nie ono powoduje Twój błąd ale popraw je, bo w późniejszym czasie na pewno będziesz mieć z tym problemy)

$isPlayer = $db->prepare("SELECT * FROM `Gangs` WHERE `id` = :id");
$isPlayer->bindValue(":id", $id, PDO::PARAM_INT);

Drugie zapytanie(i ono powoduje błąd):

$delete = $db->prepare("UPDATE `Gangs` SET `gRsp`='0' WHERE `id`=:id" );
$delete->bindValue(":id", $id, PDO::PARAM_INT);

W parametrze WHERE miałeś ustawione `id`= '%d' , czego w PHP się nie stosuje. Format ten jest używany w PAWN i zastępuje daną część kodu liczbą całkowitą. W PHP skoro już bindujesz zmienną $id to używaj jej w postaci :id a nie %d, bo to nic nie da, choćbyś nie wiem jak kombinował :)

 

Ps. Dlaczego w kodzie formularza dwa razy inicjujesz parametr 

method="post"

? W zupełności raz wystarczy :P

Edytowane przez dawid4157

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×