Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Na localu działa a na serwerze nie...
Forum PHP.pl > Forum > Przedszkole
filip.wil
Witam. Przeczytałem temat o najczęstszych błędach i ten błąd jest tam opisany, jednak nie wiem jak go poprawić w tym przypadku:
  1. <?php
  2. if(isset($_GET['newsy']) && $_GET['newsy']=='czytajkom' && isset($_GET['id']))
  3. {
  4. $id=$_GET['id'];
  5. $link=mysql_query("SELECT * FROM komentarze WHERE news_id='$id' ORDER BY news_id DESC");
  6. while($wiersz=mysql_fetch_row($link))
  7. {
  8.  
  9. echo "data: $wiersz[2]<br />";
  10. echo "temat: $wiersz[3]<br />";
  11. echo "treść: $wiersz[4]<br />";
  12. echo "autor: $wiersz[5]";
  13. echo "(ip: $wiersz[6])<br />";
  14. if(isset($_SESSION['admin']) && $_SESSION['admin']==ok){
  15. echo "<a href=index.php?newsy=edytujkom&id=$wiersz[0]&newsid=$wiersz[1]>edytuj</a> - <a href=index.php?newsy=usunkom>usuń</a>";}
  16. echo "<hr size=1 width=40%><br />";
  17. }
  18. echo '<a href="index.php">powrót</a>';
  19. }
  20. ?>

Nie działają też inne rzeczy związane z komentarzami :/ [dane do tabelek dodają się, lecz nic się nie wyświetla...]
aiv
I no errors/warning?
Może masz wyłączone pokazywanie błędów?
Czy zdiagnozowałeś _dokładnie_ który fragment kodu nie działa?
empathon
Co dokładniej nie działa w powyższym kodzie?
Jakieś błędy?

  1. <?php
  2. ?>


Co do innych błędów to nikt tu nie stawia tarota - pokaż kod.
filip.wil
Ok, sorry za niedokładność.

Zrobiłem sobie stronę: filipscms.yoyo.pl (możecie sprawdzić dodając komenta - nie pokaze się on pod newsem, a liczba komentarzy nie zmieni się) . Nie działają tam komentarze (nie wyświetla się ich liczba, i po kliknięciu, żeby przeczytać komentarze pod newsem nie wyświetlają się). Nie działa ten fragment
  1. <?php
  2. if(isset($_GET['newsy']) && $_GET['newsy']=='czytajkom' && isset($_GET['id']))
  3. {
  4. $id=$_GET['id'];
  5. $link=mysql_query("SELECT * FROM komentarze WHERE news_id='$id' ORDER BY news_id DESC");
  6. while($wiersz=mysql_fetch_row($link))
  7. {
  8.  
  9. echo "data: $wiersz[2]<br />";
  10. echo "temat: $wiersz[3]<br />";
  11. echo "treść: $wiersz[4]<br />";
  12. echo "autor: $wiersz[5]";
  13. echo "(ip: $wiersz[6])<br />";
  14. if(isset($_SESSION['admin']) && $_SESSION['admin']==ok){
  15. echo "<a href=index.php?newsy=edytujkom&id=$wiersz[0]&newsid=$wiersz[1]>edytuj</a> - <a href=index.php?newsy=usunkom>usuń</a>";}
  16. echo "<hr size=1 width=40%><br />";
  17. }
  18. echo '<a href="index.php">powrót</a>';
  19. }
  20. ?>

i ten:
while($wiersz2=mysql_fetch_row($link2))

  1. <?php
  2. {$newsnr=$wiersz2[0];
  3.  $liczbakomdb=mysql_query("SELECT * FROM komentarze WHERE news_id='$id' ORDER BY id");
  4.  $liczbakom=mysql_num_rows($liczbakomdb);
  5.  echo "<div align='center'><font size='4'> $wiersz2[2] </font></div>";
  6.  echo "<div align='left'><font size='1'> $wiersz2[3]</font></div><br /></div>";
  7.  echo "<div align='left'>data dodania: $wiersz2[1] </div>";
  8.  echo "<div align='left'>autor: $wiersz2[4] </div>";
  9.  echo "<a href=index.php?newsy=komentuj&id=$wiersz2[0]>komentuj</a> - ";
  10.  echo "<a href=index.php?newsy=czytajkom&id=$wiersz2[0]>czytaj komentarze($liczbakom)</a> - ";
  11.  if(isset($_SESSION['admin']) && $_SESSION['admin']=='ok'){
  12.  echo "<a href=index.php?newsy=edytuj&id=$wiersz2[0]>edytuj</a> - ";
  13.  echo "<a href=index.php?newsy=usun&id=$wiersz2[0]>usuń</a>";}
  14.  echo "<hr size=1 width=95%><br />";}
  15. ?>

a dokładnie zmienna $liczbakom
Cały system komentarz nie działa w sumie. Co najdziwniejsze wszystko na localhoscie działa, a na serwerze yoyo.pl już nie. Znajomy powiedział, że to nie wina kodu, bo wszystko jest ok wg niego. Ciekawe...
aiv
Dodaj sobie zamiast
  1. <?php
  2. $link=mysql_query("SELECT * FROM komentarze WHERE news_id='$id' ORDER BY news_id DESC");
  3. ?>


to:
  1. <?php
  2. $link=mysql_query("SELECT * FROM komentarze WHERE news_id='$id' ORDER BY news_id DESC") or die(mysql_error());
  3. ?>


i zobacz co sie stanie.
filip.wil
aiv, nic się nie stało, nie ma różnicy. Zastąpiłem tak jak mówiłeś. Wersja zmieniona pod adresem filipscms.yoyo.pl - jak widać bez różnicy. Może to ma coś wspólnego z tym?:
"10. Na localu działa a na serwerze nie... (by nospor)
Często takie zdanie słyszymy, gdy ktoś próbuje dobrać się do parametru w linku poprzez $zmienna a nie $_GET['zmienna']. Podobnie z formularzem przesyłanem postem. Zamiast pisać $_POST['zmienna'] piszą $zmienna. Konstrukcję $zmienna można stosować gdy włączone jest register_globals. Ale należy tego unikać gdyż jest to niebezpieczna praktyka i hostingi coraz częściej to wyłączają. Podsumowując:"
aiv
Kod który przedstawiłeś może mieć problemy z przenoszeniem wyłącznie w kilku przypadkach:
- mysql_* - na serwerze nie ma/nie działa poprawnie/jest źle skonfigurowana obsługa połączenia do bazy danych
- $_SESSION - mogą nie działać poprawnie sesje
- możesz mieć inna bazę danych albo inne dane w niej zawarte

Kod Twój nie jest zaskomplikowany, a więc może sam problem leży gdzie indziej jak nie w ww.
filip.wil
Cytat(aiv @ 6.01.2008, 23:12:03 ) *
Kod który przedstawiłeś może mieć problemy z przenoszeniem wyłącznie w kilku przypadkach:
- mysql_* - na serwerze nie ma/nie działa poprawnie/jest źle skonfigurowana obsługa połączenia do bazy danych
- $_SESSION - mogą nie działać poprawnie sesje
- możesz mieć inna bazę danych albo inne dane w niej zawarte

Kod Twój nie jest zaskomplikowany, a więc może sam problem leży gdzie indziej jak nie w ww.

1. Chyba nikt nie miał takich problemów z yoyo?
2. Na localhoscie wszystko śmiga. Sesje, baza, wszystko.
3. Mam napisany skrypt, który sam dodaje mi tabelki, jeśli ich nie ma. Wszystko robi się automatycznie. Przez phpmadmin sprawdzałem i wszystko jest na swoim miejscu. Nawet komentarze są dodane. Coś musi się dziać przy pobieraniu z bazy danych. Newsy są bardzo podobnie napisane i wszystko działa...
uli
Daj strukturę bazy i kawałek kodu, który zapisuje komentarze.
filip.wil
Struktura komentarzy:
  1. <?php
  2. $db_host="***"; //adres serwera bazy
  3. $db_user="***";
  4. $db_pass="***";
  5. $db_mdb="***";//nazwa bazy danych
  6.  
  7. $baza = mysql_connect($db_host,$db_user,$db_pass);
  8. $seldb = mysql_select_db($db_mdb);
  9.  
  10.  
  11.  
  12. $query2 = 'CREATE TABLE komentarze
  13. (id INT NOT NULL AUTO_INCREMENT,
  14.  news_id INT NOT NULL,
  15.  data DATETIME NOT NULL,
  16.  temat VARCHAR( 50 ) NULL ,
  17.  tresc LONGTEXT NOT NULL,
  18.  autor VARCHAR(20),
  19.  ip VARCHAR(16),
  20. PRIMARY KEY(`id`)
  21. ) TYPE=MyISAM';
  22. mysql_query($query2);
  23. ?>


Skrypt dodający komentarze:
  1. <?php
  2. if(isset($_GET['newsy']) && $_GET['newsy']=='komentuj' && isset($_GET['id']))
  3. {
  4. $link=mysql_query("SELECT * FROM news WHERE news_id='$id'");
  5. $wiersz=mysql_fetch_array($link);
  6.  
  7. echo '<b>DODAJ NOWY KOMENTARZ</b><br>';
  8. echo '<form method="POST" action="index.php?newsy=wstawkomenta&id='.$wiersz['news_id'].'">
  9. <table border="0" width="100%">
  10. <tr>
  11. <td>Temat:</td>
  12. <td><input type="text" name="temat" size="64"></td>
  13. </tr>
  14. <tr>
  15. <td>Autor:</td>
  16. <td><input type="text" name="autor" size="64"></td>
  17. </tr>
  18. <tr>
  19. <td>Treść: </td>
  20. <td><textarea rows="5" name="tresc" cols="42"></textarea></td>
  21. </tr>
  22. <tr>
  23. <td><input type="submit" value="DODAJ"></td>
  24. </tr>
  25. </table>
  26. </form>';
  27.  }
  28.  
  29. if(isset($_GET['newsy']) && $_GET['newsy']=='wstawkomenta' && isset($_GET['id']))
  30. {
  31. $temat=$_POST['temat'];
  32. $tresc=$_POST['tresc'];
  33. $autor=$_POST['autor'];
  34. $data = 'now()'; //$data = date("Y-m-d H:i:s");
  35. $ip=$_SERVER[REMOTE_ADDR];
  36. $id=$_GET['id'];
  37. mysql_query("INSERT INTO komentarze VALUES('','$id',$data,'$temat','$tresc','$autor','$ip')");
  38. echo 'Pomyślnie dodałem komentarza o tytule: <b>'.$temat.'</b><br /> i o treści: <b>'.$tresc.'<br /><a href="index.php">powrót do strony głównej</a>';
  39. echo "<br /></b><br /><br /><br /><br />";
  40. }
  41. ?>
uli
Daj zamiast mysql_fetch_row instrukcję mysql_fetch_array

Reszta bez zmian.

A jednak - dla pewności:
zamiast indeksów w zmiennej $wiersz w nawiasach [] daj nazwy pól np. $wiersz[0] = $wiersz['id']
filip.wil
Teraz jest tak:
  1. <?php
  2. if(isset($_GET['newsy']) && $_GET['newsy']=='czytajkom' && isset($_GET['id']))
  3. {
  4. $id=$_GET['id'];
  5. $link=mysql_query("SELECT * FROM komentarze WHERE news_id='$id' ORDER BY news_id DESC") or die(mysql_error());
  6. while($wiersz=mysql_fetch_array($link))
  7. {
  8.  
  9. echo "data: $wiersz[data]<br />";
  10. echo "temat: $wiersz[temat]<br />";
  11. echo "treść: $wiersz[tresc]<br />";
  12. echo "autor: $wiersz[autor]";
  13. echo "(ip: $wiersz[ip])<br />";
  14. if(isset($_SESSION[admin]) && $_SESSION['admin']==ok){
  15. echo "<a href=index.php?newsy=edytujkom&id=$wiersz[0]&newsid=$wiersz[1]>edytuj</a> - <a href=index.php?newsy=usunkom>usuń</a>";}
  16. echo "<hr size=1 width=40%><br />";
  17. }
  18. echo '<a href="index.php">powrót</a>';
  19. }
  20. ?>

Nadal na localu działa, a na serwie nie... Wygląda to tak, jakby warunek nie był spełniony. Ale skoro na localu działa?
potreb
A na jakim serwie testujesz?? na yoyo? cba? może wyskakują jakieś błędy?

A na yoyo.
No to masz problem, ale wg mnie to przez isset. Spróbuj skonstruować to jakoś inaczej, może używając case:

Jak dla mnie masz źle skonstruowane, zapytania: m.in to: do czego ci to?
  1. <?php
  2. $link=mysql_query("SELECT * FROM news WHERE news_id='$id'");
  3. $wiersz=mysql_fetch_array($link);
  4. ?>
gosienkami
stronka na localhst działa a na yoyo.pl nie
wyskakuje mi bład mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 8

pasek php
  1. <?php
  2.  
  3.  $catsql = "SELECT * FROM kategorie;";
  4.  $catres = mysql_query($catsql);
  5.  
  6.  while($catrow = mysql_fetch_array($catres))
  7.  {
  8. echo "<li><a href='" . $config_basedir . "/produkty.php?id=" . $catrow['id'] . "'>" . $catrow['nazwa_kat'] . "</a></li>";
  9.  }
  10. ?>



plik konf

[php]

<?php

$dbhost = "mysql3.yoyo.pl";
$dbuser = "";//**
$dbpassword = "";//***
$dbdatabase = "sklep";

$config_basedir = "http://nazwa.yoyo.pl/";

?>
-xxx-
A ze tak spytam - zalozyles tabele na serwerze?
gosienkami
cała baze sklep mam na serwerze a co?>
potreb
zmień:
  1. <?php
  2. $catsql = "SELECT * FROM kategorie;";
  3. ?>


na:
  1. <?php
  2. $catsql = "SELECT * FROM kategorie";
  3. ?>
gosienkami
tak samo nadal nie działa:(
loff
Cytat(gosienkami @ 8.01.2008, 11:03:48 ) *
tak samo nadal nie działa:(

Opisać problem to kolezanka umie biggrin.gif

otworzyłem sobie http://www.gosiek.yoyo.pl/pasek.php i widze takie coś

  1. Warning: mysql_query() [FUNCTION.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 6
  2.  
  3. Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 6
  4.  
  5. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 8


pytanie brzmi teraz czy plik jest includowany do innego gdzie jest połaczenie z baza czy....

anyways: cos jest nie tak ale nie wydaje sie to być na skutek tego kawałka kodu co podałas. Pokaz moze ten gdzie sie łaczysz z baza...
potreb
Sprawdź połączenie, czy tabela i kolumny istnieją i podaj cały kod z błędem. Twój skrypt na pewno działa, więc do może być coś innego.

Nie możesz otworzysz oddzielnie pliku pasek.php bo on jest includowany a połączenie z bazą masz w pliku index.php.

  1. <?php
  2. $catsql = mysql_query("SELECT * FROM kategorie");
  3. while($catrow = mysql_fetch_array($catsql))
  4. {
  5. echo "<li><a href='" . $config_basedir . "/produkty.php?id=" . $catrow['id'] . "'>" . $catrow['nazwa_kat'] . "</a></li>";
  6. }
  7. ?>


Sprawdź ten sposób, i jak pokaże błedy skopiuj je.
gosienkami
<?php

require("konfiguracja.php");

$db = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbdatabase, $db);
?>
dlaczego na localhost działa a na tym yoyo nie:(
uli
Bo z pewnością NAZWA bazy się nie zgadza...
gosienkami
dalej błędy

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 6

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 6

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 8


No database selected: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 7_uacct = "UA-1482806-8"; urchinTracker(); java script:void(0);
potreb
Jak same błędy wskazują nie możesz się połączyć z bazą, i tyle. Pokaż nam dane z pliku konfiguracja.php tylko hasło wykasuj.
-gosienkami-
<?php

$dbhost = "mysql3.yoyo.pl";
$dbuser = "";
$dbpassword = "";
$dbdatabase = "sklep";

$config_basedir = "http://gosiek.yoyo.pl/";

?>
potreb
daj wszystko w jednym pliku:
  1. <?php
  2. $dbhost = "mysql3.yoyo.pl";
  3. $dbuser = "";
  4. $dbpassword = "";
  5. $dbdatabase = "sklep";
  6.  
  7. $config_basedir = "http://gosiek.yoyo.pl/";
  8. $db = @mysql_connect($dbhost, $dbuser, $dbpassword);
  9. $select_db = @mysql_select_db($dbdatabase);
  10.  
  11. $catsql = mysql_query("SELECT * FROM kategorie");
  12. while($catrow = mysql_fetch_array($catsql))
  13. {
  14. echo "<li><a href='" . $config_basedir . "/produkty.php?id=" . $catrow['id'] . "'>" . $catrow['nazwa_kat'] . "</a></li>";
  15. }
  16. ?>


Ma działać!
uli
No chyba że by nie miało biggrin.gif

Spróbuj (zakładam, że mysql odmawia połączeń innych niż localhost:

$dbhost = "localhost";
-gosienkami-
nie działa sad.gif
No database selected
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 14
potreb
No to już jest przesada. Dalej nie może bazy wybrać, albo nie ma bazy albo dane są złe. Posprawdzaj jeszcze raz
gosienkami
baza jest sad.gif
potreb
A ja ci mówię, że masz złe dane do bazy lub tabela kategorie źle się nazywa lub nie istnieje.
Mozesz dać jeszcze dane do bazy tylko w apostrofach

$dbhost = 'mysql3.yoyo.pl';

Kiedyś miałem u siebie taki problem.
gosienkami
    Table 'sklep.kategorie' doesn't exist
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 13
    dlaczego mi wstawia nazwe tabeli brzed nazwa kolumny. cos mam w kodzi zle??
_uacct = "UA-1482806-8"; urchinTracker();
dadexix
to dobrze, on czasem automatycznie dodaje...

Kod
Table 'sklep.kategorie' doesn't exist
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/g/o/gosiek/pasek.php on line 13
czy Ty czytać nie umiesz....? z 10 razy się pytali czy masz wszystkie tabele... mówiłeś że masz... to czemu pokazuje się Table 'sklep.kategorie' doesn't exist? nauczy się czytać;/
gosienkami
moja tabela sie nazywa kategorie a nie sklep.kategorie,,,, sklep to nazwa bazy dlaczego mi tak wyswietla
dadexix
bazy mysql rozpoznają tabele jako nazwa_bazy.tabela a pola jako nazwa_bazy.tabela.pole ... niektóre wersje mySQL w błędach podają samą nazwę tabeli a inne podają nazwe tabeli i nazwe bazy... to taka różnica jak mędzy <?PHP ?> a <?php ?>.... czyli żadna...
Kod
$db = @mysql_connect($dbhost, $dbuser, $dbpassword);
$select_db = @mysql_select_db($dbdatabase);


czemu tu masz małpeczki?

Kod
$db = @mysql_connect($dbhost, $dbuser, $dbpassword);
$select_db = @mysql_select_db($dbdatabase);

$catsql = mysql_query("SELECT * FROM kategorie");
echo mysql_error();

zmień na
Kod
$db = mysql_connect($dbhost, $dbuser, $dbpassword);
$select_db = mysql_select_db($dbdatabase)or die(mysql_error());

$catsql = mysql_query("SELECT * FROM kategorie")or die(mysql_error());
uli
Cytat(gosienkami @ 8.01.2008, 15:26:15 ) *
moja tabela sie nazywa kategorie a nie sklep.kategorie,,,, sklep to nazwa bazy dlaczego mi tak wyswietla


Naucz się podstaw SQL'a

sklep.kategorie = baza: sklep, tabela: kategorie

NIE ISTNIEJE i już. Ile razy jeszcze będziesz się upierać, że istnieje?
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.