Hey,
Ik draai een query die afbeeldingen ophaalt bij een nieuwsbericht. Nu wil ik wanneer er geen afbeelding is geupload een standaard afbeelding laten zien. Ik krijg alleen niet voor elkaar hoe ik moet checken of deze query leeg is.
Hieronder de opbouw van de code:
$row['link'] bevat de afbeelding-naam
Ik heb strlen enz al geprobeerd in de while loop, maar ik denk dat 'ie niet in de while-loop komt als er geen foto is gevonden. Ik weet niet hoe ik dat moet afvangen voor de loop.PHP Code:
$select_fotos = mysql_query("SELECT * FROM fotos WHERE item_id = '".mysql_real_escape_string($row['id'])."' AND soort = '2' ORDER BY id ASC LIMIT 1")or die (mysql_error());
while($fotos = mysql_fetch_assoc($select_fotos))
{//FOTO's OPHALEN
HTML code om afbeelding weer te geven
}//EINDE FOTO's OPHALEN
Hoop dat iemand me kan helpen.
- Check op lege query
-
02-04-2012, 17:45 #1
- Berichten
- 348
- Lid sinds
- 16 Jaar
Check op lege query
-
-
02-04-2012, 17:53 #2
- Berichten
- 312
- Lid sinds
- 18 Jaar
Re: Check op lege query
PHP Code:<?php
if(mysql_num_rows($select_fotos) == 0)
{
echo 'Standaardfoto';
}
else
{
while($fotos = mysql_fetch_assoc($select_fotos))
{//FOTO's OPHALEN
HTML code om afbeelding weer te geven
}//EINDE FOTO's OPHALEN
}
-
02-04-2012, 18:03 #3
- Berichten
- 158
- Lid sinds
- 13 Jaar
Re: Check op lege query
Dit is niet de bedoeling Niels het moet zo:
PHP Code:$select_fotos = mysql_query("SELECT * FROM fotos WHERE item_id = '".mysql_real_escape_string($row['id'])."' AND soort = '2' ORDER BY id ASC LIMIT 1")or die (mysql_error());
while($fotos = mysql_fetch_assoc($select_fotos)) {
if($fotos['url'] = "") {
$fotos['url'] = "standaardurl";
}
}
Dit is hoe het moet!
-
02-04-2012, 18:34 #4
- Berichten
- 100
- Lid sinds
- 13 Jaar
Re: Check op lege query
Dit is niet de bedoeling Niels het moet zo:
PHP Code:$select_fotos = mysql_query("SELECT * FROM fotos WHERE item_id = '".mysql_real_escape_string($row['id'])."' AND soort = '2' ORDER BY id ASC LIMIT 1")or die (mysql_error());
while($fotos = mysql_fetch_assoc($select_fotos)) {
if($fotos['url'] = "") {
$fotos['url'] = "standaardurl";
}
}
Dit is hoe het moet!
Ten tweede is het controleren van een row op "" erg slordig, en niet de manier.
Je kijkt gewoon op het ID of hij bestaat in de database, met mysql_num_rows. Simpeler en netter kan niet.
Een goed en simpel voorbeeld van hoe ik het zou doen;
PHP Code:$select_fotos = mysql_query("SELECT * FROM fotos WHERE item_id = '".mysql_real_escape_string($row['id'])."' AND soort = '2' ORDER BY id ASC LIMIT 1");
if( !$select_fotos ){
echo "Er zijn fouten voorgekomen.<br />Reden:". mysql_error();
}else{
if( mysql_num_rows( $select_fotos ) == 0 ){
// Er zijn geen foto's gevonden.
echo "Standaardfoto";
}else{
while($fotos = mysql_fetch_assoc($select_fotos))
{//FOTO's OPHALEN
HTML code om afbeelding weer te geven
}//EINDE FOTO's OPHALEN
}
}
-
02-04-2012, 18:41 #5
- Berichten
- 158
- Lid sinds
- 13 Jaar
Re: Check op lege query
Dit is al helemaal niet hoe het moet, or die() is een slechte afhandeling van je script.
Ten tweede is het controleren van een row op "" erg slordig, en niet de manier.
Je kijkt gewoon op het ID of hij bestaat in de database, met mysql_num_rows. Simpeler en netter kan niet.
Een goed en simpel voorbeeld van hoe ik het zou doen;
PHP Code:$select_fotos = mysql_query("SELECT * FROM fotos WHERE item_id = '".mysql_real_escape_string($row['id'])."' AND soort = '2' ORDER BY id ASC LIMIT 1");
if( !$select_fotos ){
echo "Er zijn fouten voorgekomen.<br />Reden:". mysql_error();
}else{
if( mysql_num_rows( $select_fotos ) == 0 ){
// Er zijn geen foto's gevonden.
echo "Standaardfoto";
}else{
while($fotos = mysql_fetch_assoc($select_fotos))
{//FOTO's OPHALEN
HTML code om afbeelding weer te geven
}//EINDE FOTO's OPHALEN
}
}
Dat is niet waar, aangezien je een while loop gebruikt zijn er meerdere rows die je ophaalt en kan elke row een foto hebben of niet. Als dit niet het geval is hoef je niet de while loop te gebruiken. Indien dat het geval is gebruik je wel de code van Dennis.
-
02-04-2012, 19:16 #6
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: Check op lege query
Lol ... een order en een limit 1 op een primary key veld van een tabel moeten gebruiken en jullie denken dat dit ergens een goede oplossing is?
Toevallig iemand die een left join of zo voorstelt en het toevoegen van een 1 byte veldje aan de foto tabel om aan te geven wat de hoofdfoto is?
Dan krijg je vast ook minder ruzie met je hoster als de googlebot langskomt om je '5000' pagina's met 100 nieuws items per page begint te indexeren. Scheelt al snel 99% aan queries in dat geval.
En het kunnen aanpassen van de hoofdfoto is een erg handige funktie van een nieuws overzicht met meerdere mogelijke foto's. Zowel op gebruikerservaring gebied als op marketinggebied.
Een zeer handige byte, zo al met al...
my.2.cents.excl.btw
Maybe... beetje al te cru/sarcastisch.. srry... ligt aan de maandag...
-
02-04-2012, 19:19 #7
- Berichten
- 195
- Lid sinds
- 18 Jaar
Re: Check op lege query
PHP Code:<?php
try {
$select_photos = mysql_query("SELECT * FROM `fotos` WHERE `item_id`=".mysql_real_escape_string($row['id'])."' AND `soort`='2' ORDER BY `id` ASC LIMIT 0,1");
while($select_photos = mysql_fetch_assoc($select_photos)){
echo "Afbeeldingen weergeven";
} else {
throw new Exception("Hier de standaardafbeelding");
}
} catch Exception($e) {
echo $e->Message;
}
?>
-
02-04-2012, 19:54 #8
- Berichten
- 348
- Lid sinds
- 16 Jaar
Re: Check op lege query
Thanks, werkt perfect zo :)
Dit is al helemaal niet hoe het moet, or die() is een slechte afhandeling van je script.
Ten tweede is het controleren van een row op "" erg slordig, en niet de manier.
Je kijkt gewoon op het ID of hij bestaat in de database, met mysql_num_rows. Simpeler en netter kan niet.
Een goed en simpel voorbeeld van hoe ik het zou doen;
PHP Code:$select_fotos = mysql_query("SELECT * FROM fotos WHERE item_id = '".mysql_real_escape_string($row['id'])."' AND soort = '2' ORDER BY id ASC LIMIT 1");
if( !$select_fotos ){
echo "Er zijn fouten voorgekomen.<br />Reden:". mysql_error();
}else{
if( mysql_num_rows( $select_fotos ) == 0 ){
// Er zijn geen foto's gevonden.
echo "Standaardfoto";
}else{
while($fotos = mysql_fetch_assoc($select_fotos))
{//FOTO's OPHALEN
HTML code om afbeelding weer te geven
}//EINDE FOTO's OPHALEN
}
}
-
06-04-2012, 21:03 #9
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
Re: Check op lege query
De code in de while wordt alleen uitgevoerd als er überhaupt 'iets' opgehaald is uit de database. Als je weet dat ieder resultaat in je database een geldige afbeelding heeft hoef je daar dus niets te doen.
In de while kun je overigens het resultaat testen door bijvoorbeeld;
PHP Code:if(empty($result['image']))
PHP Code:if(file_exists('/path/naar/de/afbeeldingen/'.$result['image']))
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic