Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z usuwaniem i dodawaniem
ultramega-ok
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 31.01.2005
Skąd: stąd :)

Ostrzeżenie: (0%)
-----


Mam taką małą bazę dla celów ćwiczebnych smile.gif ale niestety cos mi nie działa przy usuwaniu rekordów. Wyświetla się taki komunikat:
---------------------------------------
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
--------------------------------------------------------------------------------
Apache/1.3.23 Server at localhost Port 80
---------------------------------------

Na dodatek jeśli dodam nową osobę do bazy, to po odświeżeniu strony ten sam rekord dodaje się po raz drugi, po następnym odświeżeniu jeszcze raz i tak w kółko - jak temu zapobiec? blink.gif

---------------------------------------
Oto kod:

<?php
mysql_connect( "localhost", "root", "")
or die( "nie mozna sie polaczyc z mysql.");
mysql_select_db( "bazaa" )
or die( "nie mozna wybrac bazy.");

if( $co == 'dodaj' )
{
if( $imie && $nazwisko && $telefon )
{
$query = "INSERT INTO book (nr, imie, nazwisko, telefon) " ;
$query .= "VALUES ('', '$imie', '$nazwisko', '$telefon');" ;
$baz = mysql_query( $query );
/* $baz= mysql_query( "INSERT INTO book (nr, imie, nazwisko, telefon) VALUES ('', '$imie', '$nazwisko', '$telefon');" );*/
}
}
elseif( $co == 'skasuj') {
$baz = mysql_query
("DELETE FROM book WHERE nr='$id' LIMIT 1;")
or die("blad w kasowaniu");
}

$baz = mysql_query("SELECT * FROM book;")
or die("blad w zapytaniu.");

print( "<table border=0 cellpadding=5 cellspacing=2 bgcolor=teal>");
print( "<tr><td><b>imie</b></td><td><b>nazwisko</b></td>");
print( "<td><b>telefon</b></td></tr>\n");
while( $rekord = mysql_fetch_array( $baz ))
{
$id = $rekord[0];

print( "<tr><td>$rekord[1]</td><td>$rekord[2]</td><td>$rekord[3]</td>");
print( "<td><a href=\"book.php?co=skasuj&id=$id\">skasuj</a></td></tr>\n" );
}
print "</table>" ;
print '<form method="get">Nowy rekord:' ;
print '<input type="hidden" name="co" value="dodaj"><table>' ;
print '<tr><td>imie:</td><td><input type="text" name="imie"></td></tr>' ;
print '<tr><td>nazwisko:</td><td><input type="text" name="nazwisko"></td></tr>' ;
print '<tr><td>telefon:</td><td><input type="text" name="telefon"></td></tr></table>' ;
print '<input type="submit" value="dodaj"></form>' ;
?>
Go to the top of the page
+Quote Post
Vertical
post
Post #2





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $baz= mysql_query( &#092;"INSERT INTO book (nr, imie, nazwisko, telefon) VALUES ('', '$imie', '$nazwisko', '$telefon');\" )
  3. ?>

Może powinno być:
  1. <?php
  2. $baz= mysql_query( &#092;"INSERT INTO book VALUES (NULL, '$imie', '$nazwisko', '$telefon');\" )
  3. ?>

Co drugiego problemu to zrób tak, żeby nie można było dodać dwóch takich samych użytkowników:
  1. <?php
  2. //łączenie do bazy
  3. $sql = &#092;"SELECT * FROM tabela WHERE imie = '$imie' AND nazwisko = '$nazwisko' AND telefon = '$telefon'\";
  4. $result = mysql_query($sql);
  5. $row_count = mysql_num_rows($result);
  6. if($row_count != 0)
  7. {
  8. echo (&#092;"Nie można dodać! Podane informacje już są w bazie!n\");
  9. } else
  10. {
  11. //dodawanie do bazy
  12. }
  13. ?>

Poza tym jest jeszcze trochę innych błędów:
1.
Cytat
  1. <?php
  2. if( $imie && $nazwisko && $telefon )
  3. ?>

Powinno być:
  1. <?php
  2. if( isset ($imie && $nazwisko && $telefon ) )
  3. ?>

2. Używaj BBcode!

Ten post edytował Vertical 31.01.2005, 14:23:59
Go to the top of the page
+Quote Post
crash
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Vertical: ekhm, między nazwą tabeli a VALUES można podawać przecież nazwy kolum, które chce się wypełnić INSERT'em, to nie jest błąd.

ultramega-ok: Nie dawaj średnika na końcu zapytań MySQL w php. No i pamiętaj o BBCode...

Ten post edytował crashu 31.01.2005, 13:36:24


--------------------
Go to the top of the page
+Quote Post
Vertical
post
Post #4





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat
Nie dawaj średnika na końcu zapytań MySQL

To także nie jest błąd
Go to the top of the page
+Quote Post
ultramega-ok
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 31.01.2005
Skąd: stąd :)

Ostrzeżenie: (0%)
-----


Po pierwsze:
kiedy dałem
  1. <?php
  2. isset ($imie && $nazwisko && $telefon )
  3. ?>

to wyskakuje mi taki błąd:
Cytat
Parse error: parse error, expecting `','' or `')'' in d:\moje dokumenty\www\book\main.php on line 17

Czy ta funkcja 'isset' rzeczywiście jest konieczna? Przecież funkcja
Cytat
if( $imie && $nazwisko && $telefon )

sprawdza czy te pola nie są NULL-ami. Czy to nie wystarczy?

Po drugie:
Do Verticala: ja nie chcę blokować możliwości wpisania dwóch takich samych osób - ja chcę tylko, żeby po odświeżeniu strony nie dodawał się do bazy jeszcze raz ten sam rekord. Czy da się to jakoś zrobić? (przecież musi się dać smile.gif )

Po trzecie:
Usuwanie z bazy mi nie działa. Ktoś mi mówił, ze to może być jakis błąd w konfiguracji mySQL czy php na moim komputerze ("twoje php dziala jako modul CGI"). Mam PHPTriad i po zainstalowaniu tego pakietu nic nie zmieniałem w konfiguracji (nawet nie wiem jak tongue.gif ).
Wie ktoś jak zrobić to usuwanie??

Ten post edytował ultramega-ok 31.01.2005, 18:30:53
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
ja chcę tylko, żeby po odświeżeniu strony nie dodawał się do bazy jeszcze raz ten sam rekord

To po dodaniu rekordu przekieruj usera na inna strone (header() )

Cytat
Czy ta funkcja 'isset' rzeczywiście jest konieczna? Przecież funkcja ( $imie && $nazwisko && $telefon )

Jest konieczna, bo sprawdza czy zmienna ISTNIEJE, dopiero jak zmienna istnieje mozesz sprawdzic czy jest NULLem.

Cytat
isset ($imie && $nazwisko && $telefon )

MAN:
Cytat
bool isset ( mixed var [, mixed var [, ...]])

  1. <?php
  2. isset ($imie, $nazwisko, $telefon )
  3. ?>
zwroci TRUE jesli WSZYSTKIE zmienne beda istnialy


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Ociu
post
Post #7





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Masz takie cos
index.php?co=skasuj&id={numerek, np. 2}

  1. <?php
  2.  elseif( $co == 'skasuj') {
  3. $baz = mysql_query
  4. (&#092;"DELETE FROM book WHERE nr='\".$_GET['id'].\"' LIMIT 1\")
  5. or die(&#092;"blad w kasowaniu:\". mysql_error());
  6. }
  7.  
  8. ?>


Staraj dawac zawsze w die(); mysql_error() ponieważ wywali info o błedach w zapytaniu mysql, a nie sam text 'blad w kasowaniu'.
pozdrawiam
Go to the top of the page
+Quote Post
Puciek
post
Post #8


TAO programowania


Grupa: Zarejestrowani
Postów: 340
Pomógł: 3
Dołączył: 25.03.2003
Skąd: ze słoika

Ostrzeżenie: (30%)
XX---


  1. <?php
  2. if( isset( $zmienna) && isset( $zmienna2 ) && isset( $zmienna3 ) )
  3. ?>

tyle w temacie

Ten post edytował Puciek 31.01.2005, 18:49:18


--------------------

http://puciek.wordpress.com prywatnie o świecie
Go to the top of the page
+Quote Post
ultramega-ok
post
Post #9





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 31.01.2005
Skąd: stąd :)

Ostrzeżenie: (0%)
-----


Dzięki wszystkim za pomoc.
Ale nadal pozostał problem tego usuwania z bazy. smile.gif Kod niby powinien działać, a jednak wyskakuje taki błąd:
Cytat
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

A w logu błędów:
Cytat
[Sat Feb 05 21:19:48 2005] [error] [client 127.0.0.1] Premature end of script headers: c:/apache/php/php.exe


Mam PHPTriad. Wie ktoś może jak powinienem zmienić konfigurację programu aby mySQL działało mi poprawnie?questionmark.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 06:23