Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak poprawnie użyć zapytania sql i $_GET
Forum PHP.pl > Forum > Przedszkole
kafar610
Witam
Wrzuce cały skrypt ale będę tłumaczył tylko co to nie działa tongue.gif i odrazu mówię że nie chce robić innym sposobem tylko chce dokończyć to co dotychczas zrobiłem.
A więc tak w pierwszym skrypcie chce sprawdzić w bazie czy dany token już istnieje a jeśli istnieje to chce aby zrobił nowy, niestety albo nie działa albo muli muli i nic bo próbowałem różnymi sposobami
  1. <?php
  2. if (isset($_POST['submit'])) {
  3. /**
  4.   * @author Kafar
  5.   * @copyright 2015
  6.   */
  7. //definicja stalych
  8. ini_set('display_errors', 'on');
  9.  
  10. require_once("stale.php");
  11. require_once("function.php");
  12.  
  13. $img = $_FILES['image'];
  14.  
  15. //walidacja start
  16. if ((empty($image))) {
  17.  
  18. echo "Nie wstawiłes zdjecia";
  19.  
  20. }
  21.  
  22. //walidacja end
  23. //wykoananie skryptu
  24. if ((!empty($image))) {
  25.  
  26. foreach ($img['tmp_name'] as $key => $tmp_name) {
  27.  
  28. $image = $_FILES['image']['name'][$key];
  29. $image_type = $_FILES['image']['type'][$key];
  30. $image_size = $_FILES['image']['size'][$key];
  31.  
  32.  
  33. if (($image_type == 'image/gif') || ($image_type == 'image/jpeg') || ($image_type == 'image/pjpeg') || ($image_type == 'image/png')) {
  34.  
  35. if (($image_size > 0) && ($image_size <= GW_MAXFILESIZE)) {
  36.  
  37. // Przenoszenie plików do docelowego katalogu.
  38. $target = GW_LOKALIZACJA . $image;
  39.  
  40.  
  41. //hash pliku
  42. $filename = $_FILES['image']['tmp_name'][$key];
  43. $md5file = md5_file($filename);
  44. echo $md5file;
  45. //hash pliku
  46.  
  47.  
  48. //pobranie rozszerzenia
  49. $odczyt = pathinfo($image);
  50. $ext = $odczyt['extension'];
  51. //pobranie rozszerzenia
  52.  
  53. //info pliku
  54. $rozmiar = round($img['size'][$key]/1024) . " KB";
  55. list($width, $height) = getimagesize($filename);
  56. $wymiary = $width ." x ". $height;
  57. //info pliku
  58. $token = gentoken(12);
  59.  
  60. if (move_uploaded_file($_FILES['image']['tmp_name'][$key], GW_LOKALIZACJA . $token . "." . $ext)) {
  61.  
  62. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  63. or die('Brak połączenia z serwerem MySQL');
  64.  
  65. echo 'Połączenie nawiązane<br />';
  66. // dodajemy rekord do bazy
  67.  
  68. // petla wykonuje sie dopoki nie wygenerujemy unikalnego tokenu
  69. while(true)
  70. {
  71. // losuj nowy token. Tu nie wiemy, czy zostanie wylosowany taki co byl juz w bazie
  72.  
  73. // sprawdz czy wylosowany jest juz w bazie
  74. $czyTokenIstniejeWBazie = mysqli_query($connect ,"SELECT * FROM obrazki WHERE token = '$token';");
  75. // jesli go nie ma, to przerywamy, bo mamy odpowiedni
  76. if($czyTokenIstniejeWBazie == false)
  77. break;
  78. // jesli jest w bazie, to petla wykona sie jeszcze raz
  79. }
  80. // tutaj juz mamy unikalny token, wiec dodajmy do bazy
  81.  
  82. $ins = "INSERT INTO obrazki VALUES (0,NOW(),'$md5file' , '$rozmiar' , '$wymiary' , '$token' , '$ext')";
  83.  
  84. $query = mysqli_query($connect, $ins);
  85.  
  86. if ($query)
  87. {
  88. echo 'Dane zostały wpisane do bazy <br />';
  89. }
  90. else
  91. echo 'Błąd przy dodawaniu rekordów do bazy <br />';
  92.  
  93. $zapytanie = mysqli_query($connect ,"SELECT id FROM obrazki ORDER BY id DESC LIMIT 1");
  94.  
  95. $rekord = mysqli_fetch_array($zapytanie);
  96.  
  97. $last_id = $rekord['id'];
  98.  
  99. echo 'id obrazka to:' . $last_id . '<br />';
  100.  
  101. echo 'token: ' . $token . '<br />';
  102. echo 'Nazwa: ' . $img['name'][$key] . '<br/>';
  103. echo 'Rozmiar: ' . $rozmiar . '<br/>';
  104. echo 'Rozszerzenie pliku ' . $ext . "<br />";
  105. echo '<img src="' . GW_LOKALIZACJA . $token . "." . $ext . '" width="300px" heith="300px" alt="image" /></p><br />';
  106. echo $width;
  107. echo $height;
  108. echo 'Link do obrazka: kafar.nazwa.pl/wrzucfote.pl/'. GW_LOKALIZACJA . $token . "." . $ext;
  109. ?>
  110. <form>
  111. <input onclick="this.form.txt.select();" type="button" value="zaznacz kod">
  112. <textarea style="resize: none;" name="txt" cols="50" rows="4"><?php echo 'http://kafar.nazwa.pl/wrzucfote.pl/' . GW_LOKALIZACJA . $token . "." . $ext;?> </textarea>
  113. <input type="button" value="Losowa strona" onclick="window.open('getObraz.php');" />
  114. </form>
  115. <?php
  116.  
  117. mysqli_close($connect);
  118. }
  119. }
  120. else
  121. echo "Obrazek nie moze być wiekszy niż 5 mb";
  122. }
  123. else
  124. echo "Przesłany plik nie jest obrazekiem!!! <br /> Dostępne rozszerzenia: .gif, .jpeg, .pjpeg, .png ";
  125. }
  126. }
  127. }
  128. //wykoananie skryptu
  129. ?>

W drugim skrypcie chce wybrał z bazy token + rozszerzenie obrazka i go wyświetlił, token ma być zrobiony $_GET'em i wywala tylko błąd "niestety ten token nie jest przypisany do zadnego obrazka"
  1. <?php
  2.  
  3. /**
  4.  * @author gencyolcu
  5.  * @copyright 2015
  6.  */
  7. require_once("stale.php");
  8. require_once("function.php");
  9.  
  10. $connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)
  11. or die('Brak po��czenia z serwerem MySQL');
  12.  
  13. echo 'Po��czenie nawi�zane<br />';
  14.  
  15. // pobieranie z linku tokenu
  16. $token = $_GET['token'];
  17. // szukanie w bazie wpisu z tym tokenem
  18. $wiersz = mysqli_query($connect ,"SELECT * FROM Obrazki WHERE token = '$token' AND rozszerzenie = '$ext';");
  19. // sprawdzamy, czy znalezlismy
  20. if(!$wiersz) {
  21.  
  22. echo "niestety ten token nie jest przypisany do zadnego obrazka";
  23.  
  24. }
  25. else {
  26. $ext = $wiersz['ext'];
  27.  
  28. //$prawdziwa_sciezka_do_img = $wiersz['sciezkaDoObrazka'];
  29. // generuj tag img
  30. echo '<img src="' . GW_LOKALIZACJA . $token . "." . $ext . '" width="300px" heith="300px" alt="image" /></p><br />';
  31.  
  32. }
  33. mysqli_close($connect);
  34. ?>
ilidir
Cytat(kafar610 @ 2.03.2015, 15:47:03 ) *
$connect = mysqli_connect(HOST, USER, PASSWORD, NAZWA_BAZY, PORT)



zamiast HOST, USER, PASSWORD, NAZWA_BAZY, PORT powinny być zmienne kolego smile.gif albo dane
nospor
@ilidir a nie przyszlo ci do glowy, ze on te stale zdefiniowal tutaj
require_once("stale.php");
?

Masz niesamowitą tendencje to pisania bezsensownych postow, nie mających zadnego związku z problemem. Zacznij wkoncu myslec zanim napiszesz posta....

@autor:
$czyTokenIstniejeWBazie = mysqli_query($connect ,"SELECT * FROM obrazki WHERE token = '$token';");
if($czyTokenIstniejeWBazie == false)
break;

zrob sobie
var_dump($czyTokenIstniejeWBazie);
a moze doznasz olsnienia czemu powyzszy warunek jest bez sensu.... poczytaj tez co zwraca mysqli_query - to rowniez pomoze ci w przemysleniach.
kafar610
var dump albo nic nie wyświetla albo tylko false o mysqli_query przeczytałem że " zwraca identyfikator wyniku (lub FALSE w przypadku niepowodzenia) jedynie dla zapytań typu SELECT, SHOW, EXPLAIN i DESCRIBE. Dla innych zapytań SQL mysql_query() zwraca TRUE lub FALSE informując czy zapytanie zakończyło się sukcesem czy też nie. Jeśli nie została zwrócona wartość FALSE to znaczy, że zapytanie było prawidłowe i może być wykonane przez serwer." ale nadal nie wiem jak mam to zrobic

cos chyba zamiast true trzeba dac jakis identyfikator wyniku czy cos w tym typie chyba
nospor
mysqli_query zwraca wynik zapytania, czy sie powiodlo czy nie. NIe mowi nic natomiast o rekordzie jaki zostal zwrocony. Wiec zapytanie moze nie zwrocic zadnego rekordu, ale i tak cie poinformuje, ze wszystko jest ok. Dlatego masz ciągle zapetlenie....

Musisz jeszcze odebrać rekord z zapytania i dopiero wtedy sprawdzic czy zawiera co ma zawierac
kafar610
czyli jak mam to zrobic bo sie juz pogubilem
nospor
Masz pobrac rekord po mysqli_query... notabene juz to w innnej czesci kodu robisz. Fajnie by było, jakbys rozumiał co robią funkcje, ktorych uzywasz a nie tylko bezmyslnie kopiowal.
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.