Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wszystko napisane, a więc w czym błąd ?
Forum PHP.pl > Forum > Przedszkole
Inti
Witam

Stworzyłem ostatnio prostą stronę PHP5, która łączy się z bazą MySQL 5.0. Wszystko działa bardzo dobrze. Index.php to praktycznie same funkcję, które odpowiedzialne są za wyświetlanie podstron, dodawanie fraz istniejącyh stron do bazy - mam zamiar w późniejszej fazie dodać panel administracyjny z obsługą linków na stronie, by sam skrypt za mnie już tworzył poszczególne podstrony.

Wrócę teraz do problemu. Mianowicie plik form.php ma odpowiadać za dodanie konkretnych komentarzy do podstron i tematów na nich zawartych - w tej chwili ustawiony na sztywno na temat numer 3. Pytanie brzmi dlaczego dane nie są przekazywane do bazy - siedzę nad tym od kilku dobrych godzin i nie mogę się ruszyć dalej sciana.gif Proszę o pomoc wstydnis.gif

Kod
<?php
    
    $x = $_GET['x'];
    $link = 'index.php?x='.$x;
    
    $title = $_POST['title'];
    $komentarz = $_POST['komentarz'];
    $nick = $_POST['nick'];
    
    echo $title.' '.$komentarz.' '.$nick;
    
    if (isset($title) && isset($comment) && isset($nick)) {
        //$sql = mysql_pconnect("localhost", "pageuser", "");
        //$baza = mysql_select_db("pages", $sql);
        
        //if ($title!="" and $comment!="" and $nick!="") {
        //echo "Dodawanie komentarza. Dzięki :D";
        
        //$q = "SELECT ko.id FROM komentarze ko, kategorie ka";
        //$q .= " WHERE ko.title='$setpage[1]' and st.id=ka.ids";
        //$wynik = mysql_query($q);
        //$ileich = mysql_num_rows($wynik);
        
        //$idk = $x[strlen($x)-1];
        $sql = mysql_pconnect("localhost", "pageuser", "");
        $baza = mysql_select_db("pages", $sql);
        
        $data_dodania = date("Y-m-d");    
        $q = "INSERT INTO komentarze (idk, title, comment, nick, date)
                    VALUES (3, '$title', '$komentarz', '$nick', '$data_dodania')";
        $wynik = mysql_query($q);
        //}
    }
    
        //echo "Nie wypełnienie, któregoś z pól uniemożliwia wystawienie komentarza";
        //}
        
    echo '<form action="'.$link.'" method="post">';
    
    ?>
    
    <table border="0" align="center" cellPadding="2" cellSpacing="0" width="430" style="margin-left: 15">
        <tr>
            <td width="430" colspan="2">
            &nbsp;Dodaj komentarz
            </td>
        </tr>
        <tr>
            <td width="130">
            &nbsp;Tytuł :
            </td>
            <td width="300">
            &nbsp;<input type="text" size=20 name="title">
            </td>
        </tr>
        <tr>
            <td width="130" valign="top" >
            &nbsp;Komentarz :
            </td>
            <td width="300">
            &nbsp;<textarea name="komentarz" rows="3" cols="30" wrap="physical">Tekst</textarea>
            </td>
        </tr>
        <tr>
            <td width="130">
            &nbsp;Nick :
            </td>
            <td width="300">
            &nbsp;<input type="text" size=10 name="nick">
            </td>
        </tr>
        <tr>
            <td width="430" colspan="2" align="right">
            &nbsp;<input type="submit" name="dodaj" value="     Dodaj     ">
            </td>
        </tr>
    </table>
    </form>


Pozdrawiam Inti

PS. Być może istnieje tutaj jakiś głupi błąd, a ja już jestem tak wypalony całością, że nie patrzę na to trzeźwym okiem. Tak dodatkowo łączenie z bazą odbywa się w pliku function.php, który to dodaje w odpowiednim miejscu plik form.php.
Daimos
przesylasz dane z formularza metoda POST a pobierasz metoda GET
popraw poczatek i zamiast:
  1. <?php
  2. $x = $_GET['x'];
  3. $link = 'index.php?x='.$x;
  4.  
  5. $title = $_GET[$title];
  6. $komentarz = $_GET[$komentarz];
  7. $nick = $_GET[$nick];
  8. ?>

daj:
  1. <?php
  2. $x = $_GET['x'];
  3. $link = 'index.php?x='.$x;
  4.  
  5. $title = $_POST[$title];
  6. $komentarz = $_GET[$komentarz];
  7. $nick = $_POST[$nick];
  8. ?>
Inti
Problem w tym, że wstępnie miałem tam wrpowadzone

Kod
$title = $_POST[$title];
$komentarz = $_POST[$komentarz];
$nick = $_POST[$nick];


lecz mimo wszystko dany w bazie jak nie było tak i nie ma. Wszystkie inne zapytania w programie działają, więc połączenie z bazą jest :?:
Daimos
oj sam bezmyslnie skopiowalem
to jest zle, daj tak:
  1. <?php
  2. $title = $_POST['title'];
  3. $komentarz = $_POST['komentarz'];
  4. $nick = $_POST['nick'];
  5. ?>
Inti
:]

No przed chwilą tak dałem i sprawdzałem na różne sposoby, nawet odkomentowując cześć z logowaniem do bazy i nic.

Zrobię tak poprawię u góry na _POST na forum oraz cudzysłowy, by już o tym błędzie nie pisać. Mimo wszystko dalej nie działa sciana.gif
Daimos
tutaj tez masz blad:
  1. <?php
  2. $komentarz = $_POST['komentarz'];
  3. $nick = $_POST['nick'];
  4.  
  5.  
  6. if (isset($title) && isset($comment) && isset($nick)) {
  7. ?>

sprawdzasz czy jest zmienna $comment, a masz zmienna $komentarz, no i skrypt sie nie wykonuje, popraw
Hazel
Zmień wszystkie wiersze wykonjące zapytania na:

  1. <?php
  2. $wynik = mysql_query($q) or die(mysql_error());
  3. ?>

i pokaż, co się dzieje, najpewniej błąd jest w bazie.
Inti
my salsa dzięki

Rzeczywiście zapomniałem zmienić comment na komentarz

Probelm był w tym, że podczas pierwotnego uruchamiania nie działała mi funkcja, a jako że PHPem bawię się od niedawna to myślałem, że była jakaś kolizja nazw - czasem się zdarza. No nic wielkie dzięki za pomoc.

Teraz mam problem taki, że wywołuję Form.php w pętli i dodaje mi 3 rekordy zamiast jednego. Ale tym zaraz się zajmę - mam nadzieję, że pójdzie ok.

Pozdrawiam Inti - świetne forum happy.gif
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.