Avatar billede Slettet bruger
10. juli 2014 - 15:34 Der er 4 kommentarer og
1 løsning

Databasekald med php

Er der en sød og rar sjæl, der vil hjælpe mig med at få noget vist på min side.
Jeg har i databasen flg. tabeller:

field_revision_body med 
  body_value
  entity_id 

field_data_field_sekundbilleder med
  entity_id
  field_sekundbilleder_fid

file_managed med
  filename
  fid

Koden som jeg har lige nu, ser sådan ud, men giver altså en blank side.

$data = mysql_query("SELECT field_revision_body.body_value, file_managed.filename
FROM field_revision_body
JOIN field_data_field_sekundbilleder ON field_revision_body.entity_id = field_data_field_sekundbilleder.entity_id
JOIN file_managed  ON field_data_field_sekundbilleder.field_sekundbilleder_fid = file_managed.fid
WHERE  field_revision_body.entity_id =".$_GET['var']." ")
or die(mysql_error());

while($info = mysql_fetch_array( $data ))
{
?>
<!--- Hvis "filename" ikke er tomt vises billedet --->
<?php
if (!empty($filename)) {
Print "<div class='span10' style='float:left; background-color:#CF0'>".$info['body_value'] . "</div> ";
Print "<div class='span3' style='float:left; background-color:#96C'><img src='../". $info['filename'] ."</div> ";
} else {
?>
<!--- ellers vises teksten i 100% bredde --->
<?php   
Print "<div  style='float:left; width:100%;'>".$info['body_value'] . "</div> ";
} }
?>


Jeg mangler hjælp til at få det til at virke, og er selv meget nybegynder indenfor mySql. Men jeg vil gerne lære, og lærer bedst ved at jeg får en kode der virker, at se. Så kan jeg se forbindelsen i den hele.

Håber der en nogen, der en sådan dejlig solskinsdag har tid til at forklare mig det :-)
Avatar billede olsensweb.dk Ekspert
10. juli 2014 - 17:13 #1
det må være en opfølgning på dette spørgsmål
http://www.eksperten.dk/spm/995989

hvrfor bruger du det gamle mysql API ?? (de sidste 3 år har det været meldt ud det bliver fjernet fra PHP)
brug mysqli eller PDO
http://php.net/manual/en/mysqlinfo.api.choosing.php


denne linje skriger til himlen, hvor bliver $filename sat ??
if (!empty($filename)) {

skulle vel være
if (!empty($info['filename'])) {


har du afprøvet din sql sætning i phpmyadmin ??,
giver den det forvendtede resultat ??
hvis den gør dette er det ikke en sql fejl men en PHP fejl, og burde nok have været lagt i php gruppen


har du en forbindelse til din database ??
hvordan ser denne ud ??


sender du en variabel over i din url der hedder var
findes denne værdi i field_revision_body.entity_id
Avatar billede tobrukDk Novice
10. juli 2014 - 20:17 #2
Hvis du skal lave med mysqli så kig her: http://www.eksperten.dk/guide/1480
Avatar billede olsensweb.dk Ekspert
11. juli 2014 - 07:45 #3
selvom man skifter til mysqli eller PDO er det ikke nogle betingelse at bruge Prepared Statements, men det er en god ide, Prepared Statements er en af nyskabelserne i mysqli og PDO, det kan dog være en stor mundfuld for begyndere

i første omgang drop det gamle API, det er spild af tid!!!


mysqli: kan skrives på 2 måder: Procedural style som du "kender" fra det gamle mysql API, og Object oriented style, eller mixe de 2 styles
i mysqli kan man anvende Prepared Statements, men kun bruge nummeret placeholders



PDO: (PHP Data Objects) 100% object oriented style
personligt ville jeg springe mysqli over og gå direkte til PDO, da man herved
1)lettete kan skifte fra en database til en anden feks. fra mysql til mssql
2)ved Prepared Statements kan man bruge named placeholders, og nummeret placeholders


hvis du ikke anvender Prepared Statements bør du som minimum sikre med en af følgende: afh. API
http://php.net/manual/en/function.mysql-real-escape-string.php
http://php.net/manual/en/mysqli.real-escape-string.php
http://php.net/manual/en/pdo.quote.php

man kan også vælge at validere med GUMP
Avatar billede Slettet bruger
13. juli 2014 - 22:25 #4
Mange tak for jeres forslag til at løse opgaven. Jeg har fået det til at virke og min kode kom til at se sådan ud:

$sql = "SELECT field_revision_body.body_value FROM field_revision_body WHERE field_revision_body.entity_id = '$id'";
$result = $objconn->query($sql);
while($row = $result->fetch_assoc()) {
   
    $text = $row['body_value'];

   
$sql1 = "SELECT file_managed.filename
FROM field_revision_body
JOIN field_data_field_sekundbilleder ON field_revision_body.entity_id = field_data_field_sekundbilleder.entity_id
JOIN file_managed  ON field_data_field_sekundbilleder.field_sekundbilleder_fid = file_managed.fid
WHERE  field_revision_body.entity_id = '$id'";
$res = $objconn->query($sql1);
if($res->num_rows > 0) {
        echo "<div class='span10' style='float:left;'>$text</div> ";
while($ro = $res->fetch_assoc()) {
    $img = $ro['filename'];


echo "<div class='span3' style='float:left;'><img src='images/$img'> </div> ";
}

} else {
    echo "<div  style='float:left; width:100%;'>$text</div> ";
}

       
}
?>


Vil den der har givet svaret, sende et svar så jeg kan give point :-)
Avatar billede Slettet bruger
25. juli 2014 - 08:49 #5
Igen svar til point, så jeg lukker. Men tak alligevel :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester