24. februar 2006 - 15:50Der er
21 kommentarer og 1 løsning
Fejl ved visning af icon til billedannonce
Kan man på en eller anden måde få et icon til at blive vist ud for en annonce hvis der er et billede til selve annoncen? Annoncen bliver vist med følgende kode, og det er her at der skal komme et kameraicon hvis annoncen har et billede når den åbnes. Det er meningen at den ud fra de annoncer som har et billede skal vise et kamera-billede.. og kunne man ikke få den til at vise billedet lige efter teksten som bliver udskrevet ved "produkt", så der kommer teksten fra produkt, og så evt. et billedeicon hvis annoncen har et billede når man trykker på den:)
Læg mærke til sql 2-sætningen, for det er den der skulle få iconet frem, men det virker ikke.. Så kommer der slet ingen annoncer frem.. men sjovt nok ser det ud til pagingen godt ved hvor mange sider som skal vises da den viser to sider, bare uden nogen annoncer.
if(!isset($_GET['selectName']) || $_GET['selectName']=="") { $query = mysql_query("select * from salgAfProdukt left join postnr on salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%".$_GET['search']."%' order by id desc limit $s,$pr_side") or die(mysql_error()); } else { $query = mysql_query("select * from salgAfProdukt left join postnr on salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%".$_GET['search']."%' AND salgAfProdukt.postNr BETWEEN LEFT('".$selectName."',4) AND RIGHT('".$selectName."',4) AND kategori LIKE '%".$_GET['selectKategori']."%' order by id desc limit $s,$pr_side") or die(mysql_error()); }
while($row = mysql_fetch_array($query)){
$sql2 = "SELECT count(*) AS antalBilleder FROM billeder_salgAfProdukt WHERE artikelid=" . $row["id"]; $query2 = mysql_query($sql) or die(mysq_error()); $row2 = mysql_fetch_assoc($query); if ($row2["antalBilleder"] > 0) echo "<img src='../NewFiles/kamera.gif'>";
## #Find ud af om derskal være et Forrige link ## if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color=\"#4682B4\">Forrige</font></a> "; //Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; //Definerer hvor sidetal skal starte for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $s) { //Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET[search]&selectName=$_GET[selectName]'><font color=\"#4682B4\">$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { //Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color=\"#000000\">$page </font>"; //...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $s+$pr_side) { //Tjekker om der er flere sider $next_s = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color=\"#4682B4\">Næste</font></a>"; //Udskriver linket "næste" } } echo "</tr></td></table>"; ?>
while($row = mysql_fetch_array($query)) { $sql2 = "SELECT count(*) AS antalBilleder FROM billeder_salgAfProdukt WHERE artikelid=" . $row["id"]; echo "DEBUG: " . $sql2 . "<br>"; $query2 = mysql_query($sql) or die(mysq_error()); $row2 = mysql_fetch_assoc($query); if ($row2["antalBilleder"] > 0) echo "<img src='../NewFiles/kamera.gif'>";
Jeg vil næsten gætte på at det er fordi at der ikke er nogen fornuftig værdi i $row["id"] - hedder dit felt forresten "id" eller skulle der stå noget andet der?
PS: Der var sådan set ingen speciel grund til at lukke det foregående spørgsmål - hvis man ønsker at udlove flere point end det man først har afsat, kan man gøre dette ude i venstre side: Under menuen Funktioner er der et punkt "Afsæt flere point".
Jeg glemt den indledende tekst til det ovenstående:
Når databasen opføre sig mærkligt så skyldes det i 9 ud af 10 tilfælde at ens SQL-sætninger ser anderledes ud end det man forventer. Derfor er det altid en god ide at starte fejlfindingen med et par debug-udskrifter af dem.
Du bør altså starte med at prøve at udskrive SQL'en før at du forsøger at udføre den:¨
... og så derefter den tekst, og det kode, jeg postede ovenfor.
Efter jeg har prøvet at indsætte debuggen kommer den med følgende: DEBUG: SELECT count(*) AS antalBilleder FROM billeder_salgAfProdukt WHERE artikelid=58
if (!isset($_GET['selectName']) || trim($_GET['selectName']) == "") { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; } else { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' AND salgAfProdukt.postNr BETWEEN LEFT('" . $selectName . "', 4) AND RIGHT('".$selectName."', 4) AND kategori LIKE '%" . $_GET['selectKategori'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; } echo "DEBUG #1: " . $sql . "<br>"; $query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)) { $sql2 = "SELECT count(*) AS antalBilleder FROM billeder_salgAfProdukt WHERE artikelid=" . $row["id"]; echo "DEBUG #2: " . $sql2 . "<br>"; $query2 = mysql_query($sql) or die(mysq_error()); $row2 = mysql_fetch_assoc($query2); if ($row2["antalBilleder"] > 0) echo "<img src='../NewFiles/kamera.gif'>";
$total = mysql_result($g_total,0); if ($total > $pr_side) { ## #Find ud af om der skal være et Forrige link ## if ($s >= $pr_side) { // Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>Forrige</font></a> "; // Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; // Definerer hvor sidetal skal starte for ($start = 0; $total > $start; $start += $pr_side) { // For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $s) { // Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { // Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color='#000000'>$page </font>"; // ...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $s+$pr_side) { // Tjekker om der er flere sider $next_s = $s + $pr_side; // Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>Næste</font></a>"; // Udskriver linket "næste" } }
Ved godt det virker lidt psyko, men der er lidt mere kode på siden. Ved ikke om det hjælper, men jeg har faktisk to sqller på siden, så måske det er der problemet ligger:) Håber at du kan bruge det.
<?PHP require("../members/common.php");
// Funktion, der "klipper" en tekst over på det mest hensigtsmæssige sted (".", " ", ) // str klip(str tekst, int længde, int tolerance)
function klip($tekst, $laengde = 200, $tolerance = 10) // $laengde og $tolerance kan udelades { $punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum $mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) { $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance $mere = ""; // ikke andet } elseif ($punktum !== false) { $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum } elseif ($mellemrum !== false) { $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum } else { $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over) }
$pr_side = "20"; //Definerer antal resultater pr. side
if (!isset($s)) { $s = "0"; //Tjekker om $s - som står for start - er sat, hvis ikke sættes den }
if(!isset($_GET['selectName']) || $_GET['selectName']=="") { $g_total = mysql_query("select count(id) as total from salgAfProdukt WHERE produkt LIKE '%".$_GET['search']."%'") or die(mysql_error()); } else { $g_total = mysql_query("select count(id) as total from salgAfProdukt WHERE produkt LIKE '%".$_GET['search']."%' AND salgAfProdukt.postNr BETWEEN LEFT('".$selectName."',4) AND RIGHT('".$selectName."',4) AND kategori LIKE '%".$_GET['selectKategori']."%'") or die(mysql_error()); } $total = mysql_result($g_total,0); if($total>$pr_side) { if ($total > $s+5){ ## #Find ud af om derskal være et Forrige link ## if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous_s'><font color=\"#4682B4\">Forrige</font></a> "; //Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; //Definerer hvor sidetal skal starte for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $s) { //Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET[search]&selectName=$_GET[selectName]'><font color=\"#4682B4\">$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { //Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color=\"#000000\">$page </font>"; //...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $s+$pr_side) { //Tjekker om der er flere sider $next_s = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color=\"#4682B4\">Næste</font></a>"; //Udskriver linket "næste" } } } echo "</tr></td></table>"; echo " <table width=\"560\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"bgcolor=\"#CAD9EA\"> <tr> <td><span class=\"mini\"> </span></td> </tr> </table>";
if (!isset($_GET['selectName']) || trim($_GET['selectName']) == "") { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; } else { $sql = "SELECT * FROM salgAfProdukt LEFT JOIN postnr ON salgAfProdukt.postNr = postnr.postnr WHERE produkt LIKE '%" . $_GET['search'] . "%' AND salgAfProdukt.postNr BETWEEN LEFT('" . $selectName . "', 4) AND RIGHT('".$selectName."', 4) AND kategori LIKE '%" . $_GET['selectKategori'] . "%' ORDER BY id DESC LIMIT $s, $pr_side"; } echo "DEBUG #1: " . $sql . "<br>"; $query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)) { $sql2 = "SELECT count(*) AS antalBilleder FROM billeder_salgAfProdukt WHERE artikelid=" . $row["Id"]; echo "DEBUG #2: " . $sql2 . "<br>"; $query2 = mysql_query($sql) or die(mysq_error()); $row2 = mysql_fetch_assoc($query2); if ($row2["antalBilleder"] > 0) echo "<img src='../NewFiles/kamera.gif'>";
$total = mysql_result($g_total,0); if ($total > $pr_side) { ## #Find ud af om der skal være et Forrige link ## if ($s >= $pr_side) { // Tjekker om værdien af $s er større eller lig $pr_side $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>Forrige</font></a> "; // Udskriver linket }
## #Find ud af hvis/hvor mange sider der er rows til ## $page = 1; // Definerer hvor sidetal skal starte for ($start = 0; $total > $start; $start += $pr_side) { // For-løkke der kører indtil der ikke er nok rows til en side mere if ($start != $s) { // Tjekker om linket vil komme til at pege på den side man er på echo "<a href='?s=$start&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page } else { // Ellers, dvs. hvis linket vil pege på den side man er på.. echo "<font color='#000000'>$page </font>"; // ...udskrives værdien af $page bare, altså ikke som link } $page++; //Lægger en til $page til næste gang løkken køres }
## #Find ud af om der skal være et næste link ## if ($total > $s+$pr_side) { // Tjekker om der er flere sider $next_s = $s + $pr_side; // Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next_s&search=$_GET[search]&selectName=$_GET[selectName]'><font color='#4682B4'>Næste</font></a>"; // Udskriver linket "næste" } }
Sejt.. det virker sku nu.. :) Kan du ikke give mig en sidste hjælp, og det med hvordan får jeg den til at vise billedet i et tabelfelt istedet for hvor den gør det nu.. Ville nemlig godt have vist billedet lige efter teksten [produkt]</a> ? Håber du kan hjælpe.. og smider du så ikke et svar så du kan få nogle velfortjente point.. takker mange gange :)
Ok.. men det har jeg nemlig også prøvet, og det virkede ikke for mig.. hvis jeg nu skulle have vist iconet ude til højre øverst i denne celle, hvordan ville du så få det vist der?
... såadan at det i den større sammenhæng ser nogenlunde sådan her ud:
echo " ... og så en masse html-kode ... ... <td width='360' valign='top'><span class='mellem'><a href='visSalgsannoncer.php?id=$row[Id]' target='vs'>$row[produkt]</a></span> <br><span class='lille'>".klip($row['supplerendeTekst'])."</span></td> <td valign='top' align='right'>"; if ($row2["antalBilleder"] > 0) echo "<img src='../NewFiles/kamera.gif'>"; echo "</td> . og så noget mere html-kode ... ";
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.