Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PHP/MySQL] Usuwanie z bazy

Adalberd 24 Kwi 2011 20:59 2707 17
  • #1 24 Kwi 2011 20:59
    Adalberd
    Poziom 13  

    Napisałem skrypt:

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Problem się pojawił po dodaniu header('location: tabauto.php');
    mianowicie firefox zwraca:
    "Firefox wykrył, że serwer przekierowuje żądanie tego zasobu w sposób uniemożliwiający jego ukończenie."
    Chcę żeby po usnięciu rekordu odświeżył stronę, jest jakiś sposób na to?
    Żeby po usunięciu rekordu jednorazowo przekierował do pierwotnej stony.

    0 17
  • #2 24 Kwi 2011 21:58
    makkak
    Poziom 18  

    Usuń spacje i znaki nowego wiersza sprzed <?php

    pomogło?

    0
  • #3 24 Kwi 2011 23:17
    Adalberd
    Poziom 13  

    Niestety nie...
    Wychodzi na to, że używając header nie można odwołać się do tej samej strony.
    Jak zrobię header('location:innastrona.php');
    jest ok...

    0
  • Pomocny post
    #4 24 Kwi 2011 23:35
    makkak
    Poziom 18  

    A tak działa?

    Code:
    <?php
    
     
    require "connect.php";
     
     if(isset($_GET['usun'])) {
             mysql_query("DELETE FROM system_auto.pojazd WHERE pojazd.id ='$_GET[usun]' LIMIT 1");
    header('location: tabauto.php');

    } else {
     
    $query = "SELECT * FROM pojazd";
     
    $result = mysql_query($query, $polacz)
    or die ('problem z tabelka w bazie ');
    $licz_pojazdy = mysql_num_rows($result);
     
     
    $pojazd_naglowek=<<<EOD
     
    <h4 align="center">Lista Samochodów</h4>
    <table width="50%" border="1" align="center">
     
     
    <th>Id</th>
    <th>Marka</th>
    <th>Model</th>
    <th>Rejestracja</th>
    <th>Paliwo</th>
    <th>Pojemnosc</th>
    <th>Akcja</th>
     
     
     
    EOD;
     
    $pojazd_dane = '';
    while($row = mysql_fetch_array($result)) {
     
    $id = $row['id'];
    $Marka = $row['Marka'];
    $Model = $row['Model'];
    $Rejestracja = $row['Rejestracja'];
    $Paliwo = $row['Paliwo'];
    $Pojemnosc = $row['Pojemnosc'];
     
    $pojazd_dane .=<<<EOD
     
     
    <tr>
    <td>$id.</td>
    <td>$Marka</td>
    <td>$Model</td>
    <td>$Rejestracja</td>
    <td>$Paliwo</td>
    <td>$Pojemnosc</td>
    <td><a href=tabauto.php?usun=$id>USUN</a></td>
    </tr>
     
     
    EOD;
     
    }
     
     
    $pojazd_wyswietl =<<<POJAZD
                   $pojazd_naglowek
                   $pojazd_dane
     
     
    POJAZD;
     
    echo "Ilosć pojazdów w bazie: $licz_pojazdy" ;
    echo $pojazd_wyswietl;

    }
    ?>

    0
  • #5 25 Kwi 2011 00:14
    Adalberd
    Poziom 13  

    Działaaa!! aaaa super ulga! tyle się namęczyłem, bardzo dziękuje!
    Niech zgadnę, przed

    Kod: php
    Zaloguj się, aby zobaczyć kod

    nie może być wysłany do przeglądarki żaden html ??

    Teraz czas się zabrać za przycisk "edytuj"....

    0
  • #7 25 Kwi 2011 13:30
    azra
    Poziom 16  

    Kolejny dowód, że czytanie dokumentacji zapobiega wyrywaniu sobie włosów z głowy. Z manuala:
    http://php.net/manual/en/function.header.php

    Cytat:
    header() is used to send a raw HTTP header. See the » HTTP/1.1 specification for more information on HTTP headers.

    Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

    0
  • Pomocny post
    #8 25 Kwi 2011 20:10
    wujek2009
    Poziom 12  

    Filtruj dane, wszelkie $_POST, $_GET aby nikt Cię nie zaatakował. Dlaczego to piszę, ponieważ widzę już, że przy zapytaniu usuwania nie robisz tego. Poza tym sprawdzaj czy zapytanie się poprawnie wykonało, czyli coś na wzór jak podałeś w pierwszym poście:

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Jeśli chodzi o opcje edytuj to sprawa jest prosta, przedstawię Ci mniej więcej zarys.

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Podałem Ci przykładowe rozwiązanie z przykładowymi danymi - sam musisz skleić to w całość.

    0
  • #9 26 Kwi 2011 00:06
    makkak
    Poziom 18  

    wujek: co ciekawe to is_numeric zawsze zwróci Ci fałsz bo traktowane jest jako string.

    0
  • #10 26 Kwi 2011 09:30
    wujek2009
    Poziom 12  

    Jak zwróci fałsz?

    Kod: php
    Zaloguj się, aby zobaczyć kod


    2x wartość true.

    1
  • #11 26 Kwi 2011 09:48
    makkak
    Poziom 18  

    Taaa tylko sprawdź sobie jak to się zachowa jak otrzymasz dane metodą get lub post z pola input.

    Dodano po 3 [minuty]:

    Ahh tu nie było danych z input tylko bezpośrednio z linku, więc zadziała ;) Sorry za małe zamieszanie.

    Dodano po 3 [minuty]:

    Ehh to już całkiem mi się coś pomieszało bo tak i tak działa, a pamiętam że kiedyś miałem z tym problem. A może to było z is_int.

    0
  • #12 17 Maj 2011 00:10
    Adalberd
    Poziom 13  

    Zrobiłem tak jak poniżej, formularz działa, ale dane wysłane z formularza nie chcą się zapisać...żaden błąd też nie wyskakuje. Pewnie złe zapytanie "UPDATE" daje...

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #13 17 Maj 2011 08:39
    wujek2009
    Poziom 12  

    Nigdzie nie widzę zmiennej $id zdeklarowanej, a użyłeś jej dwa razy. W formularzu oraz w zapytaniu.

    0
  • #14 17 Maj 2011 19:28
    Adalberd
    Poziom 13  

    nie pomaga, id w bazie mam AUTO_INCREMENT może to ma jakieś znaczenie?

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #15 17 Maj 2011 19:48
    wujek2009
    Poziom 12  

    ale formularz wysyłasz metodą POST, a warunek masz GET

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #16 17 Maj 2011 20:49
    Adalberd
    Poziom 13  

    Kod: php
    Zaloguj się, aby zobaczyć kod



    też to sprawdzałem, nic nie zmienia.

    0
  • #17 18 Maj 2011 07:42
    wujek2009
    Poziom 12  

    a bo Ty spacje porobiłeś w nazwach, zobacz:

    Kod: html
    Zaloguj się, aby zobaczyć kod


    Więc $_POST[' id']; musi być spacja przed nazwą - ogólnie proponuje ją usunąć z inputów.

    UPDATE: Chociaż teraz sprawdziłem u siebie to nie ma to większego znaczenia - na razie nie mam pomysłów, wrócę to pomyśle.

    0
  • #18 19 Maj 2011 03:14
    Adalberd
    Poziom 13  

    echo '<form action="edytujauto.php?edytuj=' . $id . '" method="post">

    Zabrakło operatora łączenia tekstów.

    0