Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jeśli rekord znajduje się w bazie to nie wysyłaj
Forum PHP.pl > Forum > Przedszkole
Maze123987
Mam taki kod dodawania formularzy:

  1. <?php
  2. include 'config.php';
  3. $data = date("d.m.Y H:i:s");
  4.  
  5. echo '<center><b>Dodawnie nowego newsa</b><br /><br />';
  6. echo '<form action="add.php?dodaj=yes" method="post"><table border=0>';
  7. echo '<tr><td align=right>Tytuł newsa:</td><td><input type="text" name="tytul" /></td></tr>';
  8. echo '<tr><td align=right>Autor:</td><td><input type="text" name="autor" /></td></tr>';
  9. echo '<tr><td align=right>Tre?ć:</td><td><textarea name="tresc" rows=5 cols=30></textarea></td></tr>';
  10. echo '<tr><td align=right>Data: </td><td><input type="text" name="data" value="'.$data.'" /></td></tr>';
  11. echo '</table><input type="hidden" name="akcja" value="dodawanie" /><br /><input type="submit" value="Wyslij"/></center></form>';
  12.  
  13. if ($_GET["dodaj"]=="yes") {
  14.  
  15. $tytul = $_POST['tytul'];
  16. $autor = $user_data['user_name'];
  17. $tresc = $_POST['tresc'];
  18. $data = $_POST['data'];
  19.  
  20. if ($tytul and $autor and $tresc and $data) {
  21. $polaczenie = mysql_connect('aaa', 'aaa', 'aaa');
  22. $db = mysql_select_db('aaa');
  23.  
  24. $tresc = str_replace("\n","<br />",$tresc);
  25. $wstaw = mysql_query("INSERT INTO news SET tytul='$tytul', autor='$autor', tresc='$tresc', data='$data'");
  26.  
  27.  
  28. if($wstaw) {
  29. echo "<font color='green'>";
  30. echo "Dodano nowego newsa. ";
  31. echo "<a href='news.php'>Zobacz newsa</a>";
  32. echo "</font>";
  33. }
  34. else {
  35. echo "<font color='red'>";
  36. echo "Nie dodano newsa!";
  37. echo "</font>";
  38. }
  39.  
  40. }
  41.  
  42. else {
  43. echo "<font color='red'>";
  44. echo "Uzupełnij wszystkie pola!";
  45. echo "</font>";
  46. }
  47. }
  48.  
  49. ?>


Jak zrobić, aby gdy w bazie znajduje się "$user_data['user_name']" (to nick usera), aby nie mógł on wysłać formularza i pojawiała się informacja?
patrysiek2
Najpierw pobierasz rekordy z bazy danych.
  1. $zapytanie = "SELECT X1 FROM X2";
  2. $wykonanie = mysql_query($zapytanie);


Potem sprawdzasz if;em

  1. if(mysql_num_rows($wykonanie==$autor))
  2. {
  3. echo 'Niemożna wysłać!';
  4. }
  5. else
  6. {
  7. //Tutaj akcja wysłania
  8. }


Na szybko pisane. Jak będą błędy to pisz.

//Edit

Jeśli by kod podany wyżej nie działał można tak:
  1. $querys = mysql_query("SELECT `autor` FROM `news` ");
  2.  
  3. while($sprawdz=mysql_fetch_array($querys))
  4. {
  5. if($sprawdz['autor'] == $autor)
  6. {
  7. echo 'Przykro nam, ale nie można wysłać.';
  8. }
  9. else
  10. {
  11. $wstaw = mysql_query("INSERT INTO news SET tytul='$tytul', autor='$autor', tresc='$tresc', data='$data'");
  12.  
  13. }
  14. }


Powinieneś połapać się smile.gif
Maze123987
Wporzo, ta druga opcja działa, ale i tak wysyła formularz do bazy, a chciałbym, aby go nie wysyłało jeśli autor istnieje w bazie. Dodatkowo jeśli formularz wyśle inny user to w bazie pojawia się takich wpisów kilkanaście (taka sama ilość jaka była poprzednio czyli załóżmy, że mam w bazie 5 wypełnionych formularzy to po dodaniu kolejnego dodają się kolejne 5 tego samego usera) to pewnie przez pętlę.

Zrobiłem tak i póki co działa. Czy wszystko z tym w porządku?


  1. <?php
  2. include 'config.php';
  3.  
  4. $data = date("d.m.Y H:i:s");
  5.  
  6. echo '<center><b>Dodawnie nowego newsa</b><br /><br />';
  7. echo '<form action="add.php?dodaj=yes" method="post"><table border=0>';
  8. echo '<tr><td align=right>Tytuł newsa:</td><td><input type="text" name="tytul" /></td></tr>';
  9. echo '<tr><td align=right>Autor:</td><td><input type="text" name="autor" /></td></tr>';
  10. echo '<tr><td align=right>Tre?ć:</td><td><textarea name="tresc" rows=5 cols=30></textarea></td></tr>';
  11. echo '<tr><td align=right>Data: </td><td><input type="text" name="data" value="'.$data.'" /></td></tr>';
  12. echo '</table><input type="hidden" name="akcja" value="dodawanie" /><br /><input type="submit" value="Wyslij"/></center></form>';
  13.  
  14. if (isset($_GET["dodaj"])=="yes") {
  15.  
  16. $tytul = $_POST['tytul'];
  17. $autor = $user_data['user_name'];
  18. $tresc = $_POST['tresc'];
  19. $data = $_POST['data'];
  20.  
  21.  
  22. if ($tytul and $autor and $tresc and $data) {
  23. $polaczenie = mysql_connect('zzz', 'zzz', 'zzz');
  24. $db = mysql_select_db('zzz');
  25.  
  26. $tresc = str_replace("\n","<br />",$tresc);
  27. $result = mysql_query("SELECT `autor` FROM `news` ")
  28. or die('Błąd zapytania');
  29. while ($rows=mysql_fetch_array($result)){
  30.  
  31. if($rows['autor'] === $autor)
  32. {
  33. echo 'Przykro nam, ale nie można wysłać.';
  34. die();
  35. }}
  36. if($rows['autor'] != $autor)
  37. {
  38. $wstaw = mysql_query("INSERT INTO news SET tytul='$tytul', autor='$autor', tresc='$tresc', data='$data'");
  39. }
  40. ;
  41.  
  42.  
  43.  
  44. if($wstaw) {
  45. echo "<font color='green'>";
  46. echo "Dodano nowego newsa. ";
  47.  
  48. echo "<a href='news.php'>Zobacz newsa</a>";
  49. echo "</font>";
  50. }
  51. else {
  52. echo "<font color='red'>";
  53. echo "Nie dodano newsa!";
  54. echo "</font>";
  55. }
  56.  
  57. }
  58.  
  59. else {
  60. echo "<font color='red'>";
  61. echo "Uzupełnij wszystkie pola!";
  62. echo "</font>";
  63. }
  64. }
  65.  
  66. ?>
patrysiek2
nie wiem jak dziala ten kod u ciebie, ale ja widze bledy
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.