ďťż

[PHP] wydobycie danych z selecta

       

Podstrony


telcocafe

Witam !

Jak stworzyć pole, aby po wybraniu odpowiedniej wartości z selecta wyświetliła się jej nazwa? Udało mi sie zrobić, żeby wyświetlało ( w moim przypadku ID ), jednak chciałbym po tych nazwach w selectach i nie wiem jak to zrobić.
Po ID wystarczyło
echo "<h3>(Zaznaczyłeś: '. $komputer_id .')</h3><br />";

Jak odnieść się do wartości : czesc, adios,lalala,bamboleo?

<form action="raportprogramy.php" method="post"> <select name="komputer_id" onchange="this.form.submit()"> <option value="">Wybierz id komputera</option> <option value="1">czesc</option> <option value="2">adios</option> <option value="3">lalalala</option>og <option value="4">bamboleo</option>



Po pierwsze wyłącz register_globals. Używaj $_GET, $_POST...

Zostanie wysłana tylko ta wartość, która jest zaznaczona. Możesz ewentualnie zrobić coś takiego:switch($_POST['komputer_id']) { case 1: /* jakiś tam kod dla opcji nr 1 */ break; case 2: /* kod dla opcji nr 2 */ break; default: /* kod dla opcji domyślnej */ }
Ewentualnie zmień wartości value z liczbowych na słowne :)

tylko ja tak wysyłam id po to, aby pozniej ja porownac do innej tabeli i wyswietlic nazwy po porownaniu z id, wiec raczej powinno tak pozostac, zalezy mi tylko na tym, aby echo wyswietlil mi nazwe opcji zaznaczonej, ale nie id tylko tej nazwy. Ni ma na to sposobu?

Przecież dostałeś odpowiedź ;) Można zrobić tak:

$opcje = array( 1 => 'czesc', 2 => 'adios', 3 => 'lalalala', 4 => 'bamboleo' ); echo isset($opcje[$_POST['komputer_id']]) ? $opcje[$_POST['komputer_id']] : 'nieprawidłowa wartość';
Zamiast "ręcznie" wyświetlać opcje w formularzu, użyj pętli:

foreach ($opcje as $k => $v) { echo '<option value="', $k, '">', $v, '</option>'; }
Użytkownik Kozack edytował ten post 04 sierpień 2010, 18:00


rozumiem, tak przy okazji bo nie chce zakładac nowego wątku.

Męczę się nad wrzuceniem zdjęcia do bazy danych, a potem jego wyświetlenie. Mam taki kodzik:

Formularz:
echo '<form enctype="multipart/form-data" action="doddotabkomp.php" method="post"> <b>Dodaj zdjęcie:</b><br /> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <input name="zdjecie" type="file" /><br/> <input type="image" src="graphics/button_wyslij.jpg" alt="Wyslij" value="dodaj"> </form>'; Potem pobieram zdjęcie: [code] $zdjecie = $_FILES['zdjecie']['name'];

i wrzucenie do bazy:
if(is_uploaded_file($zdjecia)) { move_uploaded_file($zdjecia, "name"); echo "Plik został wrzucony do bazy"; }

jednak coś mam tu żle, bo pózniej w innym skrypcie jak chce wyswietlic to zdjecie to jest [ciach!]:

Próba wyświetlenia:
echo '<td><img src="'.$r['zdjecie'].'" /></td>';

Nie wiem co jest nie tak, może wysyłam samą nazwę?

Poczytaj dokładniej manual...


For proper working, the function is_uploaded_file() needs an argument like $_FILES['userfile']['tmp_name'], - the name of the uploaded file on the clients machine $_FILES['userfile']['name'] does not work. Czyli żadne name, a tmp_name.


bool move_uploaded_file ( string $filename , string $destination ) Czyli coś nie tak. $filename jest ścieżką do pliku tymczasowego, a $destination oczywiście ścieżką docelową.

// Edytowano
Aha, do jakiej bazy? Bo tutaj nie ma żadnego kodu wrzucania zdjęcia do bazy, a jedynie wrzucanie zdjęcia na serwer (chyba że obciąłeś kod odpowiedzialny za umieszczanie ścieżki w bazie danych).
Użytkownik andrzej_aa edytował ten post 04 sierpień 2010, 22:21
Uparłem się, żeby wrzucić małe zdjęcia bezpośrednio do bazy danych, która znajduje się na wirtualnej maszynie.

Właśn chodzi mi o kod wrzucenia zdjęcia do bazy danych MySQLowej, znajdującej się na innym hoście.

Jak powinien wyglądać taki kod? Słyszałem, że aby toego dokonać muszę zamiast robic move_uploade_file to jego zawartosc wpisać do bazy.
Użytkownik NightTrain edytował ten post 05 sierpień 2010, 08:12
Pole musi być ustawione na binarne (blob, longblob). A później tylko dodajesz insert into obrazy (id, obraz) value (null, 'GIF89a€˙ŔŔŔ!ĹŻ,D;')http://www.alt-php-faq.org/local/77/

mam ustawiona kolumne na lonblob, pytanie teraz.
W tabeli wyswietla mi obrazek dla typu jpg. Ale prawdziwego obrazka nie widze.

Jak pobrac prawidlowo ten obraz, zeby sie wyswietlil?

póki co pobieram go tak:
$zdjecie = trim($_FILES['zdjecie']);

no i niby wyswietlam tak:
echo '<td><img src="'.$r['zdjecie'].'" /></td>';

ale jak napisałemw cześniej widzę tylko pusty obrazek jpg (charakterystyczny dla tego typu plików)

Zobacz co zawiera $_FILES['zdjecie']. To nie jest obraz, a tablica. Z tej tablicy możesz wyciągnąć ścieżkę do pliku, a później już tylko file_get_contents i po sprawie.
A co do kodu:echo '<td><img src="'.$r['zdjecie'].'" /></td>';To Ci da tyle, co taki przykład: http://dl.dropbox.co.../NightTrain.htm

Andrzeju mi chodzi o to, aby użyć tegow ten sposób tylko nie wiem jak to zapisać:

$nazwa = $_FILES['zdjecie']['name']; $zawartosc = file_get_contents($_FILES['zdjecie']['....']);

nie wiem jak wskazac sciezke?
Użytkownik NightTrain edytował ten post 05 sierpień 2010, 22:29
W $_FILES['zdjecie']['tmp_name'] jest ścieżka do pliku, który wysłałeś przez formularz. Plik jest w katalogu tymczasowym.

http://www.php.net/m...file-upload.php
Użytkownik Kozack edytował ten post 05 sierpień 2010, 22:38
to jak mam go przesłać do bazy, jeśli wskazałem w formularzu plik 'jpeg'.
To jak dalej to powinny wyglądać w kodzie, bo sie już zamieszałem...
To jest zle?:
$nazwa = $_FILES['zdjecie']['name']; $zawartosc = file_get_contents($_FILES['zdjecie']['tmp_name']);

Proszę konkretnie do mojego przykladu. Moze pokaze caly moj skrypt:

<?php $msql = mysql_connect('localhost', 'root', 'qazwsx'); mysql_select_db('komputery'); $query = mysql_result(mysql_query("SELECT MAX(id) FROM komputery"), 0); echo '<form enctype="multipart/form-data" action="doddotabkomp.php" method="post"> <h2>Prosze dodac nowy komputer:</h2><br /> <b>ID:</b><br /> <input type="text" size="5" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="id"> <h3>(Ostatni dodany rekord:'. $query .')</h3><br /> <b>Nazwa komputera:</b><br /> <b>Dodaj zdjęcie:</b><br /> <input type="hidden" name="MAX_FILE_SIZE" value="3000000" /> <input name="zdjecie" type="file" /><br/> <input type="image" src="graphics/button_wyslij.jpg" alt="Wyslij" value="dodaj"> </form>'; $id = $_POST['id']; $nazwa_komputera = $_POST['nazwa_komputera']; $nazwa = $_FILES['zdjecie']['name']; $zawartosc = file_get_contents($_FILES['zdjecie']['tmp_name']); if($id and $nazwa_komputera and $zdjecie) { $msql = mysql_connect('localhost', 'root', 'qazwsx'); mysql_select_db('komputery'); $ins = @mysql_query("INSERT INTO komputery SET id='$id', nazwa_komputera='$nazwa_komputera', zdjecie='$zdjecie'" ); if($ins) { echo ('<b>Rekord zostal dodany poprawnie</b>'); echo '<script type="text/javascript" src="skrypty_java/reloaddodano.js"></script>'; } else echo "blad"; } ?>
Użytkownik NightTrain edytował ten post 05 sierpień 2010, 23:32
Używaj funkcji do debugowania (print_r, var_dump, var_export), a będziesz wiedział co zawierają dane zmienne. Możesz też zaglądać do (bardzo) zasobnego manuala, w którym znajdziesz odpowiedź na niejedno pytanie. Przynajmniej ja często znajduję bardzo przydatne komentarze w poszczególnych funkcjach, a jeśli nie komentarze, to nawet w opisach funkcji można znaleźć bardzo dużo informacji, jak to przytoczyłem w jednym z postów wyżej.

// Edytowano
Za długo pisałem ten post :)

$zdjecie - tej zmiennej nie ma i warunek nigdy się nie spełni. Dodatkowo zmienną powinieneś przetworzyć przez addslashes.
Zastanawia mnie po co się dwa razy łączysz z bazą. Tą samą bazą. Bezsens.
Użytkownik andrzej_aa edytował ten post 05 sierpień 2010, 23:41
Po użyciu funkcji: print_r($_FILES) moje zmienne:

$nazwa = $_FILES['zdjecie']['name']; zawiera:
Array ( [zdjecie] => Array ( [name] => images.jpeg [type] => image/jpeg [tmp_name] => /tmp/phpGM3fB3 [error] => 0 [size] => 2731 ) )

a zmienna $zawartosc = file_get_contents($_FILES['zdjecie']['tmp_name']);
Array ( [zdjecie] => Array ( [name] => images.jpeg [type] => image/jpeg [tmp_name] => /tmp/phpOOtutt [error] => 0 [size] => 2731 ) ) Notice: Undefined variable: zdjecie in /var/www/doddotabkomp.php on line 68
Użytkownik NightTrain edytował ten post wczoraj, 07:31
Przecież napisałem, że zmienna zdjecie nie istnieje - angielski też chyba znasz. Sprawdź swój kod.

ok udało mi sie wrzucić binarke do bazy:
$zdjecie = file_get_contents($_FILES['zdjecie']['tmp_name']); $zdjecie = mysql_real_escape_string($zdjecie);

Teraz pozostało wyśiwetlenie, obecnie używam tego:
echo '<td><img src="'.$r['zdjecie'].'" /></td>';

ale to mi wyświetla plik binanry- ciągi znaków, jak to zmienić?
Użytkownik NightTrain edytował ten post wczoraj, 17:03
Możesz tego użyć tak:echo '<td><img src="data:'.$r['mimetype'].';base64,'.base64_encode($r[ 'zdjecie']).'" /></td>';Jednak w IE to nie zadziała...

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.