Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [mysql] Jak wyciagnac zmienna z petli while
klekot
post 27.02.2008, 15:45:15
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


Mam sobie jakis kod
  1. <?php
  2. while (a==b){
  3.  
  4.  jakis kawalek kodu
  5.  $c = 1;
  6.  
  7. }
  8.  
  9. Dalsza czesc kodu
  10. ?>


I teraz pytanie. Jak zrobic, aby $c przeniesc poza pole zwiazane z while. Bo mam skrypt ktory pobiera dane z bazy mysql. i pozniej chce skorzystac z tej zmiennej w zapytaniu, ktore nie znajduje sie w polu while, problem polega na tym ze ta zmienna nie jest widziana. Dla sprawdzenia poprawnosci zapytania zrobilem maly test. $c wstawilem po instrukcji while i wszystko jest ok. Teraz musze tylko rozwiazac problem jak przeniesc ta zmienna poza instrukcje
Go to the top of the page
+Quote Post
l0ud
post 27.02.2008, 15:58:27
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Jesteś pewny, że pętla wykonuje się chociaż raz? To nie C, zmienna zadeklarowana w pętli powinna być widoczna i poza nią.

Ten post edytował l0ud 27.02.2008, 15:58:43


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
klekot
post 27.02.2008, 16:25:40
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


mam takie cos
  1. while($c = mysql_fetch_array($query)) {
  2. print($c[wykonawca].' - '.$c[tytul].'<br>');
  3. print($c[adres].'<br>');
  4. print($c[opis].'<br>');
  5. print($c[czas].'<br>');
  6. ?> <form action=?action=DELETE method=POST>
  7. <input type=submit name=DELETE value=Kasuj>
  8. </form> <?
  9.  
  10.  
  11.  
  12. }
  13.  
  14. IF(isset($delete)){
  15.  
  16. $akcja = "DELETE FROM teledyski WHERE id='$c[id]'";
  17. $zapytanie = mysql_query($akcja) OR die(mysql_error());
  18. echo 'Wpis zostal skasowany';
  19.  
  20. }

While jest wykonywane poniewaz pobiera informacje z bazy
Go to the top of the page
+Quote Post
l0ud
post 27.02.2008, 16:43:45
Post #4





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Pomyśl...
  1. <?php
  2. while($c = mysql_fetch_array($query)) {
  3. ?>


Co oznacza... dopóki przypisanie wyniku mysql_fetch_array do zmiennej $c się powodzi, wykonuj[...]

Pętla się kończy, czyli przypisanie wyniku się nie powiodło i zmienna $c przybiera ostatecznie pustą wartość. Patrząc na ten kod, wygląda na to, że ta pętla wykonuje się tylko raz, więc po co ją robić? Przypisz od razu zmiennej c wynik mysql_fetch_array($query), bez żadnej pętli...


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
klekot
post 27.02.2008, 17:21:20
Post #5





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


Zrobilem tak jak mowiles, ale nie chce sie usowac. Pisze ze usunieto, ale tak nie jest.
  1. <?php
  2. $sql = ('SELECT * FROM teledyski WHERE tytul LIKE "'.$tyt.'" LIMIT 1' );
  3.  $query = mysql_query($sql, $db);
  4.  $c = mysql_fetch_array($query);
  5.  print($c[wykonawca].' - '.$c[tytul].'<br>');
  6.  print($c[adres].'<br>');
  7.  print($c[opis].'<br>');
  8.  print($c[czas].'<br>');
  9.  $id = $c[id];
  10. ...
  11.  
  12.  
  13.  
  14.  
  15. if(isset($delete)){
  16.  
  17. $akcja = "DELETE FROM teledyski WHERE wykonawca='$id'";
  18. $akcjj = "DELETE FROM teledyski WHERE id='$c[id]'";
  19. $zapytanie = mysql_query($akcja) or die(mysql_error());
  20. echo 'Wpis zostal skasowany';
  21. ?>

A jak zrobie ze $id = 1; to wtedy dziala

Ten post edytował klekot 27.02.2008, 17:22:26
Go to the top of the page
+Quote Post
l0ud
post 27.02.2008, 17:29:43
Post #6





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Po pierwsze, źle się odnosisz do zmiennych w tablicy. Należy używać apostrofów, czyli nie np. $c[wykonawca], tylko $c['wykonawca']

Spróbuj tak

  1. <?php
  2. if(isset($_POST['delete'])) {
  3.  
  4. $akcja = 'DELETE FROM teledyski WHERE id=''.$c['id'].''';
  5. $zapytanie = mysql_query($akcja) or die(mysql_error());
  6. echo 'Wpis zostal skasowany';
  7.  
  8. }
  9. ?>


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
klekot
post 27.02.2008, 17:55:08
Post #7





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


jesli wkleje dokladnie to co napisales to jest taki sam efekt jak z moim kodem, a jak usune "/" to wywala Something is wrong in your syntax obok '' w linii 1
Go to the top of the page
+Quote Post
KCG
post 27.02.2008, 18:07:13
Post #8





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


  1. <?php
  2. $sql = 'SELECT * FROM `teledyski` WHERE tytul LIKE "'.$tyt.'" LIMIT 1' );
  3. $query = mysql_query($sql, $db);
  4. $c = mysql_fetch_array($query);
  5. print($c[wykonawca].' - '.$c[tytul].'<br>');
  6. print($c[adres].'<br>');
  7. print($c[opis].'<br>');
  8. print($c[czas].'<br>');
  9. $id = $c[id];
  10.  
  11. if(isset($delete)) {
  12. $akcja = 'DELETE FROM `teledyski` WHERE `id`='.$c[id];
  13. $zapytanie = mysql_query($akcja) or die(mysql_error());
  14. echo 'Wpis zostal skasowany';
  15. }
  16. ?>

Chyba lepiej usuwać po `id`, a nie tytule smile.gif


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
l0ud
post 27.02.2008, 18:08:25
Post #9





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Nie nie, nie usuwaj backslashów - muszą być. Zmień to co dałem tymczasowo na
  1. <?php
  2. if(isset($_POST['delete'])) {
  3.  
  4. $akcja = 'DELETE FROM teledyski WHERE id=''.$c['id'].''';
  5. echo $zapytanie;
  6.  
  7. }
  8. ?>


i napisz co zwraca.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
klekot
post 27.02.2008, 18:25:55
Post #10





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


nic
Go to the top of the page
+Quote Post
l0ud
post 27.02.2008, 18:29:06
Post #11





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


o kurcze... mój błąd. oczywiście
  1. <?php
  2. if(isset($_POST['delete'])) {
  3.  
  4. $akcja = 'DELETE FROM teledyski WHERE id=''.$c['id'].''';
  5. echo $akcja;
  6.  
  7. }
  8. ?>


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
klekot
post 27.02.2008, 18:34:04
Post #12





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


DELETE FROM teledyski WHERE id=''
Go to the top of the page
+Quote Post
l0ud
post 27.02.2008, 18:45:17
Post #13





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Do tego co masz aktualnie, przed zadeklarowaniem zmiennej akcja dopisz print_r($c);
i wklej co teraz zwraca.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
klekot
post 27.02.2008, 18:52:31
Post #14





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


wkleiłem tutaj
  1. <?php
  2. if(isset($_POST['delete'])) {
  3.  
  4. $akcja = 'DELETE FROM teledyski WHERE id='.$c['adres'].'';
  5. print_r($c);
  6. echo $akcja;
  7. ?>

Wyswietlilo sie to samo DELETE FROM teledyski WHERE id=''
Go to the top of the page
+Quote Post
l0ud
post 27.02.2008, 18:59:37
Post #15





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Uruchamiasz ten kod oczywiście w całości, razem z poprzednią częścią, która pobiera dane z bazy? Jeżeli tak, być może nie przekazujesz zmiennej $tyt, która jest przecież potrzebna do zdobycia identyfikatora [zobacz pierwsze zapytanie w całości]


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
klekot
post 27.02.2008, 19:04:08
Post #16





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


$tyt to pobieranie tekstu z formularza, pozniej zapytanie wyszukuje odpowiedni rekord. Wszystko jest ok. Pozniej jak chce usunac wpis to pojawia sie problem.
  1. <center><?
  2. if($db = mysql_connect("localhost", "root", "krasnal")) {
  3.  mysql_select_db("teledyski");
  4.  echo('Znajdz plik który chcesz usunac
  5.  <form action="?action=delete" method="post">
  6.  Tytul: <input type="text" name="tyt"><br>
  7.  <input type="submit" name="wyslij" value="Wyslij"><br>
  8.  </form>');
  9.  
  10.  $tyt = $_POST['tyt'];
  11.  $sql = ('SELECT * FROM teledyski WHERE tytul LIKE "'.$tyt.'" LIMIT 1' );
  12.  $query = mysql_query($sql, $db);
  13.  $c = mysql_fetch_array($query);
  14.  print($c[wykonawca].' - '.$c[tytul].'<br>');
  15.  print($c[adres].'<br>');
  16.  print($c[opis].'<br>');
  17.  print($c[czas].'<br>');
  18.  $id = $c['id'];
  19.  ?> <form action=?action=delete method=POST>
  20.  <input type=submit name=delete value=Kasuj>
  21.  </form> <?
  22.  
  23.  
  24. if(isset($_POST['delete'])) {
  25.  
  26. $akcja = 'DELETE FROM teledyski WHERE id='.$c['adres'].'';
  27.  
  28. echo $akcja;
  29.  print_r($c);
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  }
  36.  
  37.  }
  38. else  {
  39. print("Problem z baza danych");
  40. }
  41. ?>
Go to the top of the page
+Quote Post
l0ud
post 27.02.2008, 19:15:14
Post #17





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Pomiędzy 19 a 20 linią tego co dałeś, dodaj

Kod
<input type="hidden" name="tyt" value="<?php echo $_POST['tyt']; ?>">


Napisz teraz, jaki wynik wygeneruje.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
klekot
post 27.02.2008, 19:28:41
Post #18





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


DELETE FROM teledyski WHERE id=wpisArray ( [0] => 1 [id] => 1 [1] => wpis [tytul] => wpis [2] => wpis [adres] => wpis [3] => Country [kategoria] => Country [4] => wpis [opis] => wpis [5] => [czas] => [6] => [ocena] => [7] => wpis [wykonawca] => wpis )
Go to the top of the page
+Quote Post
l0ud
post 27.02.2008, 19:35:51
Post #19





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


już prawie ok winksmiley.jpg

Teraz zamień na powrót ten cały blok if isset na

  1. <?php
  2. if(isset($_POST['delete'])) {
  3.  
  4. $akcja = 'DELETE FROM teledyski WHERE id=''.$c['id'].''';
  5. $zapytanie = mysql_query($akcja) or die(mysql_error());
  6. echo 'Wpis zostal skasowany';
  7.  
  8. }
  9. ?>


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
klekot
post 27.02.2008, 19:46:39
Post #20





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.08.2005

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


Dziala biggrin.gif dzieki.

Ale teraz chcialbym sie dowiedziec co zrobilem zle. Czy to chodzi o to
  1. WHERE id=\''.$c['id'].'''

I jak bys mogl to powiedz po co sa te ukosniki.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 19.07.2025 - 03:51