Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]php , mysql, implode
Forum PHP.pl > Forum > Przedszkole
canismajoris
Cześć , Proszę o pomoc.
mam kod w php:

  1. $nick2=array($nick);echo "</br>1";print_r($nick2);
  2. $users2=explode(";",$zap5);echo "</br>2";print_r($users2);
  3. $res=array_diff($users2,$nick2);echo "</br>3";print_r($res);
  4. $res2=implode(";",$res);echo "</br>4";print_r($res2);
  5. $pol->query("update base set users='$res2'");
  6. foreach ($row as $linia){
  7. $users11=explode(";",$res2);echo "</br>5";print_r($users11);
  8. $res12=array_merge($users11,$nick2);echo "</br>6";print_r($res12);
  9. $res13=implode(";",$res12);echo "</br>7";print_r($res13);
  10. $pol->query("update base set users='$res13' where name='$linia'");
  11. }}


to widać na wyjściu:

1Array ( [0] => iphone )
2Array ( [0] => [1] => tablet )
3Array ( [0] => [1] => tablet )
4;tablet
5Array ( [0] => [1] => tablet )
6Array ( [0] => [1] => tablet [2] => iphone )
7;tablet;iphone

a to ląduje w bazie na wszystkich polach:

;iphone


dlaczego to:
$pol->query("update base set users='$res13' where name='$linia'");

nie zapisuje w bazie tego :
;tablet;iphone
a zapisuje tylko :
;iphone
questionmark.gif?

Pewnie to proste, ale nie mogę tego ogarnąć.
Dzięki za pomoc.
Tomplus
  1. zrób sobie print('<pre>\n"update base set users='$res13' where name='$linia'"\n</pre>')

To zobaczysz błąd.

Te \n<pre> są dla poprawienia wyglądu na stronie.
canismajoris
Dzięki za odpowiedź, to jest na wyjściu z <pre>:

'update base set users=';tablet;iphone' where name='black'
czyli zapytanie 'query->' odczytuje users z dwoma zmiennymi (;tablet;iphone) , jednak zapisuje w bazie tylko jedną (;iphone),
dlaczego tak się dzieje?
Tomplus
Wciąż za mało informacji.

1. Co masz pod zmienną $row?
Bo sądzę że, nadpisuje ci się coś.

2. Czy próbowałeś wykonać zapytanie bezpośrednio w konsoli SQL bazy danych np. PHPMyAdmin?
canismajoris
Cześć

przepisałem skrypt, który ma robić dokładnie to samo tylko napisany jest w inny sposób. Wymiękłem przy poprzednim smile.gif
wklejam całość:

  1.  
  2. require("dblog.php");
  3. $pol=new mysqli($host, $username, $password, $dbname);
  4. $zap=$pol->query("select * from perm");
  5. $zar=$pol->query("show Fields from perm where Field<> 'id_kat' and Field<> 'kat_name'");
  6. while($zap2=mysqli_fetch_array($zap)){
  7. $valid=array();
  8. $zkat=$zap2['kat_name'];
  9. <------>while($zar2=mysqli_fetch_array($zar)){
  10. <------>$user=$zar2['Field'];
  11. <------>$www=$pol->query("select $user from perm where kat_name='$zkat' and $user='1'");
  12. <------>$www2=$www->num_rows;
  13. <------><------>if ($www2 == "1"){array_push($valid,$user);
  14. <------><------>$valid2=implode(",",$valid);}}
  15.  
  16. echo "<div style='float:left;border:solid 1px black;width:300px;padding:3px;'>$zkat</div>";
  17. echo "<div style='float:left;border:solid 1px black;width:300px;padding:3px;'>$valid2</div>";
  18. echo "<div style='clear:both;'></div>";}
  19. mysqli_close($pol);
  20.  
  21.  


valid users dla każdej pozycji zkat jest taka sama, jak zrobić aby dla każdej był inna tak jak jest w db? bo w tym momencie array_push($valid,$user ) tworzy ten sam wynik dla każdej pozycji $zkat.
dzięki za pomoc.
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.