PHP value

Pozdravljeni!

Naj na začetku omenim, da sem še dokaj svež glede PHP-ja, zato vam bo moja težava mogoče zgledala banalno. Zaplete se mi namreč pri spodnji zadevi:

<?php
$dbLink = new mysqli('***', '***', '***', ***');
if(mysqli_connect_errno()) {
    die("MySQL connection failed: ". mysqli_connect_error());
}
$sql = "SELECT ImeAlbuma,  Datum, UstAlbum FROM m1000575albumi WHERE IDa= {$_GET['IDa']}";

$result = $dbLink->query($sql);

if($result) {

    if($result->num_rows == 0) {
        echo '<p><g>Album je prazen.</g></p>';
    }
    else
    {
  while($row = $result->fetch_assoc()) {
            echo
            "<div class='img'>
            <div class='naslov'>album | {$row['ImeAlbuma']}</div>
            <a target='_blank' href='slike.php?IDa={$_GET['IDa']}'><img src='alb4.png' alt='alb' ></a>
            <div class='desc'>{$row['ImeAlbuma']}</div>
</div>" ;
}
    }

    $result->free();
}
else
{
    echo 'Error! SQL query failed:';
    echo "<pre>{$dbLink->error}</pre>";
}

$dbLink->close();

$ImeAlbuma = $row['ImeAlbuma'];
?>

<g>Naloži novo sliko:</g>
<form action="nalozisliko.php" method="post" enctype="multipart/form-data">
<table border="0" cellspacing="0" align="center" cellpadding="3" bordercolor="#cccccc">
<tr>
<td><g>Ime slike: </g></td>
<td><input type="text" name="ImeSlike" /></td>
<td>Slika:</td>
<td><input type="file" name="filep" size=45></td>
</tr>
<tr>
<input type="hidden" name="ImeAlbuma" value="?????????" />  //????????????????????????
<td colspan=2><p align="center">
<input type="submit" name="action" value="Load">
</td>
</tr>
</table>
</form>

Zraven moje težave sem dal vprašaje, da je vidno kaj mislim. Namreč rad bi pod value vstavil vrednost "ImeAlbuma", ki je spremenljivka in jo dobim iz baze. Poskusil sem že z vsem možnim, vendar mi je preprosto zmanjkalo idej. Upam, da je moje vprašanje dovolj jasno, če ne se bom potrudil še bolj razložiti.

Za vsako pomoč bom hvaležen!

7 odgovorov

<input type="hidden" name="ImeAlbuma" value="<?php echo $ImeAlbuma;?>" />

1
<input type="hidden" name="ImeAlbuma" value="<?php echo $ImeAlbuma; ?>" />

Odvisno od nastavitev strežnika in verzije PHP pa bi delalo tudi:

<input type="hidden" name="ImeAlbuma" value="<?=$ImeAlbuma?>" />

Dodaj še preverjanje vhodnih parametrov, da ti ne bodo pošiljali kakšnih neumnosti v bazo.

1

Kar sta rekla že dva zgoraj, jaz pa dodajam še tole:

:P

14

Hvala obema za pomoč, ampak mi še kar v bazo ne shrani podatka ImeAlbuma.

V bazo pa shranim pol z:

mysqlquery("INSERT into m1000575slike (PotDoSlike, UstSliko, ImeSlike, ImeAlbuma) VALUES('".$FILES['filep']['name']."', '$SESSION[Uporabnisko]', '$POST[ImeSlike]', '$_POST[ImeAlbuma]')");

Če je lahko tu mogoče kak problem?

edit: sedaj pa dela! Res hvala vsem za pomoč! lps

Upoštevaj tole slikico, ki ti jo je Vini prilimal. Kot vidiš iz napisanega je to zelo resen problem.

Ta slikca zgoraj zmaga res!

1

Poleg slikce si poglej še tole: http://en.wikipedia.org/wiki/SQL_injection

Problem pa imaš, ker se ti 'while' stavek zaključi, ti pa še vedno nato želiš spodaj dostopati do lokalne spremenljivke v bloku ($row). Naredi tako, da inicializiraš spremenljivko ($ImeAlbuma) na začetku in ji nato daš vrednost v samem 'while' stavku. Na ta način bo spremenljivka imela pravo vrednost, ki jo iščeš. Pomagaj pa si tudi s tem http://www.php.net/var_dump Verjetno ti bo marsikdaj koristilo.

Za SQL injection pa uporabi npr. vsaj http://www.php.net/manual/en/mysqli.real-escape-string.php