[php]problem z działaniem skryptu komiksowego

0

Witam, od pewnego czasu piszę skrypt komiksu sieciowego na własny użytek, jednak mam problem z wyświetlaniem komiksów (dodawanie do bazy działa). Nie wiem co jest źle - w php jestem nowy. A i sora, że robię w tabelkach, ale to jest łatwiejsze, niż jakieś cholerne divy (chciałem użyć innego słowa, ale się powstrzymałem).

Plik index.php:

<!--HEADER-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<META HTTP-EQUIV="Creation-date" CONTENT="2002.03.16">
<META HTTP-EQUIV="Reply-to" CONTENT="adres zwrotny">
<META NAME="Description" CONTENT="opis dokumentu">
<META NAME="Author" CONTENT="autor dokumentu">
<META NAME="Generator" CONTENT="Zajączek 3.0">
<LINK REL="STYLESHEET" HREF="style.css" TYPE="text/css">
<TITLE><?php   include 'config.php'; echo($comicname);?></TITLE>
</HEAD>
<BODY>
<!--/HEADER-->
<TABLE CELLSPACING="0" WIDTH="100%">

<TR height="64px">
 <TD CLASS="backpro" WIDTH="64px"> </TD>
 <TD CLASS="backpro"> </TD>
 <TD CLASS="backpro" width="64px"> </TD>
</TR>
<TR>
 <TD CLASS="backpro" width="64px"> </TD>
 <TD CLASS="back" height="150px"><img src="logo.png"> </TD>
 <TD CLASS="backpro" width="64px"> </TD>
</TR>
<TR>
 <TD CLASS="backpro" width="64px"> </TD>
 <TD CLASS="back"><?php
 function comiclst() {
   echo("<center>Aktualnie w bazie $comicname znajdują się komiksy o następujących tytułach:<br>");
   $link = mysql_connect($mysqlhost,$mysqluser,$mysqlpass); // łączę z bazą
   if (!$link) {
     die('<font color=#FF0000>Błąd połączenia: ' . mysql_error() . '</font>');
   }
   $db_link = mysql_select_db($mysqlbase); //wybieranie bazy
   if (!$db_link) {
     die('<font color=#FF0000>Błąd połączenia: ' . mysql_error() . '</font>');
   }
   $query = mysql_query("SELECT id, title FROM $mysqltable ORDER BY id ASC"); //kwerenda do bazy
   while ($row=mysql_fetch_array($query, MYSQL_ASSOC)) {
     echo("<a href=\"index.php?id=" . $row['id'] . "\">" . $row['title'] . "</a><br>");
     //typy: id: BigInt, auto incremental; title varchar, długości nie pamiętam
   }
   mysql_close();
   echo("</center>");
 }
 function viewcomic($cid) {
   echo("<center>");
   $link = mysql_connect($mysqlhost,$mysqluser,$mysqlpass);
   if (!$link) {
     die('<font color=#FF0000>Błąd połączenia: ' . mysql_error() . '</font>');
   }
   $db_link = mysql_select_db($mysqlbase);
   if (!$db_link) {
     die('<font color=#FF0000>Błąd połączenia: ' . mysql_error() . '</font>');
   }
   $query = mysql_query("SELECT id, url, title FROM $mysqltable WHERE id='$cid'");
   while ($row=mysql_fetch_array($query, MYSQL_ASSOC)) {
     echo("<h1>$comicname - " . $row['title'] . "</h1><br><img src=\"" . $row['url'] . "\" alt=\"" . $row['title'] . "\"><br>");
   }
   mysql_close();
   echo("</center>");
 }
 if (empty($_GET)) {
   comiclst();
 }
 else {
   $id = $_GET['id'];
   viewcomic($id);
 }
 ?>
 </TD>
 <TD CLASS="backpro" width="64px"> </TD>
</TR>
<TR>
 <TD CLASS="backpro" width="64px"> </TD>
 <TD CLASS="backpro"> </TD>
 <TD CLASS="backpro" width="64px"> </TD>
</TR>
</TABLE>


<!--FOOTER-->
</BODY>
</HTML>
<!--/FOOTER-->

Jednak kiedy uruchamiam to w krasnalu to widzę:
Błąd połączenia: Nie wybrano żadnej bazy danych

Czyli niby baza jest wybrana, a nie jest.

Jeszcze plik config.php:

<?php
   $mysqlhost     = "localhost";
  $mysqluser     = "root";
  $mysqlpass     = "krasnal";
  $mysqltable    = "smoczy_komiks";
  $mysqlbase     = "testdb";
  $adminname     = "login";
  $adminpassword = "haslo";
  $comicname     = "KomiX";
?>

0

Przypominam, bo temat jest bardzo dla mnie ważny.

Edward Gierek napisał(a)

Pomożecie?
</quote>

0

Hm .. Sprawdź co jest w zmiennej $mysqlbase.

Spróbuj wybrać bazę tak:
mysql_select_db($mysqlbase, $link);

0

Zmienne z config.php nie są globalne, zatem w funkcjach nie są widoczne.
Wynik z włączonym error_reporting na E_ALL:

Notice: Undefined variable: comicname in /.../test.php on line 32
Aktualnie w bazie znajdują się komiksy o następujących tytułach:
Notice: Undefined variable: mysqlhost in /.../test.php on line 33 
Notice: Undefined variable: mysqluser in /.../test.php on line 33 
Notice: Undefined variable: mysqlpass in /.../test.php on line 33 
Notice: Undefined variable: mysqlbase in /.../test.php on line 37 
Błąd połączenia: No database selected

Zatem ostatecznie wykonuje się:

$link = mysql_connect(null, null, null);
$db_link = mysql_select_db(null);
0

A jak zrobić, żeby były globalne?

P.S. Na moim hosting register_globals jest wł.

0

Register globals nic do tego nie ma..
Jesli juz chcesz z poziomu funkcji odwolywac sie do zmiennych globalnych (co nie jest dobrym rozwiazaniem) to musisz uzyc instrukcji global, pokaze na przykladzie:

function comiclist() {
global $mysqlhost, $mysqlbase; //itd..
}

0

Dziękuję za wszystkim za pomoc, a szczególnie Administracji za nieskasowanie tego tematu za lamerstwo.

Aha i dziękuję panu gfdgdf kimkolwiek on jest.

Kod działa.

0

My tu jesteśmy od tego żeby pomagać.
To jest na prawdę luzackie forum, tylko w skrajnych przypadkach dochodzi do tego że cała obsada kogoś znienawidzi.

Masz jeszcze lekturę z manuala:
http://pl.php.net/global

1 użytkowników online, w tym zalogowanych: 0, gości: 1