Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Problem ze skryptem
Forum PHP.pl > Forum > Przedszkole
shtoc
Witam mam takie pytanko napisałem skrypt który ma za zadanie przypisać message_id rekordom z taka zależnością że jak w bazie pole references jest puste to identiti = 0 a jak nie to ma wyciagnać wszystkie rekordy o takim samym message_id i przypisać im w message_id ta sama liczbe.

Niestety z pustymi mam ok ale z pełnym caly czas dostaje rozne liczby w takich samych rekordach. sprawdzałem przez echo $sql i mam tak ze znajduje przykładowo 3 takie same rekordy ale aktualizuje message_id tylko dla jednego ktory jest pierwszy 3 razy :/

Czy moze ktos powiedzieć gdzie jest błąd?

  1. <?php
  2. mysql_connect('localhost', 'admin', 'hasło') or die('Błąd połączenia: '.mysql_error());
  3. mysql_selectdb('messages') or die('Błąd wyboru bazy: '.mysql_error());
  4. mysql_query("SET NAMES utf8");
  5.  
  6. $sql="SELECT * FROM messages2";
  7. $dane=mysql_query($sql);
  8. $i=1;
  9. $a=0;
  10. while($row = mysql_fetch_array($dane))
  11. {
  12.  
  13. $references=mysql_escape_string($row['references']);
  14. $id=mysql_escape_string($row['id']);
  15.  
  16. if (empty($references))
  17. {
  18. $sqll="UPDATE messages2 SET message_id='$a' WHERE id='$id'";
  19. $danee= mysql_query($sqll);
  20.  
  21. }
  22. else
  23. {
  24. $sqlr="SELECT * FROM messages2 WHERE `references`='$references' && message_id='0'";
  25. $daner= mysql_query($sqlr);
  26.  
  27.  
  28.    while($roww = mysql_fetch_array($daner))
  29.    {
  30.    $idd=mysql_escape_string($row['id']);
  31.    $ref=mysql_escape_string($row['references']);
  32.    $sqlll="UPDATE messages2 SET message_id='$i' WHERE id='$idd'";
  33.    $daneee= mysql_query($sqlll);
  34.  
  35.    unset($idd,$ref);
  36.    }
  37. }
  38. $i++;
  39.  
  40. }
  41.  
  42. ?>


questionmark.gif
Darti
Wiersz 29 to raczej

  1. <?php
  2. while($row = mysql_fetch_array($daner))
  3. ?>


p.s. nazywaj sensownie te zmienne to Ci się nie będą mylić ...
lepiej poświęcić 2 sekundy na wymyslenie nazwy zmiennej niż później 2 dni na szukanie błędu
slawny
Ten 29 zostaw bez zmian. Zmień to:
  1. <?php
  2. $idd=mysql_escape_string($row['id']);
  3.    $ref=mysql_escape_string($row['references']);
  4. ?>

na
  1. <?php
  2. $idd=mysql_escape_string($roww['id']);
  3.    $ref=mysql_escape_string($roww['references']);
  4. ?>
Darti
Cytat(slawny @ 28.04.2009, 10:20:52 ) *
Ten 29 zostaw bez zmian.



racja, to pętla w pętli ...
shtoc
Faktycznie dzięki exclamation.gif wszystko przez literówkę.
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.