Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] skrypt
Forum PHP.pl > Forum > Przedszkole
stypkalukasz
Witam. Mam taki skrypcik. Powinien usuwać wybrany wiersz z bazy danych. Tymczasem nie działa jakoś poprawnie.
może rzucicie okiem??
  1. <form action="" method="post"> 
  2. <select name="klub" onchange="this.form.submit()"> 
  3. <option value="">Wybierz dział</option> 
  4. <option value="Legia Warszawa">Legia Warszawa</option> 
  5. <option value="Wisła Kraków">Wisła kraków</option> 
  6. <option value="Pogoń Szczecin">Pogoń Szczecin</option>
  7. <option value="Górnik Łęczna">Górnik Łęczna</option>
  8. <option value="www">www</option> 
  9. </select> 
  10. </form> 
  11.  
  12. <?php 
  13.  
  14. // parametry serwera 
  15. $serwer = "localhost"; // nazwa serwera mysql 
  16. $login = "root"; // login do bazy 
  17. $haslo = "krasnal"; // haslo do bazy 
  18. $baza  = "skarb_kibica"; // nazwa bazy 
  19. $tabela = "dane"; // nazwa tabeli 
  20.  
  21. $klub = $_POST['klub']; 
  22.  
  23. if($klub) { 
  24.  
  25. // łączymy się z bazą danych 
  26. if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) { 
  27.  
  28. // zapytanie do bazy danych 
  29. $wynik = ("delete * FROM dane WHERE klub = '.$klub.'")
  30. or die("Błąd w zapytaniu!"); 
  31.  
  32. } 
  33. else echo "Nie mogę połączyć się z bazą danych!"; 
  34.  
  35.  
  36.  
  37. } 
  38.  
  39. ?>

Powinien usuwać wiersz który wybierma z listy rozwijanej (np. Wisła Kraków) i przechowywany pod zmienną $klub.
nospor
  1. <?php
  2. $wynik = ("delete * FROM dane WHERE klub = '.$klub.'")
  3. ?>
ze jak?
1) http://pl.php.net/manual/pl/function.mysql-query.php
2) naucz sie lączyc ciagi

  1. <?php
  2. $wynik = mysql_query("delete * FROM dane WHERE klub = '$klub'")
  3. ?>
stypkalukasz
Jak dodałem mysql_query to jest błąd w zapytaniu:(
nospor
Wiesz, to wywal mysql_query() i bledu miec nie bedziesz... tongue.gif

Poprawiles calosc jak ci podalem? Jesli tak to zrob jeszcze tak:
  1. <?php
  2. $sql = "delete * FROM dane WHERE klub = '$klub'";
  3. $wynik = mysql_query($sql) or die("Zapytanie: $sql ----- blad:".mysql_error());
  4. ?>

I zapamietaj te skladnie do konca zycia
stypkalukasz
Witam ponownie.
Miałem ostatnio małą przerwę ale już wracam do pracy.
Zmodyfikowałem kod o który rozchodzi się powyżej według sugestii:

  1. <form action="" method="post"> 
  2. <select name="klub" onchange="this.form.submit()"> 
  3. <option value="">Wybierz nazwę klubu:</option> 
  4. <option value="Legia Warszawa">Legia Warszawa</option> 
  5. <option value="Wisła Kraków">Wisła kraków</option> 
  6. <option value="Pogoń Szczecin">Pogoń Szczecin</option>
  7. <option value="Górnik Łęczna">Górnik Łęczna</option> 
  8. <option value="Widzew ŁódĽ">Widzew ŁódĽ</option>
  9. <option value="Groclin Grodzisk Wielkopolski">Groclin Grodzisk Wielkopolski</option>
  10. <option value="Wisła Płock">Wisła Płock</option>
  11. <option value="Zagłębie Lubin">Zagłębie Lubin</option>
  12. <option value="Korona Kielce">Korona Kielce</option>
  13. <option value="Odra Wodzisław &brvbar;l&plusmn;ski">Odra Wodzisław &brvbar;l&plusmn;ski</option>
  14. <option value="Górnik Zabrze">Górnik Zabrze</option>
  15. </select> 
  16. </form> 
  17.  
  18. <?php 
  19.  
  20. // parametry serwera 
  21. $serwer = "localhost"; // nazwa serwera mysql 
  22. $login = "root"; // login do bazy 
  23. $haslo = "krasnal"; // haslo do bazy 
  24. $baza  = "skarb_kibica"; // nazwa bazy 
  25. $tabela = "dane"; // nazwa tabeli 
  26.  
  27. $klub = $_POST['klub']; 
  28.  
  29. if($klub) { 
  30.  
  31. // łączymy się z bazą danych 
  32. if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) { 
  33.  
  34. // zapytanie do bazy danych 
  35. $sql = "delete * FROM dane WHERE klub = '$klub'";
  36. $wynik = mysql_query($sql) or die("Zapytanie: $sql ----- blad:".mysql_error());
  37. or die("Błąd w zapytaniu!"); 
  38.  
  39. } 
  40. else echo "Nie mogę połączyć się z bazą danych!"; 
  41.  
  42. // wyświetlany wyniki zapytania 
  43. while($rek = mysql_fetch_array($wynik)) { 
  44. echo $rek['tresc']."<br />"; 
  45. } 
  46. } 
  47.  
  48. ?>


No ale niestety znowu coś nie tak. Bardzo proszę o rzucenie okiem. Wyświtla błąd: unexpected T_LOGICAL_OR .

PS. Szybko przypominam problem: skrypt ma usuwać z bazy danych dane klubu którego nazwę wybieramy z menu rozwijanego zdefiniowanego na początku skryptu.
Pride
nieche mi sie tego testowac ale... mysql_close(); to powinno byc na koncu skryptu tongue.gif Bo jak zamykasz połaczenie z bazą to jak on ma ci coś wczytac?
Danone
Zamiast tak w 29 linii:

  1. <?php
  2. if($klub)
  3. ?>



Zrób tak:


  1. <?php
  2. if(isset($klub)){
  3. }
  4. ?>



i jeszcze w linii 35 zamiast:

  1. <?php
  2. $sql = "delete * FROM dane WHERE klub = '$klub'";
  3. ?>



Zrób:


  1. <?php
  2. $sql = "delete * FROM dane WHERE klub = ".$klub."";
  3. ?>


Powinno pomóc
Pride
Jeszcze tak patrze... po co zasmieciac sobie skrypt zbednymi zmiennymi? snitch.gif
Zamiast:
  1. <?php
  2. if($klub)
  3. ?>

nawet nie tak jak powiedzial przedmówca ale:
  1. <?php
  2. if(isset($POST['klub']))
  3. ?>
Danone
Po prostu pokazałem, jak ma być przerobione ze zmiennymi takimi jak sobie autor narzucił smile.gif
stypkalukasz
Dzięki Waszej pomocy jestem już chyba blisko rozwiązania problmu. Wyświetla mi się teraz błąd: Zapytanie: delete * FROM dane WHERE klub = Odra Wodzisław Śląski ----- blad:Something is wrong in your syntax obok '* FROM dane WHERE klub = Odra Wodzisław Śląski' w linii 1

Sprawdziłem baze danych i wszystko jest ok: nazwa tabeli, klubu. Składnia zapytania do bazy chyba też jest ok. Co Wy na to?
Cienki1980
Porównaj dwa zapisy:
  1. DELETE * FROM ...

i
  1. DELETE FROM ....


Aaaa i jeszcze jedno
jeżeli klub to pole varchar to przydałoby się nazwę klubu wziąć w 'tutaj nazwa klubu'
drPayton
A co się dziwić, jak każdy radzi co innego i to takie bzdury:
@Pride:
  1. <?php
  2. if(isset($POST['klub']))
  3. ?>

Co to jest $POST?
@Danone:
Cytat:
Zamiast:
  1. <?php
  2. $sql = "delete * FROM dane WHERE klub = '$klub'";
  3. ?>

Zrób:
  1. <?php
  2. $sql = "delete * FROM dane WHERE klub = ".$klub."";
  3. ?>

?
Marsz do przedszkola tongue.gif
Ehhh
Pride
Cytat(drPayton @ 21.11.2007, 22:43:30 ) *
A co się dziwić, jak każdy radzi co innego i to takie bzdury:
@Pride:
  1. <?php
  2. if(isset($POST['klub']))
  3. ?>

Co to jest $POST?

ohmy.gif jedna mała literówka a dokladnie brak _ :|
benes
działa na 100%%%%

Kod
<form action="" method="post">
<select name="klub" onchange="this.form.submit()">
<option value="">Wybierz dział</option>
<option value="Legia Warszawa">Legia Warszawa</option>
<option value="Wisła Kraków">Wisła kraków</option>
<option value="Pogoń Szczecin">Pogoń Szczecin</option>
<option value="Górnik Łęczna">Górnik Łęczna</option>
<option value="www">www</option>
</select>
</form>

<?php

// parametry serwera
$serwer = "localhost";  // nazwa serwera mysql
$login  = "root";  // login do bazy
$haslo  = "krasnal";  // haslo do bazy
$baza   = "skarb_kibica";  // nazwa bazy
$tabela = "dane";  // nazwa tabeli

$klub = mysql_escape_string($_POST['klub']);

if(isset($klub)) {
    
    // łączymy się z bazą danych
    if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
        
        // zapytanie do bazy danych
       $query = "delete from dane where klub = '$klub'";  
        if(!@mysql_query($query)) die("Błąd w zapytaniu!");
        
        mysql_close();
    } else {
    echo 'Nie mogę połączyć się z bazą danych!';
    }
    
    
    
}

?>
benes
ewentualnie tak
  1. <form action="" method="post"> 
  2. <select name="klub" onchange="this.form.submit()"> 
  3. <option value="">Wybierz dział</option> 
  4. <option value="Legia Warszawa">Legia Warszawa</option> 
  5. <option value="Wisła Kraków">Wisła kraków</option> 
  6. <option value="Pogoń Szczecin">Pogoń Szczecin</option>
  7. <option value="Górnik Łęczna">Górnik Łęczna</option>
  8. <option value="www">www</option> 
  9. </select> 
  10. </form> 
  11.  
  12. <?php 
  13.  
  14. // parametry serwera 
  15. $serwer = "localhost"; // nazwa serwera mysql 
  16. $login = "root"; // login do bazy 
  17. $haslo = "krasnal"; // haslo do bazy 
  18. $baza  = "skarb_kibica"; // nazwa bazy 
  19. $tabela = "dane"; // nazwa tabeli 
  20.  
  21. $klub = mysql_escape_string($_POST['klub']); 
  22.  
  23. if(isset($klub)) { 
  24. if (!@mysql_connect($serwer, $login, $haslo) or !@mysql_select_db($baza)) exit("Nie mogę połączyć się z bazą danych!");
  25. if(!@mysql_query("delete from dane where klub = '$klub'")) die("Błąd w zapytaniu!"); 
  26.  
  27. } 
  28. ?>
-stypkalukasz-
Witam ponownie.
Sprawdziłem kod i dziala poprawnie.
Mam tylko jeszcze jedną prośbę. Chciałbym zrobić w ten sposób, że jezeli danego klubu który chcę usunąć z bazy danych nie ma w bazie to jeżeli wybiorę go z listy do skasowania to żeby wyświetlał mi się komunikat że danego klubu nie ma w bazie.
stypkalukasz
Acha. I jeszcze da się ten skrypt przekształcić tak, abym zamiast listy rozwijanej wpisywał w polu tekstowym nazwę drużynu do usunięcia?
Moli
W tym kodzie mysql_escape_string nie zadziała, ta funkcja musi być wywołana po połaczeniu z baza danych.
stypkalukasz
Przerobiłem dwa skrypty i wyszło mi coś takiego:
PIERWSZY: wpisuję w nim nazwę piłkarza którego chcę usunąć:
  1. <title>usuwanie klubów z bazy danych</title>
  2. </head>
  3.  
  4. <h1>usuwanie klubów z bazy danych</h1>
  5.  
  6. <form action="wstaw_ksiazke.php" method="post">
  7. <table border="0">
  8.  
  9. <tr><td>Piłkarz</td><td> <input type="text" name="pilkarz" maxlength="30" size="30"><br /></td></tr>
  10.  
  11. <tr><td colspan="2"><input type="submit" value="Usuń"></td></tr>
  12. </table>
  13. </form>
  14. </body>
  15. </html>


DRUGI: powinien usuwać z bazy nazwę którą podałem wcześniej:
  1. <html>
  2. <head>
  3. <title>usuwanie klubów z bazy danych</title>
  4. </head>
  5. <body>
  6. <h1>usuwanie klubów z bazy danych </h1>
  7. <?php
  8.  
  9.  
  10. $pilkarz=$HTTP_POST_VARS['pilkarz'];
  11.  
  12.  
  13. if (!$pilkarz)
  14. {
  15.  echo 'Nie podano wszystkich potrzebnych danych.<br />'
  16. .'Wróć do poprzedniej strony i spróbuj ponownie.';
  17.  exit;
  18. }
  19.  
  20.  
  21. $pilkarz = addslashes($pilkarz);
  22.  
  23.  
  24. @ $db = mysql_pconnect('localhost', 'root', 'krasnal');
  25.  
  26. if (!$db)
  27. {
  28.  echo 'Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';
  29.  exit;
  30. }
  31.  
  32. mysql_select_db('skarb_kibica');
  33. $zapytanie = "delete from pilkarze where values ('".$pilkarz."')"; 
  34. $wynik = mysql_query($zapytanie);
  35. if ($wynik)
  36. echo mysql_affected_rows().' usunięto z bazy'; 
  37. ?>
  38.  
  39. </body>
  40. </html>


Problem w tym że nie usuwa mi nic z bazy.
Na bank namotałem coś. Może zerkniecie czy chociaż w dobrym kierunku idę:)
Danone
Moim zdaniem twoje zapytanie jest złe.

  1. "delete from pilkarze where values ('".$pilkarz."')";



a powinno być coś takiego na wzór:


  1. $zapytanie = "DELETE FROM pilkarze WHERE nazwisko='$_POST['pilkarz']'";


I nie deklaruj tak :

  1. <?php
  2. $pilkarz=$HTTP_POST_VARS['pilkarz'];
  3. ?>


Jak już chcesz posta do zmiennej przypisać to rób tak:

  1. <?php
  2. $pilkarz = $_POST['pilkarz'];
  3. ?>
Pride
Powiem tak... tongue.gif Pokaz lepiej twoja tabelke dane czy jak ona sie nazwya winksmiley.jpg Łatwiej bedzie ci pomoc.
Danone
@pride

Fakt tak będzie najlepiej, jak pokażesz strukture tabeli na której chcesz wykonywac te operacje.
stypkalukasz
Teraz wyświetlił się błąd odnoszący się do lini z zapytaniem:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

STRUKTURA:
CREATE TABLE `pilkarze` (
`id` int(11) NOT NULL auto_increment,
`klub` text NOT NULL,
`pilkarz` text NOT NULL,
`informacje` text NOT NULL,
PRIMARY KEY (`id`)
)

'pilkarz' - imię i nazwisko.
Po wpisaniu imienia i nazwiska chcę aby wpis był usuwany.
Danone
  1. <html>
  2. <head>
  3. <title>usuwanie klubów z bazy danych</title>
  4. </head>
  5. <body>
  6. <h1>usuwanie klubów z bazy danych </h1>
  7. <?php
  8.  
  9.  
  10. $pilkarz=$_POST['pilkarz'];
  11.  
  12.  
  13. if (!$pilkarz)
  14. {
  15.  echo 'Nie podano wszystkich potrzebnych danych.<br />'
  16. .'Wróć do poprzedniej strony i spróbuj ponownie.';
  17.  exit;
  18. }
  19.  
  20.  
  21. $pilkarz = addslashes($pilkarz);
  22.  
  23.  
  24. @ $db = mysql_pconnect('localhost', 'root', 'krasnal');
  25.  
  26. if (!$db)
  27. {
  28.  echo 'Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';
  29.  exit;
  30. }
  31.  
  32. mysql_select_db('skarb_kibica');
  33. $zapytanie = "delete from pilkarze where pilkarz='$pilkarz'";
  34. $wynik = mysql_query($zapytanie);
  35. if ($wynik)
  36. echo mysql_affected_rows().' usunięto z bazy'; 
  37. ?>
  38.  
  39. </body>
  40. </html>


Teraz powinno być wporządku. I nie będzie błędu z zapytaniem.
stypkalukasz
Ok, teraz działa bardzo ładnie.
Dzięki za pomoc i pozdrawiam.
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.