Wrzucenie nazwy obrazka do bazy danych

Wrzucenie nazwy obrazka do bazy danych
DE
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:24
0

Cześć, potrzebuję zrobić takie coś
Mam obrazek który po kliknięciu powinien swoją nazwę przesłać do bazy danych

Na przykład mam obrazek kwiatka który jest nazywany kwiatek.png po kliknięciu na obrazek pobieram jego nazwę kwiatek i wrzucam do bazy danych.

Pobieranie nazwy w JS

Kopiuj
      function getName() {
      var fullPath = document.getElementById("img1").src;
     
      var filename = fullPath.split("/").pop();
      $scope.addnew(filename); 

    //tutaj sprawdzam czy pobiera mi nazwę i wrzucam ją do inputa ( dla testu )
    document.getElementById("result").value = filename;
 }
Kopiuj
            <img src="img\kwiatek.png" onclick="getName()" id="img1" />
            <input type="text" id="result"/>

I to działa - pobiera mi nazwę i wrzuca w input

Dalej mam wrzucanie rzeczy do bazy danych.
username nas nie interesuje bo to jest odpowiedzialne za wrzucanie do bazy imienia.

Kopiuj
    $scope.addnew = function(filename) {
        $http.post('addtodb.php',{'username' : $scope.username, 'filename' : filename}
        ).success(function (data, status, headers, config) {
        });
    }

Plik addtodb.php

Kopiuj
$data = json_decode(file_get_contents("php://input")); 
$username = $data->username;    
$filename = $data->filename;

$result = $db->query("INSERT INTO test(filename,username) values('$filename','$username')");

Niestety coś mi nie działa i nie mogę tego "filename" wrzucić do bazy danych. W bazie pole to zwykły varchar (255)

edytowany 1x, ostatnio: dextrose
AD
  • Rejestracja:ponad 11 lat
  • Ostatnio:5 dni
  • Postów:481
0

Ale co konkretnie nie działa i dlaczego nie możesz wrzucić go do bazy? Dostajesz jakiś błąd po stronie JS'a / skryptu w PHP / w bazie danych? Najłatwiej to po prostu użyj debuggera i sprawdź jaką wartość pod filename dostajesz w tym skrypcie addtodb.php i jeśli jest prawidłowa to tam trzeba będzie rozwiązać ten problem.

Poza tym masz mocno pomieszany kod. To znaczy niby używasz angulara, ale nie korzystasz z niego w pełni. W templatce mógłbyś używać dyrektywy ng-click, a w inpucie modelu i nie trzeba by było za każdym razem pobierać elementu po id tylko faktycznie korzystać z zalet frameworka.

DE
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:24
0

Prawdę mówiąc uczę się dopiero angulara i najchętniej to bym wszystko w nim zrobił pomijając javascript ale nie do końca wiem jak pobierać nazwę obrazka. Zaraz spróbuję debugger odpalić.

edytowany 3x, ostatnio: dextrose
AD
  • Rejestracja:ponad 11 lat
  • Ostatnio:5 dni
  • Postów:481
0

Używanie czystego JS'a jest jak najbardziej dobre. Tylko jak już zaciągasz i używasz framework taki jak Angular, to warto byłoby go używać już w pełni, a nie tylko do jednej funkcji.

DE
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:24
0

Taki error mi konsola wyrzuca

Kopiuj
Uncaught ReferenceError: $scope is not defined
    at getName (index.php:165)
    at HTMLImageElement.onclick (index.php:17)
getName @ index.php:165
onclick @ index.php:17

Linia 165

Kopiuj
$scope.addnew(filename); 

Linia 17 - tutaj mam jeszcze dodany modal z angulara którym pobieram username ( to działa )

Kopiuj
 <img src="img\kwiatek.png" onclick="getName()" id="img1" class="modal-trigger" href="#modal1" />
O8
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 7 lat
  • Postów:17
0

metoda getName musi być zadeklarowana w kontrolerze czyli: $scope.getName ... zobacz tu -> http://stackoverflow.com/questions/13836765/angular-scope-inside-script

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.