Problém zo zobrazením obrázkov – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém zo zobrazením obrázkov – PHP – Fórum – Programujte.comProblém zo zobrazením obrázkov – PHP – Fórum – Programujte.com

 

Tomáš
~ Anonymní uživatel
560 příspěvků
13. 1. 2017   #1
-
0
-

Zdravím mám problém zo zobrazením obrázkov, na X-weboch mi to funguje a tu je zas nejaký problém :)

obrázky pridávam na FTP, skript na vloženie funguje v poriadku, problém je zo zobrazením...

http://salgovce.esy.es/index.php?page=projekty

v ceste medzi posledným podpriecinkom a suborom mi nechce zobrazit premennu "$cislo" z databazi, ale v ADMINISTRACII (po prihlaseni) link na ZMAZANIE/UPRAVENIE/PRIDANIE OBRAZKA  tu premennu zobrazuje...

 FUNKCIA NA NACITANIE

function CitajDIR($cesta) {
    if (!is_dir ($cesta)) {
    echo "Žiadne nahraté obrázky";
    }
    else
      if ($dir = opendir ($cesta)) { 
        while ($subor = readdir($dir)) {
          if ($subor!='.' and $subor!='..')           
           echo "<div class='obra'><a href='projekty/foto/$cislo/$subor' title='$subor' rel='lightbox'>
                  <div class='obr1'><img src='projekty/thumbs/$cislo/$subor' alt='$subor'/></div>
                 </a></div>";    
        } 
      closedir($dir);
      }      
}

ZOBRAZENIE OBRAZKOV

<h1>Projekty</h1>
<?php
$skratka = $_GET['page'];
$cislo = $tab['id'];
 	
function right_int($arg) {
  $arg = (int) $arg;
  if (is_numeric($arg))
    { return $arg; }
  return 1;
}  
?>

<div id="okraj">
<?php
  define ("ON_PAGE", 10);
  if(!isset($_GET["id"])) {
    $page = 1;
  }
  else {
    $page = right_int($_GET["id"]);
  }
  $by = (ON_PAGE * ($page - 1));
  
$psql = "SELECT * FROM ".$skratka." ORDER BY id DESC LIMIT ".ON_PAGE." OFFSET ".$by;
$presult = mysqli_query($link, $psql);
if (mysqli_num_rows($presult) > 0){
  while ($tab = mysqli_fetch_array($presult)) {  
     $obsah = $tab["text"];
     $nazov = $tab['nadpis'];
     $cislo = $tab['id'];
     $obsah1 = wordwrap($obsah, 25, "\n", true);
     echo "<h1>".$tab['nadpis']."</h1>
           <p>".$obsah1."</p>";
     echo '<div class="gal">';
     CitajDIR("projekty/thumbs/$cislo");
     echo '</div>';
     if ($_SESSION["log"] == "1") {
      echo 
  	   "<a href='index.php?page=zclanok&amp;skratka=".$skratka."&amp;cis=".$cislo."'>Zmazať</a>
        <a href='index.php?page=upravit&amp;skratka=".$skratka."&amp;cis=".$cislo."'>Upraviť</a>
        <a href='index.php?page=uobrazok&amp;skratka=".$skratka."&amp;cis=".$cislo."'>Vložiť obrázok</a>";
  	  }      
   }}      
?>
 
<?php
$sql = "SELECT * FROM ".$skratka." ORDER BY id DESC";
$result = mysqli_query($link, $sql);
$pocetzaznamov = mysqli_num_rows($result);
	if($page != 1) { 
    echo "<a href='index.php?page=".$skratka."&amp;id=1'>[1]</a>";
	}
	if($page > 1) { 
		for($i = 2; $i > 0; $i--) {
			if(($page - $i) > 1) { 
        echo "|<a href='index.php?page=".$skratka."&amp;id=".($page-$i)."'>[".($page-$i)."]</a>";
			}
		}
	echo "|<a href='index.php?page=".$skratka."&amp;id=".($page-1)."'>[&laquo;]</a>|";
	}
	$pocetstran = (ceil($pocetzaznamov / ON_PAGE));	
	if($page < $pocetstran) { 
    echo "|<a href='index.php?page=".$skratka."&amp;id=".($page+1)."'>[&raquo;]</a>";
		for($i = 1; $i < 2; $i++) { 
   			if(($page + $i) < $pocetstran) { 
          echo "|<a href='index.php?page=".$skratka."&amp;id=".($page+$i)."'>[".($page+$i)."]</a>";
      	}
		}
	}
	if($page < $pocetstran) { 
    echo "|<a href='index.php?page=".$skratka."&amp;id=".$pocetstran."'>[".$pocetstran."]</a>";
	}
?>
</div>

Ďakujem veľmi pekne...

Nahlásit jako SPAM
IP: 90.64.127.–
Kit+15
Guru
13. 1. 2017   #2
-
0
-

#1 Tomáš
Ve funkci CitajDIR nemáš deklarovánu proměnnou $cislo, nemůžeš ji tedy používat.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:59d2:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Tomáš
~ Anonymní uživatel
560 příspěvků
13. 1. 2017   #3
-
0
-

#2 Kit
Neviem či ťa správne chápem do funkcie CitajDIR stačí keď doplním $cislo = 0; ?

Skúšal som to doplniť vo funkcií za ELSE bez úspechu...

Skúšal som vo funkcií vytiahnuť znova z DATABÁZY a taktiež bez úspechu... 

Môžeš byť konkrétnejší?

Nahlásit jako SPAM
IP: 90.64.127.–
Kit+15
Guru
13. 1. 2017   #4
-
0
-

#3 Tomáš

Máš tam na jednom řádku ve funkci CitajDIR

<img src='projekty/thumbs/$cislo/$subor'

a hodnotu $cislo nemáš nikde definovánu. Místo ní je tedy dosazen prázdný řetězec a vypsáno "PHP Notice:  Undefined variable: $cislo". To by tě mělo dostatečtě trknout, že tam něco chybí.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:59d2:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Tomáš
~ Anonymní uživatel
560 příspěvků
15. 1. 2017   #5
-
0
-
Nahlásit jako SPAM
IP: 90.64.127.–
Kit+15
Guru
15. 1. 2017   #6
-
+1
-
Zajímavé

#5 Tomáš
To je to nejhorší, co jsi mohl udělat. Fuj!

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:28ff:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Tomáš
~ Anonymní uživatel
560 příspěvků
15. 1. 2017   #7
-
0
-

#6 Kit
Skús to okrem komentovania aj vysvetliť prípadne hodiť sem riešenie, to že si tu vyjadríš názor nikomu nepomôže a v druhom rade ani nikoho nezaujíma... Každý sem ide nájsť riešenie, mne to ide, síce ma možno zaujíma prečo je to zle ale k podstate veci si sa s tým "Fuj!" asi nedostal, takže si to nabudúce nechaj doma pri obede...

Nahlásit jako SPAM
IP: 90.64.127.–
Kit+15
Guru
15. 1. 2017   #8
-
0
-

#7 Tomáš
Stačilo přece funkci CitajDIR přidat jeden parametr.

Globální proměnné jsou jedno velké zlo a je nutné se jich zbavit.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
15. 1. 2017   #9
-
0
-

#7 Tomáš
Jde to samozřejmě i s jedním parametrem: 

function CitajDIR($cislo) {
    $thumbs = "projekty/thumbs/$cislo";
    $foto = "projekty/foto/$cislo";
    if (!is_dir ($thumbs)) {
        echo "Žiadne nahraté obrázky";
    } else if ($dir = opendir ($thumbs)) { 
        while ($subor = readdir($dir)) {
            if ($subor!='.' and $subor!='..')           
                echo "<div class='obra'><a href='$foto/$subor' title='$subor' rel='lightbox'>
                      <div class='obr1'><img src='$thumbs/$subor' alt='$subor'/></div>
                      </a></div>";    
        } 
        closedir($dir);
    }      
}

Jako parametr při volání však nepoužiješ $cesta, ale $cislo.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
16. 1. 2017   #10
-
0
-

Mam jiny nazor. Globalnim promennym je dobre se vyhybat, ale neodsuzuji je.

Pouzivam je, kdyz chci do jine class zavest sql nebo lng. Tak si to definuji na zacatku a do construct si nacpu prirazeni globalnich promennych nekam. Stale lepsi nez do kazde funkce pak psat dalsi parametr navic.

funkce($sql, $lng, $a, $b, $c)

function __construct($sql) {$this->$sql = $sql;}
funkce($a, $b, $c) {$this->$sql ...}

Treba mam funkce, kde bych takto musel zbytecne opisovat 10 parametru, ktere budou stale stejne. To mi prijde nelogicke. To radeji berlicku s global.
funkce($a, $b, $c) {global $sql, $lng;}
 

Nahlásit jako SPAM
IP: 2001:718:2601:26c:6960:89...–
Kit+15
Guru
16. 1. 2017   #11
-
0
-

#10 peter
Pokud máš stále stejných 10 parametrů, udělej si třídu a ty parametry strč do konstruktoru instance.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
17. 1. 2017   #12
-
0
-

Dik za nepridany priklad :) Treba, kdyz to delam takhle, tak to jinak neumim, ne? Do kontruktoru je prave davam, jak jsem naznacil.

function __construct($sql) {$this->sql = $sql;}
function funkce($a, $b, $c) {$this->sql ...}

Je to trochu krkolone to furt volat pres this, ale snazim se tak vyhybat global, za ktere tu lidi stale karas :) Ikdyz obcas pouzivam zamerne i kod:

function __construct() {global $sql; $this->sql = $sql;}
function funkce($a, $b, $c) {$this->sql ...}

Jo, a mluvis na mne cinsky, mam kurz informatiky je SS a uz vubec ne na OOP, ikdyz s tim pracuji a chvalim stvoritele, protoze mam pak lepsi kontrolu nad promennymi :) Zkus cestinu a vynech ty odborne vyrazy :)

Nahlásit jako SPAM
IP: 2001:718:2601:26c:cdca:a6...–
peter
~ Anonymní uživatel
4014 příspěvků
17. 1. 2017   #13
-
0
-

resp, pouzivam velka pismena, tim odlisuji global od toho uvnitr.
function __construct() {global $SQL; $this->sql = $SQL;}

Nahlásit jako SPAM
IP: 2001:718:2601:26c:cdca:a6...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 33 hostů

Podobná vlákna

Problém se zobrazením — založil TomyBoss

Problém se zobrazéním prvku v JListech — založil Šulin Hrozný

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý