Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/SQL] Błędna infoormacja skryptu
Forum PHP.pl > Forum > Przedszkole
free
Oto kod z ktorym walczylem pół dnia.

Formularz wysylania komentarza:
  1. <?
  2. if(isset($_GET['news_id'])){
  3.  $news_id=$_GET['news_id'];
  4. if(!empty($_SESSION['user_id'])){
  5. echo " dodaj komentarz";
  6. echo("
  7. <form action=akcja.php method="post">
  8. <input type=hidden name=news_id value=$news_id>
  9. Tytuł:<input type=text size=25 name=tytul value=tytul><br>
  10. Tresc krótka:<TEXTAREA name=txt COLS=30 ROWS=10>tresc</textarea><br></td></tr>
  11. <input type=submit name="dodaj komentarz" value=wyslij></form>
  12. ");
  13. }
  14. else {
  15. echo 'Dostęp zabroniony.<br><a href="index.php?page=login">Zaloguj (zarejestruj) się, aby dodawać komentarz.</a>';
  16. } }
  17. ?>


Kod odpowiedzialny za przesłanie danych do bazy MySQL
akcja.php --->> to on wyswietla niepoprawna informacje /błą zamiast ok/
  1. <?php
  2. require_once 'http.php';
  3. require("config.php");
  4. $conn=mysql_connect($host,$bazalogin,$bazahaslo);
  5. if(!empty($_SESSION['user_id'])){
  6. $tytul = $_POST['tytul'];
  7. $txt = nl2br($_POST['txt']);
  8.  
  9. if(!$tytul){ echo "Nie wypełniono pola "Tytuł"<br>";exit; }
  10. if(!$txt) { echo "Nie wypełniono pola "Komentarz"";exit; }
  11. else{
  12.  
  13. $sql = "INSERT INTO koment (id, news_id, tytul, txt, ksywa, ip, data)
  14. VALUES ('', '" . $_POST['news_id'] . "', '$tytul', '$txt', '".$_SESSION['ksywa']."' , '127.0.0.1', '2006-07-06' )";
  15. $wykonaj = mysql_query($news);
  16. if($wykonaj){
  17. echo 'ok';
  18. }else{
  19. echo 'blad';}
  20. }
  21.  
  22. }else{
  23. echo '<p>Brak autoryzacji.</p> <a href="index.php">Zaloguj</a>';
  24. }
  25. ?>

Skrypt po długiej walce dodaje poprawnie komentarze, ale zamiast informacji ok z kodu echo 'ok'; wykonuje instrukcje else i wypisuje bład pomimo ze dane są poprawnie przesylane do bazy.
Cysiaczek
  1. <?php
  2. if(mysql_query($news)){
  3. echo 'ok';
  4. }else{
  5. echo 'blad';}
  6. }
  7. ?>


Może tak zadziała.
free
Niestety to samo. Zamiast ok pojawia sie błąd, pomimo ze skrypt poprawnie dodaje komentarz do bazy.
UDAT
Spróbuj na odwrót, tzn.:
  1. <?php
  2. if(mysql_query($news) == false){
  3. echo 'blad';
  4. }else{
  5. echo 'ok';}
  6. }
  7. ?>


albo użyj mysql_num_rows()" title="Zobacz w manualu php" target="_manual
dawhol
gdzie masz zmiennna news ? zdefiniownaa ? bo jak moze ja sprawdzic skoro jej nie ma ? i to tu tkwi bład ;p

zamiast $news w mysql_query powinno byc $sql ;p

Tak to powinno wyglądac ;p
  1. <?php
  2. $sql = "INSERT INTO koment (id, news_id, tytul, txt, ksywa, ip, data)
  3. VALUES ('', '" . $_POST['news_id'] . "', '$tytul', '$txt', '".$_SESSION['ksywa']."' , '127.0.0.1', '2006-07-06' )";
  4. $wykonaj = mysql_query($sql);
  5. if($wykonaj){
  6. ?>
free
Dzieki za zainteresowanie tematem i pomoc.
Skorzystałem z mysql_num_rows() jak napisal UDAT.

Dawhal słuszna uwaga tez zauwazylem to ze nie mam zmiennej $news=...
Dodalem ją ale i tak nie działało poprawnie tzn wyskakiwal "bląd" zamiast "ok"
zobacze jeszcze twoja poprawke dawhol i dam znac czy tez jest dobra.
Poki co poprawilem tak: i działa poprawnie


  1. <?php
  2. $sql = "INSERT INTO koment88 (id, news_id, tytul, txt, ksywa, ip, data)
  3. VALUES ('', '" . $_POST['news_id'] . "', '$tytul', '$txt', '".$_SESSION['ksywa']."' , '127.0.0.1', '2006-07-06' )";
  4.  
  5.  mysql_query($sql)
  6. or die('Nie wysłano komentarza: ' . mysql_error());
  7.  
  8. }
  9. adres('news.php?page='.$_POST['news_id']. '');  }
  10. else
  11. {
  12. echo '<p>Brak autoryzacji.</p> <a href="index.php">Zaloguj</a>';
  13. }
  14. ?>
dawhol
Podejrzewam ze wyskakiwał ci błąd ponieważ dwukrotnie wykonywałes zapytanie sql. byc moze to dlatego.

  1. <?php
  2. $wykonaj = mysql_query($sql);
  3. ?>


Wersja w poscie wyzej wydaje sie byc ok na pierwszy zut oka smile.gif a moja wersja działa na 99,9 % bo nie sprawdzałem smile.gif

PS. Moja ksywka dawhol a nie dawhal smile.gif
free
Moim jubileuszowym 100 poście biggrin.gif zgadzam sie z Tobą dawhol.

błąd wyskakiwal bo dwókrotnie sie odwoływalem do zmiennej sql. Dziwi mnie tylko ze skrypt poprawnie wykonywal dodanie danych do bazy.

Najwazniejsze, ze obie wersje działaja poprawnie.
A po dodaniu do Twego kodu mojej funkcji
  1. <?php
  2. adres('news.php?page='.$_POST['news_id']. '');
  3. ?>
przekierunkowuje mnie na strone z danymi komentarzami :-0

Nasuwa mi si epytanie która wersja jest lepsza tzn wydajniejsz. Czy w zasadzie mozna uzywac dowolnie ?

I jeszcze taka uwaga jak zrobic by system poczekal np 3 sek i dopiero przeniosl mnie na strone wywolana z funkcji adres ();
dawhol
dodawał komenty poniewaz wykonywał pierwsze zapytanie mysql_query smile.gif a gdy chciał wykonac drugie no to ju mu nieszlo a zapytanioe o blad bylo do drugiego dodawania do bazy smile.gif

a co do wydajnośći winksmiley.jpg to nie powiem ci które lepsze winksmiley.jpg kazde ma swoje zalety smile.gif i wady smile.gif

Ale mysle ze to w sumie obojetne smile.gif ja na twoim miejscu dane które sa dodawane obioł bym funkcja addslashes uchroni cie ona przed dodaniem np. kodu html czy php do bazy smile.gif któy mógł by byc grożny dla strony smile.gif

a co do tego czekania to po co to ;p ? jak juz musi byc to chyba najlepiej za pomoca javy smile.gif
free
Zabezpiecze się przed kodem html przy pomocy funkcji htmlspecialchars. Czy addslashes bedzie lepsza ?
Zastanawiam sie jak w prosty sposobmozna ograniczyc niektore komendy html typu <b> <i> <a..> itp
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.