ďťż

[mysql][php]skrypt wyszukiwarki

       

Podstrony


telcocafe

Napisałe skrypt do wyszukiwania i chce żeby wyniki zapisywał mi w tabeli.Bez nagłówków wszystko działało,jednak dodałem polecenie,aby dodało na początku nagłówki i wyskakuje błąd :
Parse error: syntax error, unexpected '<'
A oto linia nadająca nagłówki w niej występuje błąd.Prosze o poprawienie:
<tr><th>Id</th><th>Autor</th><th>Tytuł</th>< th>Długo&para;ć(min)</th><th>Rodzaj muzyki</th><th>Rok wydania</th><th>Ilo&para;ć utworów</th><th>Rodzaj no&para;nika</th></tr>



super dałeś nam kod HTML, a błąd masz w PHP, idę szklanej poszukać

Oto cały kod skryptu szukaj.php :
<? $polaczenie = mysql_connect("localhost", "w", "e"); mysql_select_db("w", $polaczenie); $id=$_POST['id']; $wykonawca=$_POST['wykonawca']; $tytul=$_POST['tytul']; $dlugosc=$_POST['dlugosc']; $rodzajmuzyki=$_POST['rodzajmuzyki']; $rokwydania=$_POST['rokwydania']; $iloscutworow=$_POST['iloscutworow']; $produkt=$_POST['produkt']; $sql="SELECT * FROM utworymedium WHERE wykonawca LIKE '%$wykonawca%' AND tytul LIKE '%$tytul%' AND dlugosc LIKE '%$dlugosc%' AND rodzajmuzyki LIKE '%$rodzajmuzyki%'AND rokwydania LIKE '%$rokwydania%'AND iloscutworow LIKE '%$iloscutworow%'AND produkt LIKE '%$produkt%'"; $wynik = mysql_query($sql, $polaczenie)or die(mysql_error()); echo"<TABLE>"; <tr><th>Id</th><th>Autor</th><th>Tytuł</th>< th>Długość(min)</th><th>Rodzaj muzyki</th><th>Rok wydania</th><th>Ilość utworów</th><th>Rodzaj nośnika</th></tr> while( $rekord = mysql_fetch_array($wynik) ) { echo "<tr><td>"; echo($rekord["id"]."</td>"); echo("<td>". $rekord["wykonawca"]."</td>" ); echo("<td>". $rekord["tytul"]."</td>" ); echo("<td>". $rekord["dlugosc"]."</td>" ); echo("<td>". $rekord["rodzajmuzyki"]."</td>" ); echo("<td>". $rekord["rokwydania"]."</td>" ); echo("<td>". $rekord["ilosc utworow"]."</td>" ); echo("<td>". $rekord["produkt"]."</td></tr>" ); } echo "</TABLE>"; mysql_free_result($wynik); mysql_close($polaczenie); ?>

Nie możesz wstawić kodu html na czysto pomiędzy znaczniki <?php ?>
<? $polaczenie = mysql_connect("localhost", "w", "e"); mysql_select_db("w", $polaczenie); $id=$_POST['id']; $wykonawca=$_POST['wykonawca']; $tytul=$_POST['tytul']; $dlugosc=$_POST['dlugosc']; $rodzajmuzyki=$_POST['rodzajmuzyki']; $rokwydania=$_POST['rokwydania']; $iloscutworow=$_POST['iloscutworow']; $produkt=$_POST['produkt']; $sql="SELECT * FROM utworymedium WHERE wykonawca LIKE '%$wykonawca%' AND tytul LIKE '%$tytul%' AND dlugosc LIKE '%$dlugosc%' AND rodzajmuzyki LIKE '%$rodzajmuzyki%'AND rokwydania LIKE '%$rokwydania%'AND iloscutworow LIKE '%$iloscutworow%'AND produkt LIKE '%$produkt%'"; $wynik = mysql_query($sql, $polaczenie)or die(mysql_error()); echo '<TABLE> <tr><th>Id</th><th>Autor</th><th>Tytuł</th>< th>Długość(min)</th><th>Rodzaj muzyki</th><th>Rok wydania</th><th>Ilość utworów</th><th>Rodzaj nośnika</th></tr>'; while( $rekord = mysql_fetch_array($wynik) ) { echo "<tr><td>"; echo($rekord["id"]."</td>"); echo("<td>". $rekord["wykonawca"]."</td>" ); echo("<td>". $rekord["tytul"]."</td>" ); echo("<td>". $rekord["dlugosc"]."</td>" ); echo("<td>". $rekord["rodzajmuzyki"]."</td>" ); echo("<td>". $rekord["rokwydania"]."</td>" ); echo("<td>". $rekord["ilosc utworow"]."</td>" ); echo("<td>". $rekord["produkt"]."</td></tr>" ); } echo "</TABLE>"; mysql_free_result($wynik); mysql_close($polaczenie); ?>



Dzięki za poprawienie kodu,teraz działa,mam jeszcze jedno pytanie.Czy jest możliwe dodanie do każdego wiersza tabeli(chyba tylko przez umieszczenie w pętli odpowiedniego polecenia)linku np zmień i usuń.Np wyświetla się id 1 ..... a obok poza tabelą linki zmień usuń


Dzięki za poprawienie kodu,teraz działa,mam jeszcze jedno pytanie.Czy jest możliwe dodanie do każdego wiersza tabeli(chyba tylko przez umieszczenie w pętli odpowiedniego polecenia)linku np zmień i usuń.Np wyświetla się id 1 ..... a obok poza tabelą linki zmień  usuń

Ten zamykający tabele znacznik w pętli jest zbyteczny,ale po usunięciu go wszystko działa,wielkie dzięki za to.Nie sądziłem że da sie do każdego wiersza dodać.Skoro można tak zrobić, to jak mógłby wyglądać skrypt zmień,że po wciśnięciu linka zmień,można by było edytować dane w wierszu i zapisywać je w bazie danych??

Wyglądałoby to tak, że do pliku powiedzmy zmien.php, musialbys przekazać id wpisu, czyli
echo("<td><a href='jakis_link'>usuń</a></td></tr></table>" );
musiałoby wyglądać mniej więcej tak:
echo ('<td><a href="'.zmien.php?id=$rekord['id'].'">zmień</a>< /td></tr></table>');
Wtedy pobierasz z bazy danych info o rekordzie z konkretnym id, jego dane przypisujesz do odpowiednich pól formularza, a później formularz przetwarzasz i uaktualniasz wpis.

Z tego co rozumiem i nadążam z rozumowaniem.Ten kod co podałeś to będzie działał jako link do wywołania formularzu, w którym będe zmieniał dane.Później połącze sie z bazą i za pomocą update into ... dodam nowe dane.Chodzi mi tylko o kod skryptu,który spowoduje że pola,które chce zmienić będą aktywne i można będzie modyfikować wartości.I jeszcze mam pytanie jak zrobić żeby otrzymane wyniki można było by zapisać do pliku tekstowego.
Użytkownik Riq edytował ten post 09 lipiec 2006, 08:28
Napisanie skryptu należy już do Ciebie.

- Nie proś o napisanie skryptu, zgłaszaj jedynie pytania dot. konkretnych problemów.
Dajemy wędkę a nie rybę ;)

Ok rozumiem.Zarzuciłem wędke ale coś ryby nie biorą,dlatego zwracam sie z pytaniem , czy w złym miejscu zarzuciłem,czy też w tej rzece nie ma wcale ryb :) .A wracając do skryptu ,zrobiłem zapisywanie do pliku,tylko niestety nie działa.Skrypt jest podobny do poprzedniego tylko dodane polecenia do operacji na pliku.
<? $polaczenie = mysql_connect("localhost", "w", "e"); mysql_select_db("w", $polaczenie); $uchwyt = fopen("txt/".$_SESSION['id'].".txt", "a"); $id=$_POST['id']; $wykonawca=$_POST['wykonawca']; $tytul=$_POST['tytul']; $dlugosc=$_POST['dlugosc']; $rodzajmuzyki=$_POST['rodzajmuzyki']; $rokwydania=$_POST['rokwydania']; $iloscutworow=$_POST['iloscutworow']; $produkt=$_POST['produkt']; $sql="SELECT * FROM utworymedium WHERE wykonawca LIKE '%$wykonawca%' AND tytul LIKE '%$tytul%' AND dlugosc LIKE '%$dlugosc%' AND rodzajmuzyki LIKE '%$rodzajmuzyki%'AND rokwydania LIKE '%$rokwydania%'AND iloscutworow LIKE '%$iloscutworow%'AND produkt LIKE '%$produkt%'"; $wynik = mysql_query($sql, $polaczenie)or die(mysql_error()); echo '<TABLE BORDER="1"> <tr><th>Id</th><th>Autor</th><th>Tytuł</th>< th>Długość(min)</th><th>Rodzaj muzyki</th><th>Rok wydania</th><th>Ilość utworów</th><th>Rodzaj nośnika</th></tr>'; while( $rekord = mysql_fetch_array($wynik) ) { echo "<tr><td>"; echo($rekord["id"]."</td>"); echo("<td>". $rekord["wykonawca"]."</td>" ); echo("<td>". $rekord["tytul"]."</td>" ); echo("<td>". $rekord["dlugosc"]."</td>" ); echo("<td>". $rekord["rodzajmuzyki"]."</td>" ); echo("<td>". $rekord["rokwydania"]."</td>" ); echo("<td>". $rekord["iloscutworow"]."</td>" ); echo("<td>". $rekord["produkt"]."</td></tr>" ); } echo "</TABLE>"; $tekst = "Id: ".$rekord['id']."\nAutor: ".$rekord['wykonwaca']."\nTytuł: ".$rekord['tytul']."\Rodzaj muzyki: ".$rekord['rodzajmuzyki']."\n\n"; fwrite($uchwyt, $tekst); echo("<a href='user.html'>Wstecz</a>" ); mysql_free_result($wynik); mysql_close($polaczenie); fclose($uchwyt); echo "<p> <a href=\"txt/".$_SESSION['id'].".txt\" target=\"blank\">Plik tekstowy</a> </p>"; ?>
Teoretycznie wszystko jest dobrze tzn nie wyświetla żadnych błędów ,tylko gdy klikne na link plik tekstowy to nie wyświetla bazy.

Pewnie dlatego, że nie istnieje takie coś jak $_SESSION['id'] :]
Zamień
$uchwyt = fopen("txt/".$_SESSION['id'].".txt", "a");
na
$uchwyt = fopen("txt/".session_id().".txt", "a");
i na początku skryptu, po <?php dodaj
session_start();
Użytkownik marrek13 edytował ten post 09 lipiec 2006, 20:44
Dzięki , po twoich wskazówkach zapisuje do pliku tekstowego,z tym że tylko same nagłówki tzn id,autora,tytuł i rodzaj muzyki ,ale bez elementów znalezionych lub całej bazy danych.Jaśniej mówiąc wyświetla się w kolumnie : id: , autor: , tytuł:,rodzaj muzyki:

Nie zauważyłem jeszcze tego błędu. Poczytaj sobie dokladnie o zasięgu zmiennych. Jeśli chcesz zapisać wyniki do pliku, to musisz robić to w pętli wyświetlającej wyniki, czyli
$tekst = "Id: ".$rekord['id']."\nAutor: ".$rekord['wykonwaca']."\nTytuł: ".$rekord['tytul']."\Rodzaj muzyki: ".$rekord['rodzajmuzyki']."\n\n"; fwrite($uchwyt, $tekst);
wrzucasz po
echo("<td>". $rekord["produkt"]."</td></tr>" )

Ok dzięki teraz już zapisuje mi oprócz autora,nie wiem czemu tak sie dzieje.Jak mógłbyś to sprawdź jaki jest błąd
Użytkownik Riq edytował ten post 10 lipiec 2006, 14:56
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.