Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem ze skryptem
Forum PHP.pl > Forum > Przedszkole
Piccolo
Mam następujący problem ze skryptem. Chcę przerobić istniejący skrypt na skrypt współpracujący z MySQL. Część skryptu wygląda tak:

  1. <?php
  2. $dane = mysql_query ("SELECT * FROM gallery ORDER BY gal_ID");
  3.  
  4. while ($rekord = mysql_fetch_array ($dane))
  5. {
  6. $title[".$rekord["ID"]."]=\"".$rekord["trade"]." ".$rekord["type"]."\";
  7. $dir[".$rekord["ID"]."]=\"/www/images/galerie/".$rekord["katalog"]."\";
  8. $picurl[".$rekord["ID"]."]=\"http://www.mojastrona.pl/images/galerie/".$rekord["katalog"]."\";
  9. $tndir[".$rekord["ID"]."]=&#092;"http://www.mojastrona.pl/images/galerie/".$rekord["katalog"]."/tn\";
  10. ";
  11. }
  12. ?>


Po uruchomieniu skryptu na stronie, który wykorzystuje dane z tego kodu, otrzymuję:

Cytat
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/conf.inc on line 26


Jeszcze nie rozumiem jednej rzeczy. Czemy tu w kodzie wypisał mi ciąg &# 092; zamiast znaku \ ?

Pomóżcie. Co jest nie tak w kodzie?
megawebmaster
Do tej jednej rzeczy - tutaj skrypt zamienia niektóre znaki na ich encje.

Która to jest linia 26?
Piccolo
linia 26 to linia

  1. <?php
  2. $title[".$rekord["ID"]."]=&#092;"".$rekord["trade"]." ".$rekord["type"]."\";
  3. ?>


ale myslę, że z następnymi będzie to samo
megawebmaster
Czyli dokładnie chodzi o znak \, który jest zaraz po = Przesuń go za pierwszy cudzysłów. We wszystkich liniach. Powiedz czy działa winksmiley.jpg
Piccolo
Nie zadziałało, a w składni programu PHP Web Page Editor znak z czarnego zmienił mi się na brązowy

Dodam jeszcze, że przed przeróbką na MySQL ta część skryptu wyglądała tak:

  1. <?php
  2. $title[1]="Alfa Romeo 145";
  3. $dir[1]="/www/images/galerie/al145";
  4. $picurl[1]="http://www.mojastrona.pl/images/galerie/al145";
  5. $tndir[1]="http://www.mojastrona.pl/images/galerie/al145/tn";
  6. ?>
megawebmaster
A jaki błąd jest?

EDIT:
  1. <?php
  2. $title[$rekord["ID"]]="/".$rekord["trade"]." ".$rekord["type"]."/";
  3. ?>


To działa?
kkuba
  1. <?php
  2. $dane = mysql_query ("SELECT * FROM gallery ORDER BY gal_ID");
  3.  
  4. while ($rekord = mysql_fetch_array ($dane))
  5. {
  6. echo '$title['. $rekord['ID'] .'] = "'. $rekord['trade'] .' '. $rekord['type'] .'";<br />
  7. $dir['. $rekord['ID'] .'] = "autoera/web/www/images/galerie/'. $rekord['katalog'] .'";<br />
  8. $picurl['. $rekord['ID'] .'] = "http://www.autoera.dt.pl/images/galerie/'. $rekord['katalog'] .'";<br />
  9. $tndir['. $rekord['ID'] .'] = "http://www.autoera.dt.pl/images/galerie/'. $rekord['katalog'] .'";';
  10. }
  11. ?>
Piccolo
Też nie działa. Opis błędu ten sam, czyli:

Kod
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/conf.inc on line 26
guilty82
  1. <?php
  2. while(...) {
  3.  
  4. echo $title[$rekord['ID']].'="'. $rekord['trade'] .' '. $rekord['type'] .'"<br />'.
  5.    $dir[$rekord['ID']] .'="autoera/web/www/images/galerie/'. $rekord['katalog'] .'"<br />'.
  6.    $picurl[$rekord['ID']] .'="http://www.autoera.dt.pl/images/galerie/'. $rekord['katalog'] .'"<br />'.
  7.    $tndir[$rekord['ID']] .'="http://www.autoera.dt.pl/images/galerie/'. $rekord['katalog'].'"';
  8.  
  9. }
  10. ?>
Piccolo
Ten skrypt wyświetla tylko to co jest w cudzysłowiach, czyli:

Kod
1="Alfa Romeo 145"
="autoera/web/www/images/galerie/al145"
="http://www.autoera.dt.pl/images/galerie/al145"
="http://www.autoera.dt.pl/images/galerie/al145"


A mi zależy, żeby efektem było stworzenie kody w pliku conf.inc w formie:

  1. <?php
  2. $title[1]="Alfa Romeo 145";
  3. $dir[1]="autoera/web/www/images/galerie/al145";
  4. $picurl[1]="http://www.autoera.dt.pl/images/galerie/al145";
  5. $tndir[1]="http://www.autoera.dt.pl/images/galerie/al145/tn";
  6. ?>


dla każdego rekordu w tabeli bazy danych
megawebmaster
No widzisz, trzeba było tak od razu tongue.gif
  1. <?php
  2. $plikConf = '';
  3. while($rekord = mysql_fetch_array($dane))
  4. {
  5. $plikConf .= '$title['.$rekord['id'].']="'.$rekord['trade'].' '.$rekord['type'].'r\n';
  6. $plikConf .= '$dir['.$rekord['id'].']="/www/images/galerie/"'.$rekord['katalog'].'r\n';
  7. $plikConf .= '$picurl['.$rekord['id'].']="http://www.mojastrona.pl/images/galerie/"'.$rekord['katalog'].'r\n';
  8. $plikConf .= '$tndir['.$rekord['id'].']="http://www.mojastrona.pl/images/galerie/"'.$rekord['katalog'].'r\n';
  9. }
  10. echo $plikConf;
  11. ?>


Teraz powiedz czy o to Ci chodzi.
Piccolo
Już wypisuje na ekranie teksty, ale jak dynamicznie wygenerować plik, który na początku ma znak <? na końcu ma znak ?> a w środku jest treść jaką generuje ten skrypt
Dodam, że chwilę później po wygenerowaniu musze go przywołać opcją include, żeby przeczytał wszystko i wsadził do pliku. A może kurczę lepiej to przywołać od razu w pliku z pominięciem include?
megawebmaster
W mojej pierwszej linijce zamiast $plikConf = ''; daj $plikConf = '<?php \r\n'; a przed echo dodaj $plikConf .= '?>';

EDIT: Jeżeli korzystasz kilkakrotnie z tych danych (np. tylko raz je generujesz, a potem korzystasz) to lepiej utworzyć plik. Jeżeli korzystasz tylko w momencie utworzenia - lepiej od razu wykorzystać te utworzone dane, a nie zapisywać, a potem jeszcze je odczytywać! Przecież to kosztuje! Zwiększa się użycie zasobów, a w dodatku potwornie zwalnia.
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.