Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Akcja po otrzymaniu zmiennej nawet przy jej braku(zmiennej)
Forum PHP.pl > Forum > Przedszkole
analfabeta11
Witam serdecznie!
Piszę sobie taki mały skrypt do skracania długich linków i mam problem.
Usiłowałem zrobić tak, że gdy podane jest słowo klucz to jest ono dodawane do bazy i można przenieść się do odpowiedniej strony właśnie od tego klucza.
Drugą możliwością ma być samo podanie adresu do skrócenia.
Właśnie z tą drugą możliwością mam problem. Kiedy podam tylko ten adres, to skrypt i tak używa słowa klucza, którego nie podałem i nie ma możliwości skrócenia tego liku. Czyli podaję adres i klucz - działa. Podaję sam adres - nie działa i pokazuje wiadomość, że klucz już istnieje.
Jak temu zaradzić?
  1. <?php
  2. $link = addslashes($_POST['link']);
  3. $klucz = addslashes($_POST['klucz']);
  4. echo $link;
  5. echo $klucz;
  6. include('config.php');
  7. if(isSet($_GET['do'])){
  8. if($_GET['do'] == "skroc"){
  9. if(isset($_POST['link'])){
  10. if(isset($_POST['klucz'])){
  11. $czy_istnieje_klucz = mysql_query("SELECT * FROM `linki` WHERE `klucz` = '".$klucz."'");
  12. while($istnienie_klucza = mysql_fetch_array($czy_istnieje_klucz)){
  13. $istnieje_klucz = $istnienie_klucza['klucz'];
  14. }
  15. if($klucz == $istnieje_klucz){
  16. echo("Taki klucz istnieje w bazie.");
  17. }
  18. else{
  19. $dodaj_klucz = "INSERT INTO `linki` (id, link, klucz) VALUES ('','".$link."','".$klucz."')";
  20. $wynik_dodaj_klucz = mysql_query($dodaj_klucz);
  21. if($wynik_dodaj_klucz){
  22. echo("Link został skrócony poprawnie.<br />");
  23. echo($forma_linku.$klucz);
  24. }
  25. else{
  26. echo("Link z kluczem nie został dodany do bazy. Przepraszamy.");
  27. }
  28. }
  29. }
  30. elseif(!isset($_POST['klucz'])){
  31. $sam_link = "INSERT INTO `linki` (id, link, klucz) VALUES ('', '".$link."', '')";
  32. $wynik_sam_link = mysql_query($sam_link);
  33. if($wynik_sam_link){
  34. echo("Link skrócony poprawnie.<br />");
  35. $pobierz_id = "SELECT * FROM `linki` WHERE `link` = '".$link."' LIMIT 1";
  36. $wynik_pobierz_id = mysql_query($pobierz_id);
  37. while($pobrane_id = mysql_fetch_array($wynik_pobierz_id)){
  38. $id = $pobrane_id['id'];
  39. }
  40. echo($forma_linku.$id);
  41. }
  42. }
  43. }
  44. else{
  45. echo("Nie został podany link do skrócenia.");
  46. }
  47. }
  48. else{
  49. echo("Nie ma takiej akcji...");
  50. }
  51. }
  52. else{
  53. // tutaj normalna strona
  54. echo("<form action=\"index.php?do=skroc\" method=\"POST\">");
  55. echo("Link do skrócenia: <input type=\"text\" name=\"link\"><br />");
  56. echo("Słowo klucz(opcjonalnie): <input type=\"text\" name=\"klucz\">");
  57. echo("<input type=\"submit\" value=\"Skracaj link!\">");
  58. echo("</form>");
  59. }
  60.  
  61. ?>
Fifi209
Z ciekawości, sprawdzasz jeden klucz więc po co ta pętla while? Możesz sprawdzić czy przesłany klucz nie jest pusty empty lub jego długość strlen (mb_strlen)
markonix
Jak dobrze zrozumiałem to wystarczy przecież sprawdzać czy input z kluczem jest pusty (empty+ trim żeby uniknąć spacji).

analfabeta11
Próbowałem usunąć te pętle, lecz po zrobieniu tego miałem taki trochę dziwny problem. W miejscu pobrania wyniku pisało tylko Resource id #4 więc wróciłem do tych pętli. Zapewne złe zapytanie do bazy robiłem albo coś. No nie ważne.

A mój wcześniejszy problem został naprawiony po zastosowaniu empty. Bardzo dziękuję wam za pomoc.
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.