-
PHP - MySQL
Sziasztok!
Lenne egy php kérdésem...
Képgalériát csinálok, ami mysql adatbázisból veszi ki a képeket, és a képek számától függően bontja sorokra. Egy sorba, 4 kép kerül, és a hozzátartozó komment.
A kérdés, hogy hogy lehetne kinyerni az adatbázisból a képeket hivatkozását?
A tábla fejlécei: id, nev, comment.
Eddig így néz ki a kiírás mysql nélkül (a $kep, $t_kep, és a $comment írná ki, a kép nevét, illetve commentet):
<?
$keres ="SELECT * FROM $sql_tabl";
$eredmeny = mysql_query($keres) or die('<p align="center"><font color="RED">Nem sikerült kiválasztanom az adattáblát</font></p>');
//while ($sor = mysql_fetch_object($mutat)) {
$kep_db = mysql_num_rows($eredmeny);
$oszlop_szam = 4;
if($kep_db > $oszlop_szam){
$sorok = ceil($kep_db/4);
} else {
$sorok = 1;
}
$darab = 1;
echo "<DIV align='center'>\n";
echo "<table border='1' width='400'>
<tbody>\n";
// a képek és commentek kiírása az adatbázisból a képernyőre
$dir = "../../../pics/uvegfestes/";
$dir_t="../../../pics/uvegfestes/thumb/";
if($kep_db >= 1){
for($sor = 1; $sor <= $sorok; $sor++){
echo " <tr>\n";
for($oszlop = 1; $oszlop <= $oszlop_szam; $oszlop++){
if($darab <= $kep_db){
echo " <td align='center' width='100'><a href='".$dir.$kep."' width=128 height=128</a>\n";
echo " <img border='0' src='".$dir2.$t_kep."'>";
echo " <table>\n";
echo " <tbody>\n";
echo " <tr>\n";
echo " <td align='center' width='100'>"."Comment"."</td>\n";
echo " <tr>\n";
echo " </tbody>\n";
echo " </table>\n";
echo " </td>\n";
} else {
echo " <td align='center' width='100'> - \n";
echo " <table>\n";
echo " <tbody>\n";
echo " <tr>\n";
echo " <td align='center' width='100'> - </td>\n";
echo " <tr>\n";
echo " </tbody>\n";
echo " </table>\n";
echo " </td>\n";
}
$darab++;
}
echo " </tr>\n";
}
}
előre is köszi! :)
-
re: PHP - MySQL
Jól bekezdtél 1. hozzászólással :) Először is a kérdést se értem:
A kérdés, hogy hogy lehetne kinyerni az adatbázisból a képeket hivatkozását?
1. azt hittem képeket, hogy lehet kinyerni, de az megvan
2. meg, hogy a képek hivatkozását, de az is megvan.
Ha meg a hivatkozással van a baj, azt tuti ez okozza:
PHP kód:
echo " <td align='center' width='100'><a href='".$dir.$kep."' width=128 height=128</a>\n";
echo " <img border='0' src='".$dir2.$t_kep."'>";
Amúgy ha már van PHP bbcode, akkor használd legközelebb, mert borzasztóan átláthatatlan az amúgyis ronda kód :mellow:
Így talán kicsit szebb, itt-ott módosítva rajta. Talán a következő ember aki érti a kérdést jobban átlátja ebből mit is akarna csinálni a progi.
PHP kód:
<?
$keres ="SELECT * FROM $sql_tabl";
$eredmeny = mysql_query($keres) or die('<p align="center"><font color="red">Nem sikerült kiválasztanom az adattáblát</font></p>');
//while ($sor = mysql_fetch_object($mutat)) {
$kep_db = mysql_num_rows($eredmeny);
$oszlop_szam = 4;
if ($kep_db > $oszlop_szam) $sorok = ceil($kep_db/4);
else $sorok = 1;
$darab = 1;
echo '
<div align="center">
<table border="1" width="400">
<tbody>';
// a képek és commentek kiírása az adatbázisból a képernyőre
$dir = "../../../pics/uvegfestes/";
$dir_t="../../../pics/uvegfestes/thumb/";
if ($kep_db >= 1) {
for ($sor = 1; $sor <= $sorok; $sor++) {
echo '<tr>';
for ($oszlop = 1; $oszlop <= $oszlop_szam; $oszlop++) {
if ($darab <= $kep_db) {
echo '<td align="center" width="100">
<a href="'.$dir.$kep.'" width="128" height="128">
<img border="0" src="'.$dir2.$t_kep.'"></a><br/>
'.$comment.'
</td>';
}
else {
echo '<td align="center" width="100"> - </td>';
}
$darab++;
}
echo '</tr>';
}
}
:jolegy) K
-
re: PHP - MySQL
Köszi szépen!
a kódban elhelyezett $dir.$kep, illetve $dir2.$t_kep, annak kellene majd tartalmaznia a kép elérését, csak nem tudom hogy lehetne átadni.
pl a tábla tartalma:
id | nev | comment
----------------------------------------------
1 | kep1.jpg | Kép 1
2 | kep2.jpg | Kép 2
3 | kep3.jpg | Kép 3
4 | kep4.jpg | Kép 4
5 | kep5.jpg | Kép 5
akkor a kimenet úgy nézzen ki, hogy 2 sorban, soronként 2 kép. A képek alatt a komment. Ezért próbálkoztam táblázattal. És ha új kép kerül az adatbázisba, akkor az hozzákapcsolódjon. A kép nevének módosítását, pedig a progi csinálja meg. Pl.: a célkép: ../../../pics/uvegfestes/kep1.jpg,
a thumb pedig: ../../../pics/uvegfestes/thumb_kep1.jpg
Ez lenne ennek a proginak feladata. :)
-
re: PHP - MySQL
Én még mindig nem értem teljesen hogy hol akadtál meg, de megpróbálom.
Indulásnak itt egy kód ami "megnyit" egy mappát, és a benne levő file-okat kilistázza:
PHP kód:
$k_azon = opendir('../../../pics/uvegfestes/)
while (false !== ($fajl = readdir($k_azon))) {
echo "<br>$fajl\n";
}
Ha itt az echo-t kiegészíted azzal hogy <img src=".$fajl.".jpg> akkor már a jpg-ket ki is tetted az adott mappából, sql nélkül.
mySQL-ben sem sokkal másabb a helyzet, ha megvan a tábla, ami tartalmazza a file-ok elhelyezkedését, és nevét, akkor csak egy olyan lekérdezést kell csinálnod, ami kiírja ezeket. Ezek után a ciklusba beépítheted az előbb említett <img> tagot, akkor már meglesznek a képek, aztán jöhet a formázás.
Nem tudom a bemásolt forrás ebben a formában mit produkál, de vannak benne hibák, pl:
<a href='".$dir.$kep."' width=128 height=128</a>
helyesebben:
<a href='".$dir.$kep."'><img src="kephivat.jpg"></a>
Egyébként az elképzelés rendben van, bár ha még nem megy az sql, akkor előbb próbálj meg csak simán sorokat kiszedni, onnan már nem lehet elrontani ha az megvan.
Egy lekérdezés:
PHP kód:
$query = "SELECT * FROM kepek ";
$result = mysql_query($query);
while($r=mysql_fetch_array($result))
{
$id = $r[id];
echo $id;
}
Ezzel most az $id változóba tetted a lekérdezés id értékét, majd kiirattad. Ha több is volt a táblán, akkor egy egész sort kell kapnod. Na innen már meg kell tudni csinálni:) Sokadszorra olvasva a commented, talán ez az utolsó rész ami nem volt tiszta neked. Sorry, ha a többi nem volt számodra érdekes.
Írd le meddig jutottál, mi a hiba, akkor könnyebb lesz!
ui.: az sql-hez először is csatlakozni kell: include(conn.php); ezt sem látom sehol.
-
re: PHP - MySQL
Köszi! :) Neki is fekszek.
Megvan a kapcsolat, is, csak azt nem másoltam be. Azzal nincs is semmi hiba.
egyedül a kiíratásnál akadtam el. De remélem,hogy az most rendben lesz. :)
-
re: PHP - MySQL
Oké, ha gáz van, még itt leszek ma egy darabig+ egyébként most már szinte minden nap;)
-
re: PHP - MySQL
Ok. :) Köszi :)
Egyébként most működik. Átírtam a kódot. Most így néz ki, és működik is. :)
PHP kód:
if ($kep_db >= 1) {
for ($sor = 1; $sor <= $sorok; $sor++) {
echo '<tr>';
for ($oszlop = 1; $oszlop <= $oszlop_szam; $oszlop++) {
if ($darab <= $kep_db) {
$nev = mysql_fetch_array($eredmeny);
$kep = $nev[nev];
$comment = $nev[comment];
echo '<td align="center" width="128">
<a href="'.$dir.$kep.'">
<img border="0" src="'.$dir_t.$kep.'" width="128" height="128"></a><br/>
'.$comment.'
</td>';
}
else {
echo '<td align="center" width="128"> - </td>';
}
$darab++;
}
echo '</tr>';
}
}
Már csak egy dolgot kell megoldani, hogy mikor feltöltöm a képet (ennek a kódja már kész van, és működik is) a feltöltendő képet egyszer mentse el simán (bár jó lenne ha át lehetne neveztetni... ezt még nem sikerült megcsinálnom), majd ugyanebből a képet egy lépésben kicsinyítse le, majd másnéven mentse le egy másik könyvtárba... A kép méretezését most vadászom, hogy hogy kell... a problémásbb rész, hogy hogy nevezzem át a feltöltendő képet. Pl.: a kép neve: pics1.jpg és ezt kep1.jpg--ként mentse el.
-
re: PHP - MySQL
Mivel mindig hangoztatom, hogy a table nem elhelyezésre való, arra ott a div+css, ezért itt egy ehhez igazított eléggé leegyszerűsített változata te kódodnak. Itt-ott lehet benne hiba, mert nem sql-lel próbáltam ki, csak konstans tömbbel, de azzal jól ment IE 5.5-7.0, FF, Opera alatt is.
A CSS:
HTML kód:
<style type="text/css">
div.kep {
width: 100px;
float: left;
text-align: center;
}
div.kep img {
width: 100px; height: 100px;
}
</style>
és a hozzátartozó PHP:
PHP kód:
// Ugye már megvolt a kapcsolódás az adatbázishoz
$keres = mysql_query("SELECT nev, comment FROM $sql_tabl");
while ($kep = mysql_fetch_assoc($keres)) {
echo '
<div class="kep">
<a href="/pics/uvegfestes/'.$kep['nev'].'">
<img src="/pics/uvegfestes/thumb/'.$kep['nev'].'" alt=""/> </a>
'.$kep['comment'].'
</div>';
}
Így talán kicsit letisztultabb mind a PHP kódod, mind a belőle lefordított HTML is. Persze ettől függetlenül úgy csinálod ahogy akarod :)
ui.: látom közben sikerült megoldani, hogy működjön is :)
:jolegy) K
-
re: PHP - MySQL
Átnevezés:
PHP kód:
<?php
$fileHand = fopen('tempFile.txt', 'r');
fclose($fileHand);
rename( 'tempFile.txt', 'tempFile2.txt' );
?>
Ezen felül ajánlom figyelmedbe a PHP manualt: hxxp://hu.php.net/rename
-
re: PHP - MySQL
Köszi! :)
Közben felmerült még egy probléma... De ez inkább beállítás lehet...
Otthon kiakartam próbálni a teljes honlapot, amin van egy szöveg beviteli rész is. Az azt kezelő program nem hajlandó kezelni az átadott értékeket...
Az esemény kezelést, illetve a beviteli részt, ugyan az a program végzi.
Ebben az esetben admin.php
PHP kód:
<p align='center'>
<a class='buttonview' href='admin.php?todo=uj'>Új vers</a>
</p><br>";
Mikor meghívja az oldal saját magát, a $todo változó tartalma üres... Nem
ad át semmit... Eddig működött, de most hogy újra telepítettem a gépet, nem igazán akar menni... Debian etch rendszerem van.