Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Gdzie tkwi błąd? - szukanie z bazy
Forum PHP.pl > Forum > Przedszkole
Larges
Kod
function szukaj()
{
echo "<form method='POST' action='newsy.php'>";
echo "<input type='text' name='id_newsa' size='20' value='id newsa' maxlength='20'><input type='submit' value='Szukaj' name='Szukaj'>";
echo "</form>";

if ($_POST['id_newsa'])
{
$query1 = mysql_query("select * from cms_news where id = '$id_newsa'");
while($rekord1 = mysql_fetch_array($query1))    
{
echo "<table border='0' width='600'>";
echo "<tr>";
echo "<td width='60%' bgcolor='#F5FAFC'>";
echo '<li><a href="newsy.php?id='.$rekord1[0].'" class="news_tyt2">';
echo "$rekord1[1]</A></li>";
echo "</td>";
echo "<td width='20%' bgcolor='#F5FAFC'>";
echo '<a href="newsy.php?id='.$rekord1[0].'" class="news_tyt">';
echo "$rekord1[9]</A>";
echo "</td>";
echo "<td width='20%' bgcolor='#F5FAFC'>";
echo '<a href="newsy.php?id='.$rekord1[0].'" class="news_tyt">';
echo "$rekord1[2]</A>";
echo "</td>";
echo "</tr>";
echo "</table>";
}
}
}



mysql_fetch_array(): supplied argument is not a valid MySQL result resource ;]

Dziękuję za pomoc.
piotrooo89
  1. <?php
  2. function szukaj()
  3. {
  4. echo "<form method='POST' action='newsy.php'>";
  5. echo "<input type='text' name='id_newsa' size='20' value='id newsa' maxlength='20'><input type='submit' value='Szukaj' name='Szukaj'>";
  6. echo "</form>";
  7.  
  8. if (isset($_POST['id_newsa']))
  9. {
  10. $id_newsa = $_POST['id_newsa'];
  11. $query1 = mysql_query("select * from cms_news where id = '$id_newsa'");
  12. while($rekord1 = mysql_fetch_array($query1))
  13. {
  14. echo "<table border='0' width='600'>";
  15. echo "<tr>";
  16. echo "<td width='60%' bgcolor='#F5FAFC'>";
  17. echo '<li><a href="newsy.php?id='.$rekord1[0].'" class="news_tyt2">';
  18. echo "$rekord1[1]</A></li>";
  19. echo "</td>";
  20. echo "<td width='20%' bgcolor='#F5FAFC'>";
  21. echo '<a href="newsy.php?id='.$rekord1[0].'" class="news_tyt">';
  22. echo "$rekord1[9]</A>";
  23. echo "</td>";
  24. echo "<td width='20%' bgcolor='#F5FAFC'>";
  25. echo '<a href="newsy.php?id='.$rekord1[0].'" class="news_tyt">';
  26. echo "$rekord1[2]</A>";
  27. echo "</td>";
  28. echo "</tr>";
  29. echo "</table>";
  30. }
  31. }
  32. }
  33. ?>
Mlodycompany
a nie lepiej zrobic zamiast where to like??
phpion
Cytat(Mlodycompany @ 21.05.2008, 20:35:36 ) *
a nie lepiej zrobic zamiast where to like??

Może spójrz po czym jest wyszukiwanie. Po id. W wyniku pewnie zwracany jest jeden rekord. Zastosowanie LIKE w tym przypadku jest tak samo niewydajne, co głupie.

PS: jak chcesz zastosować LIKE zamiast WHERE?
Mlodycompany
phpion nie zaglebialem sie w sedno skryptu
phpion
W takim razie po co zabierasz głos? Albo zapoznajesz się z problemem (ze skryptem) albo nie wystawiasz nosa.

@Larges:
Jeśli faktycznie w rezultacie otrzymujesz 0 lub 1 rekord (a tak powinno być przy wyszukiwaniu po ID) to sugeruję:
- dodać LIMIT 1 do zapytania
- wywalić pętlę while()
- dodać warunek z wykorzystaniem mysql_num_rows" title="Zobacz w manualu PHP" target="_manual
- jeśli znaleziono rekord przypisanie $r = mysql_fetch... i reszta podobnie jak masz
Larges
Kod
if (isset($_POST['id_newsa']))
{
$id_newsa = $_POST['id_newsa'];
$query1 = mysql_query("select * from cms_news where id = '$id_newsa'");
while($rekord1 = mysql_fetch_array($query1))    
{
echo "<table border='0' width='800'>";
echo "<tr>";
echo "<td width='81' valign='top'>";
echo "</td>";
echo "<td width='335' valign='top'>";
echo "<br><br><form method='POST' action='newsy.php'>";
echo "<br><font color='#7F7F7F'>Tytuł:</font><br>";
echo "<input type='text' name='tytul' size='70' value='$rekord1[1]' maxlength='120'>";
echo "<br><font color='#7F7F7F'>Wstęp:</font><br>";
echo "<textarea rows='8' name='lead' cols='86'>$rekord1[5]</textarea>";
echo "<br><font color='#7F7F7F'>Rozwinięcie:</font><br>";
echo "<textarea rows='15' name='tresc' cols='86'>$rekord1[6]</textarea>";
echo "<br><font color='#7F7F7F'>Zródło:</font><br>";
echo "<input type='text' name='zrodlo' size='70' value='$rekord1[7]' maxlength='20'><br>";
echo "<input type='submit' value='Zapisz zmiany'' name='ok'>";
echo "</form>";
echo "</td>";
echo "</tr>";
echo "</table>";

if (isset($_POST['tytul']) || isset($_POST['lead']) || isset($_POST['tresc']) || isset($_POST['zrodlo']))
{
mysql_query("update cms_news set tytul='".$_POST['tytul']."' and wstep='".$_POST['lead']."' and tresc='".$_POST['tresc']."' and zrodlo='".$_POST['zrodlo']."' where id = '$id_newsa'");
}
}
}


Kodziku nie przetworzyłem zabardzo. Wyświetlanie naturalnie działa, ale teraz chciałbym wprowadzić możliwośc update.

Jak możecie się domyślić - zapytanie do bazy danych nie działa. W sumie update stale mi sprawia problemy odkąd mam z nim do czynienia (raptem 1 dzien winksmiley.jpg)

Gdzie twki kardynalny błąd? Z góry ziękuję za pomoc.
phpion
Nie:
  1. UPDATE tabela SET pole1=wartosc1 AND pole2=wartosc2

tylko:
  1. UPDATE tabela SET pole1=wartosc1, pole2=wartosc2

Czyli nie AND tylko ,
smile.gif
piotrooo89
moze tak:

  1. <?php
  2. if (isset($_POST['tytul']) || isset($_POST['lead']) || isset($_POST['tresc']) || isset($_POST['zrodlo']))
  3. {
  4. $id_newsa = $_POST['id_newsa'];
  5. $tytul=$_POST['tytul'];
  6. $lead=$_POST['lead'];
  7. $tresc=$_POST['tresc'];
  8. $zrodlo=$_POST['zrodlo'];
  9. mysql_query("UPDATE cms_news SET 
  10. tytul='$tytul',
  11. wstep='$lead', 
  12. tresc='$tresc', 
  13. zrodlo='$zrodlo WHERE id = '$id_newsa'");
  14. }
  15. ?>
Larges
Próbowałem obu sposobów i nadal nic w bazie się nie zmienia ;]
Co najgorsze - nie ma żadnego błędu.
piotrooo89
mnie sie wydaje że błąd jest w nawiasach przy if'ie.

  1. <?php
  2. if ( (isset($_POST['tytul'])) || (isset($_POST['lead'])) || (isset($_POST['tresc'])) || (isset($_POST['zrodlo'])) )
  3. ?>
Larges
Testuję, cuduję i nie wykrywam błędu ;]
Ehhh... instrukcję if też modyfikowałem i nic.
marcio
A moze
  1. <?php
  2. if (isset($_POST['id_newsa']))
  3. {
  4. $id_newsa = $_POST['id_newsa'];
  5. $query1 = mysql_query("select * from cms_news where id = '$id_newsa'");
  6. while($rekord1 = mysql_fetch_array($query1))
  7. {
  8. echo "<table border='0' width='800'>";
  9. echo "<tr>";
  10. echo "<td width='81' valign='top'>";
  11. echo "</td>";
  12. echo "<td width='335' valign='top'>";
  13. echo "<br><br><form method='POST' action='newsy.php'>";
  14. echo "<br><font color='#7F7F7F'>Tytuł:</font><br>";
  15. echo "<input type='text' name='tytul' size='70' value='$rekord1[1]' maxlength='120'>";
  16. echo "<br><font color='#7F7F7F'>Wstęp:</font><br>";
  17. echo "<textarea rows='8' name='lead' cols='86'>$rekord1[5]</textarea>";
  18. echo "<br><font color='#7F7F7F'>Rozwinięcie:</font><br>";
  19. echo "<textarea rows='15' name='tresc' cols='86'>$rekord1[6]</textarea>";
  20. echo "<br><font color='#7F7F7F'>Zródło:</font><br>";
  21. echo "<input type='text' name='zrodlo' size='70' value='$rekord1[7]' maxlength='20'><br>";
  22. echo "<input type='submit' value='Zapisz zmiany'' name='ok'>";
  23. echo "</form>";
  24. echo "</td>";
  25. echo "</tr>";
  26. echo "</table>";
  27.  
  28. if (!empty($_POST['tytul']) && !empty($_POST['lead']) && !empty($_POST['tresc']) && !empty($_POST['zrodlo']) && isset($_POST['ok']))
  29. {
  30. mysql_query('update cms_news set tytul = "'.$_POST['tytul'].'", wstep = "'.$_POST['lead'].'", tresc = "'.$_POST['tresc'].'", zrodlo = "'.$_POST['zrodlo'].'" where id = '.$id_newsa.'');
  31. }
  32. }
  33. }
  34. ?>


P.S ewentualnie dodaj resource z polaczenia z bazy do mysql_query()
piotrooo89
a może tu jest błąd:

  1. <form method='POST' action='newsy.php'>


daj tak:
  1. <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
Larges
Niestety, nadal nic z tego (;
marcio
A klamry zrob tak
  1. <?php
  2. if (isset($_POST['id_newsa']))
  3. {
  4. $id_newsa = $_POST['id_newsa'];
  5. $query1 = mysql_query("select * from cms_news where id = '$id_newsa'");
  6. while($rekord1 = mysql_fetch_array($query1))
  7. {
  8. echo "<table border='0' width='800'>";
  9. echo "<tr>";
  10. echo "<td width='81' valign='top'>";
  11. echo "</td>";
  12. echo "<td width='335' valign='top'>";
  13. echo "<br><br><form method='POST' action='newsy.php'>";
  14. echo "<br><font color='#7F7F7F'>Tytuł:</font><br>";
  15. echo "<input type='text' name='tytul' size='70' value='$rekord1[1]' maxlength='120'>";
  16. echo "<br><font color='#7F7F7F'>Wstęp:</font><br>";
  17. echo "<textarea rows='8' name='lead' cols='86'>$rekord1[5]</textarea>";
  18. echo "<br><font color='#7F7F7F'>Rozwinięcie:</font><br>";
  19. echo "<textarea rows='15' name='tresc' cols='86'>$rekord1[6]</textarea>";
  20. echo "<br><font color='#7F7F7F'>Zródło:</font><br>";
  21. echo "<input type='text' name='zrodlo' size='70' value='$rekord1[7]' maxlength='20'><br>";
  22. echo "<input type='submit' value='Zapisz zmiany'' name='ok'>";
  23. echo "</form>";
  24. echo "</td>";
  25. echo "</tr>";
  26. echo "</table>";
  27. }
  28.  
  29. if (!empty($_POST['tytul']) && !empty($_POST['lead']) && !empty($_POST['tresc']) && !empty($_POST['zrodlo']) && isset($_POST['ok']))
  30. {
  31. mysql_query('update cms_news set tytul = "'.$_POST['tytul'].'", wstep = "'.$_POST['lead'].'", tresc = "'.$_POST['tresc'].'", zrodlo = "'.$_POST['zrodlo'].'" where id = '.$id_newsa.'');
  32. }
  33. }
  34. ?>

Albo
  1. <?php
  2. if (isset($_POST['id_newsa']))
  3. {
  4. $id_newsa = $_POST['id_newsa'];
  5. $query1 = mysql_query("select * from cms_news where id = '$id_newsa'");
  6. while($rekord1 = mysql_fetch_array($query1))
  7. {
  8. echo "<table border='0' width='800'>";
  9. echo "<tr>";
  10. echo "<td width='81' valign='top'>";
  11. echo "</td>";
  12. echo "<td width='335' valign='top'>";
  13. echo "<br><br><form method='POST' action='newsy.php'>";
  14. echo "<br><font color='#7F7F7F'>Tytuł:</font><br>";
  15. echo "<input type='text' name='tytul' size='70' value='$rekord1[1]' maxlength='120'>";
  16. echo "<br><font color='#7F7F7F'>Wstęp:</font><br>";
  17. echo "<textarea rows='8' name='lead' cols='86'>$rekord1[5]</textarea>";
  18. echo "<br><font color='#7F7F7F'>Rozwinięcie:</font><br>";
  19. echo "<textarea rows='15' name='tresc' cols='86'>$rekord1[6]</textarea>";
  20. echo "<br><font color='#7F7F7F'>Zródło:</font><br>";
  21. echo "<input type='text' name='zrodlo' size='70' value='$rekord1[7]' maxlength='20'><br>";
  22. echo "<input type='submit' value='Zapisz zmiany'' name='ok'>";
  23. echo "</form>";
  24. echo "</td>";
  25. echo "</tr>";
  26. echo "</table>";
  27. }
  28. }
  29.  
  30. if (!empty($_POST['tytul']) && !empty($_POST['lead']) && !empty($_POST['tresc']) && !empty($_POST['zrodlo']) && isset($_POST['ok']))
  31. {
  32. mysql_query('update cms_news set tytul = "'.$_POST['tytul'].'", wstep = "'.$_POST['lead'].'", tresc = "'.$_POST['tresc'].'", zrodlo = "'.$_POST['zrodlo'].'" where id = '.$id_newsa.'');
  33. }
  34. ?>
Larges
Oba sposoby z klamrami tylko pogorszyły sprawę, bo nie było wyników wyszukiwania.
marcio
A masz jakis value tzn sa wartosci z bazy w input/textarea??
Larges
były do tej pory. Właśnie się borykam z ich brakiem a to przez niezapisanie stanu przed zmianami winksmiley.jpg Zanim kombinowałem z klamerkami wedle wzoru.
marcio
POkaz wiecej kodu jestes pewny ze id_newsa przwesylasz poprzez POST a nie GET??
Wyswietl sobie oba zapytania przypisz do zmiennej i pozniej echo() i pokaz jak wygladaja

P.S daj tez mysql_error()
Larges
Kod
function formularz2()
{
echo "<form method='POST' action='newsy.php'>";
echo "<input type='text' name='id_newsa' size='20' value='id newsa' maxlength='20'><input type='submit' value='Szukaj' name='Szukaj'>";
echo "</form>";

}
function szukaj()
{
if (isset($_POST['id_newsa']))
{
$id_newsa = $_POST['id_newsa'];
$query1 = mysql_query("select * from cms_news where id = '$id_newsa'");
while($rekord1 = mysql_fetch_array($query1))    
{
echo "<table border='0' width='800'>";
echo "<tr>";
echo "<td width='81' valign='top'>";
echo "</td>";
echo "<td width='335' valign='top'>";
echo "<br><br><form method='POST' action='newsy.php'>";
echo "<br><font color='#7F7F7F'>Tytuł:</font><br>";
echo "<input type='text' name='tytul' size='70' value='$rekord1[1]' maxlength='120'>";
echo "<br><font color='#7F7F7F'>Wstęp:</font><br>";
echo "<textarea rows='8' name='lead' cols='86'>$rekord1[5]</textarea>";
echo "<br><font color='#7F7F7F'>Rozwinięcie:</font><br>";
echo "<textarea rows='15' name='tresc' cols='86'>$rekord1[6]</textarea>";
echo "<br><font color='#7F7F7F'>Zródło:</font><br>";
echo "<input type='text' name='zrodlo' size='70' value='$rekord1[7]' maxlength='60'><br>";
echo "<input type='submit' value='Zapisz zmiany'' name='ok'>";
echo "</form>";
echo "</td>";
echo "</tr>";
echo "</table>";


$id_newsa = $_POST['id_newsa'];
$tytul=$_POST['tytul'];
$lead=$_POST['lead'];
$tresc=$_POST['tresc'];
$zrodlo=$_POST['zrodlo'];
mysql_query("UPDATE cms_news SET tytul='$tytul', wstep='$lead', tresc='$tresc', zrodlo='$zrodlo WHERE id = '$id_newsa'");

}
}
}



Treść w polach wyświetla się prawidłowo. Nic natomiast się nie zmienia w bazie danych. . ID_newsa przekazywany metodą POST
piotrooo89
w jakim pliku to wywołujesz? newst.php?

  1. <?php
  2. $id_newsa = $_POST['id_newsa'];
  3. $tytul=$_POST['tytul'];
  4. $lead=$_POST['lead'];
  5. $tresc=$_POST['tresc'];
  6. $zrodlo=$_POST['zrodlo'];
  7. mysql_query("UPDATE cms_news SET tytul='$tytul', wstep='$lead', tresc='$tresc', zrodlo='$zrodlo WHERE id = '$id_newsa'");
  8. ?>


bo jak nie to nie będzie działać
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.