» »

Kako se lotit? (php MySql)

Kako se lotit? (php MySql)

hcet ::

Imam slike shranjene v mapi in podatke o vsaki sliki shranjene v bazi..

Imam 2 gumba (naprej) in (nazaj)..

Želel bi, da ko pritisnem (naprej), da se prikaže naslednja slika in vsi podatki iz baze o tej sliki.. in tako naprej..

Žal pa nevem, na kakšen način bi se tega lotil?

gufy123 ::

slike boš prikazoval na strani npr. slika.php?id=5, kjer je id ime parametra in 5 njegova vrednost, ki označuje nek zapis v bazi.
ta id prebereš preko $_GET in narediš query na bazo, kjer dobiš vse podatke: source, naslov, opis slike, ...
za link naprej narediš link slika.php?id=6 in za link nazaj slika.php?id=4, če je seveda trenutni id>1.

to je samo primer, v praksi boš verjetno lahko precej bolj zakompliciral (ker si id-ji slik ne bodo tako sledili, ...)

hcet ::

Imam še en problem, imam jquery slider z dvema gumboma, ki premikata slike nazaj in naprej. Kot je že gufy123 napisal, bi se moral ob pritisku naprej id povečat.

Ampak nevem, kako bi to rešil, ne da bi se stran zmeraj osveževala..

<script type="text/javascript">
	$(function() {
		$(".slider").jslider({
		btnNext: ".next",
		btnPrev: ".prev"
		})
	});
</script>

Zgodovina sprememb…

  • spremenil: hcet ()

techfreak :) ::

Ne bi škodilo priložiti link do tega jsliderja.

hcet ::

Nevem več točno za katerega gre.. download

illion ::

sliderji delujejo tko, da v nek tag (ponavadi ul) nafilaš vse thumbnaile:
<ul>
   <li>
       <a href="velika_slika1.jpg"><img src="mala_slika1.jpg" /></a>
   </li>
   <li>
       <a href="velika_slika2.jpg"><img src="mala_slika2.jpg" /></a>
   </li>
   <li>
       <a href="velika_slika3.jpg"><img src="mala_slika3.jpg" /></a>
   </li>
   <li>
       <a href="velika_slika4.jpg"><img src="mala_slika4.jpg" /></a>
   </li>
<ul>


potem klčeš slider na ta ul in ti sam skrije vse thumbnaile razen enga (ali več, kokr že deluje slider) in potem s klikanjem na next/prev samo slida te thumbnaile levo/desno oz. gor/dol, kokr maš pač nastavlen

skratka kle boš mogu izpisat vse thumbnaile na eni strani, veliko sliko pa lahko potem pokažeš s pomočjo kkšnga lightboxa/colorboxa/... ob kliku na thumbnail

hcet ::

illion, imaš prav, ampak jaz kličem podatke (pod do slike in ostali podatki o sliki) iz baze, zato ne morem kar vpisat naslovov.

Delovati mora tako, da ko kliknem next gumb, da v bazi preveri, kateri id je naslednji in tako prikaže sliko in vse informacije.

Ampak ne znam tega rešit. Php kodo imam, vendar je tu potreba še po jqueryu in ajaxu, če se ne motim, teh jezikov pa ne znam najbolje :(

illion ::

ena opcija je, da uporabš javaskripto in ko klikaš prev/next izpisuješ podatke o sliki nekam pod sliko:
podatke o slikah daš v javaskript objekt, slider ma zihr callback opcijo (morš pogledat api), ki se kliče ob kliku na next/prev, takrat prikažeš podatke o tej sliki v nekem div/drugem elementu, tko nekak:

<script type="text/javascript">
 $(function() {
  //podatke, recimo naslov, opis,.. spravš v objekt
  var imginfo = {
     slika1: {title: 'slika 1', description: 'o sliki 1...', drugo: 'nek podatek..'},
     slika2: { ... }
   };
   //jslider ma zirh nek parameter, kjer nastavš callback funkcijo, ko se slika
   //zamenja, poglej v jsliderjev api, kle sm si zmislu, da je to 'onSlideEnd'
   $(".slider").jslider({
      btnNext: ".next",
      btnPrev: ".prev",
      onSlideEnd: function (el) {
        //predvidevam, da je element el deajnsko 'li' element, iz njegovga info_key atributa
        //dobiš kluč, pod katerim maš shranjene podatke o sliki v imginfo objektu
        //info_key atribut nastavš v hmtl kodi, glej spodaj
        //če element ni li ampak a oz. img, prestav ta atribut iz li v a oz. img 
        var infoKey = $(el).attr('info_key');
        $('div#img_info').find('.title').html(imginfo[infoKey].title);
        $('div#img_info').find('.description').html(imginfo[infoKey].description);
        $('div#img_info').find('.drugo').html(imginfo[infoKey].drugo);
      }
    })
   });
}
</script>
</head>
<body>
   ...
   <ul>
       <li info_key="slika1"><a href="velika_slika.png"><img src=".."... </li>
       ...
   </ul>
   
   ...
   <div id="img_info">
      <div class="title"></div>
      <div class="description"></div>
      <div class="drugo"></div>
   </div>
</body>


to je psevdo koda, na tak način lahko prikazuješ podatke o trenutno prikazani sliki v nekem div-u recimo.

techfreak :) ::

Slider ti bi v tem primeru (ko želiš za vsako sliko posebej pogledati v bazo) pomagal samo v primeru, da bi preloadal eno ali več slik. Kar je pa že kar nekaj dela in verjetno se bolj splača prikazovati vsako posebej, brez sliderja.

hcet ::

Sem odstranil slider in zdaj na vsaki action post kličem slike (naprej/nazaj), skripta zdaj v celoti deluje, vendar pa me moti vsakokratno osveževanje celotne strani, ko menja sliko :/

Zgodovina sprememb…

  • spremenil: hcet ()

gufy123 ::

pa naredi z ajax-om. gumb naprej bo en div, gumb nazaj bo drug div in slika s podatki bo v tretjem div-u.

ob kliku na gumb naprej ali nazaj se ti bodo vse trije divi osvežili brez nalaganja cele strani

hcet ::

Vključil sem ajax, problem spet nastane, ker sem prej slike in podatke o sliki klical glede na url naslov npr. ?id=102, zdaj pa če bi hotel prikazat naslednjo sliko bi moral spremeniti naslov (npr ?id=105) za kar pa je potrebna osvežitev strani, česar pa nočem..

Zanima me, kje bi hranil "id", bi to lahko bil $_SESSION?

illion ::

dej prvo povej kaj točno bi rad mel? samo prikaz slik z naprej/nazaj in izpis določenih podatkov v povezavi s sliko, al tud štetje kokrat je bla slika prikazana? bi mel tko kokr ma facebook? a delaš galerijo al je to samo del srtani?

hcet ::

Sliko lahko uploadaš, vpišejo se podatki kot so ime, kategorija, tagi..
Zraven je ocenjevanje z zvezdicami (5 zvezdic), šteje pa tudi, koliko ogledov slike je bilo.. ko bo izdelek končan, pride zraven še facebook like button in google +1.

Ajax
<script type="text/javascript">
var http = false;

if(navigator.appName == "Microsoft Internet Explorer") {
  http = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  http = new XMLHttpRequest();
}

//get value (variable) from url
function gup( name ) {
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

var test = gup('id');

function prev() {
  http.open("GET", "test.php?id="+test , true);
  http.send(null);
  http.onreadystatechange=function() {
    if(http.readyState == 4) {
      document.getElementById('desc').innerHTML = http.responseText; //vpiše text v div id desc
    }
  }
  http.send(null);
}
</script>


Html, gumb nazaj..
<input id="prev" onclick='javascript:prev();' name="prev" class="prev" value="" />


Html, prikaz slike
<div class="wp">
						<?php echo '<img class="wp" src="images/'.$image_name.'" alt="'.$image_caption.'"/>'; ?>
					</div>


Php, preveri
if (isset($_GET["id"])) {
    $id = $_GET["id"];   // get data
	}


nato glede na id, odpre bazo in izlušči podatke od tej sliki..

keworkian ::

Zakaj pa nimaš globalne spremeljivke pol bi pa samo v funkciji prev dodal param id? Prev je (globalna spremeljivka)-1, next pa +1.
Obscenities in B-Flat

MrBrdo ::

kakšna globalna spremenljivka... kaj učiš krivo vero. ne uporabljat globalnih spremenljivk
MrBrdo

technolog ::

ne uporabljat globalnih spremenljivk


Kaj pa klobasaš...? Php ni namenjen namespacanju spremenljivk, čist pravilno je, če maš vse v globalnem scopu...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[PHP] branje slike

Oddelek: Programiranje
113181 (2994) matijaz74
»

javascript jquey slidshow + dodatek (kako?)

Oddelek: Izdelava spletišč
6798 (735) frudi
»

[C] kazalčni seznam

Oddelek: Programiranje
123056 (2870) MrBrdo
»

PHP - "Generiranje" povezave za sliko

Oddelek: Izdelava spletišč
12790 (678) DiTi
»

Kako vnesti sliko v MySQL bazo

Oddelek: Programiranje
101240 (1089) McAjvar

Več podobnih tem