[PHP-MySQL] IF Statement werkt niet?

Pagina: 1
Acties:
  • 62 views sinds 30-01-2008

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

    $foto1 = $_GET [ 'studentnr' ];
    $extentie = "JPG";
    $foto = $foto1.".".$extentie;

if (file_exists("/kpz/img/fotos/$foto")) { ?>

<table rules="none">
<tr>
    <TD>[img]"/kpz/img/fotos/<?php[/img].jpg" ALT="Foto" WIDTH="130" HEIGHT="170" BORDER="1" ALIGN "center"></TD></TR>
</tr>
</table>

<?php }
    else 
    { ?>

<table rules="none">
<tr>
    <TD>[img]"/kpz/img/fotos/1.jpg"[/img]</TD></TR>
</tr>
</table>

<?php } ?>


De filenames van de fotos zijn gelijk aan de studentnummers alleen met .jpg erachter, vandaar die variabele foto. Niet iedere leerling heeft een foto, dus ik het een if statementje gebouwd waardoor hij controlleerd of de foto er is. Als hij er niet is moet "1.jpg" worden getoont, welke een afbeelding is waarop staat dat er geen foto beschikbaar is.

Probleem hierbij is als volgt. Er wordt gewoon altijd "1.jpg" weer gegeven. Ook al bestaat de foto wel. Misschien heb ik iets verkeerd zitten in dit statement, maar naar mijn weten niet. Weet iemand toch de fout?

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Probeer eens jpg in plaats van JPG.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
hetzelfde verhaal. ik had het voordat ik hier poste veranderd in JPG, maar maakt dus geen verschil :(

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

http://nl3.php.net/file_exists
Daar gaat een fysiek pad in, geen virtueel pad

Who is John Galt?


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 19:22
Dit is een fysiek pad...

welke waarde krijgt $photo mee? En bestaat dit wel in de betreffende dir? Want daar gaat het mis... lijkt op simpel debug-werk?

Verwijderd

werkt da nog wel door als ge php-code stopt, als eens geprobeerd " door ' te vervangen in de zwarte tekst en den met echo "zwart tekst " ?>

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 19:22
Jij controleert of file.JPG bestaat, en 'include' dan vervolgens file.jpg... is sowieso niet goed! Raar dat-ie dan toch in de else terechtkomt, ook al gebruik je wel kleine letters (zoals je al aangeeft), maar dat terzijde...

  • Rickbv
  • Registratie: September 2000
  • Laatst online: 21-08 14:00
$foto1 is bij jou $_GET['studentnr'], maar je gebruikt $studentnr om de foto aan te roepen. Klopt dat wel?

[edit]
Dat is alvast het probleem dat je tegenkomt als je huidige probleem gefixed is ;)

[ Voor 55% gewijzigd door Rickbv op 24-09-2003 20:31 ]


  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
sjroorda schreef op 24 september 2003 @ 20:18:
Dit is een fysiek pad...

welke waarde krijgt $photo mee? En bestaat dit wel in de betreffende dir? Want daar gaat het mis... lijkt op simpel debug-werk?
Hmm, de php file staat in <apache dir>/kpz/. Ik roep hem hier dus ook aan. Binnen de kpz dir staat de img dir, en daar staat foto weer in. Volgens mij kan ik dit niet anders neerzetten.

$photo krijgt de waarde <studentnr>.jpg mee. Elke foto heeft ook de naam <studentnr>.jpg.

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 19:22
Vergeet m'n vorige reply hierop; je hebt wel gelijk.

TS gebruikt in <IMG> en in PHP hetzelfde pad. Een van deze twee is dus niet goed. bijv. het serverpad kan zijn /var/www/html/plaatje.gif, en het 'HTML'-pad 'plaatje.gif'.

Als je wilt weten in welk pad je nu zit, moet je gewoon bewust een fout maken in je PHP-code; dan zie je in de foutmelding hoe je file heet, en dus ook wat je in de file_exisits moet invullen.

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 19:22
ThAcRoW schreef op 24 september 2003 @ 20:30:
Hmm, de php file staat in <apache dir>/kpz/. Ik roep hem hier dus ook aan. Binnen de kpz dir staat de img dir, en daar staat foto weer in. Volgens mij kan ik dit niet anders neerzetten.

$photo krijgt de waarde <studentnr>.jpg mee. Elke foto heeft ook de naam <studentnr>.jpg.
Zie reply hierboven: je geeft het zelf al aan. Je moet dus je apache-dir OOK meegeven in je file_exists, OF een relatief pad.

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Rickbv schreef op 24 September 2003 @ 20:28:
$foto1 is bij jou $_GET['studentnr'], maar je gebruikt $studentnr om de foto aan te roepen. Klopt dat wel?

[edit]
Dat is alvast het probleem dat je tegenkomt als je huidige probleem gefixed is ;)
Mja, dat is idd niet erg handig gedaan :)

<TD>[img]"/kpz/img/fotos/<?php[/img]ALT="Foto" WIDTH="130" HEIGHT="170" BORDER="1" ALIGN "center"></TD></TR>

Zo heb ik het nu gemaakt, alleen zelfde probleem :(

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
sjroorda schreef op 24 September 2003 @ 20:32:
[...]


Zie reply hierboven: je geeft het zelf al aan. Je moet dus je apache-dir OOK meegeven in je file_exists, OF een relatief pad.
Hmm, dus helemaal c:\program files\apache group\blabla ?

En hoe geef ik dat in een relatief pad op?

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 19:22
Relatief pad:

stel, je pagina staat op c:\program files\apache group\blabla\pagina.php
en je plaatjes op c:\program files\apache group\blabla\images\plaatje.jpg

dan is je relatieve pad 'images/plaatje.jpg', dus zonder eerste slash.

Absoluut pad: inderdaad inclusief C:\pro...

En als je dan toch aan het aanpassen bent, schrijf de code dan wat netter, a.h.v. de tips hierboven... is beetje zootje qua programmeerstijl (nofi uiteraard ;))

[ Voor 24% gewijzigd door sjroorda op 24-09-2003 20:37 ]


  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Jep hehe, ik weet het van die rommel :)

Tis de eerste keer dat ik php doe enzo, dus moet steeds veel aanpassen en dan wordt het vanzelf een zooitje ;)

Maar ik heb alles geprobeerd nu, relatieve paden en absolute paden maar nog steeds hetzelfde effect. Hij blijft "1.jpg" weergeven :(

[edit] Het is btw wel zo dat het ooit gewerkt heeft in een andere test dir. Toen wou ik het overzetten naar de normale directory dus heb ik de paden aangepast. Alleen nu krijg ik het met geen mogelijkheid meer aan de praat.

Absoluut pad: C:\Program Files\Apache Group\Apache\htdocs\kpz\img\fotos

Hoe schrijf ik dat in relatief? img/fotos/ toch?

[ Voor 43% gewijzigd door shorty op 24-09-2003 20:54 ]


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 19:22
Dat pad hierboven schrijf je dus over in je file_exists.
Staat je pagina zelf in de directory C:\Program Files\Apache Group\Apache\htdocs\kpz??? Dan is je relatieve pad [img]"img/fotos/plaatje.jpg"[/img]

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (file_exists("C:\Program Files\Apache Group\Apache\htdocs\kpz\img\fotos\$foto")) { ?>

<table rules="none">
<tr>
    <TD>[img]"/kpz/img/fotos/<?php[/img]ALT="Foto" WIDTH="130" HEIGHT="170" BORDER="1" ALIGN "center"></TD></TR>
</tr>
</table>

<?php }
    else 
    { ?>

<table rules="none">
<tr>
    <TD>[img]"/kpz/img/fotos/1.jpg"[/img]</TD></TR>
</tr>
</table>

<?php } ?>


Ik heb het nu zo, op die manier zoals je zegt bij relatieve paden wil het niet, krijg ik een kruisje. Het werkt nog steeds niet, en de manier van de paden lijkt me ook niet fout, omdat hij wel gewoon een afbeelding weergeeft (zij het de verkeerde).

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 19:22
[img]"/kpz/img/fotos/<?php[/img]ALT="Foto" WIDTH="130" HEIGHT="170" BORDER="1" ALIGN "center">

Hier gaat het fout: je moet natuurlijk wel de quotes afsluiten (hint: ALT is een nieuw attribuut)

[ Voor 85% gewijzigd door sjroorda op 24-09-2003 21:30 ]


  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Hmm idd een foutje. Heb het aangepast (" achter ?>) alleen nog steeds hetzelfde probleem.

  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 21-08 12:15
\\ (escaped backslash) of forward slash gebruiken in je pad.

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
JA! Dat was het! :D

Zo klein foutje heb ik nou de hele middag voor zitten zoeken, heel erg bedankt!

En sjroorda ook tnx voor je hulp :)

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Ik ben begonnen met het opschonen van m'n code door alle html code te echoén. Ik doe dit op de volgende manier:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
    $foto1 = $_GET [ 'studentnr' ];
    $extentie = "jpg";
    $foto = $foto1.".".$extentie;

if (file_exists("../../test/test3/img/fotos/$foto")) { 

echo "<table rules="none">";
echo    "<tr>";
echo        "<TD>[img]"../../test/test3/img/fotos/"echo[/img]</TD></TR>";
echo    "</tr>";
echo "</table>";

else { 

echo "<table rules="none">";
echo "<tr>";
echo    "<TD>[img]"../../test/test3/img/fotos/1.jpg"[/img]</TD></TR>";
echo "</tr>";
echo "</table>";

    } 
?>


Alleen krijg ik hierbij een foutmelding (Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in D:\test_site\test\test3\bovah.php on line 41). Doe ik iets verkeerd?

Edit: Line 41 is in dit geval de eerste echo line (table).

[ Voor 56% gewijzigd door shorty op 25-09-2003 09:36 ]


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 19:22
Ja, je moet quotes escapen... haal die echo's maar weer weg, was eerst netter ;). Zitten trouwens veel meer fouten in...

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Haha, tis dus niet erg dat ik steeds als ik html moet gaan gebruiken de php code afsluit enzo? Krijg je wel heel vaak <?php en ?> daardoor.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

ThAcRoW schreef op 25 september 2003 @ 09:45:
Haha, tis dus niet erg dat ik steeds als ik html moet gaan gebruiken de php code afsluit enzo? Krijg je wel heel vaak <?php en ?> daardoor.
Mjah ik vind het zelf nógal viez staan... en het klopt ook niet, want je hebt bijv. ook 2x echo op 1 regel, je quotes kloppen niet (je kan niet eerst een string openen met " en dan ook nog " erin gaan gebruiken voor je html, dan moet je óf eerst escapen, óf ' gebruiken.

mooier is dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    $foto1 = $_GET [ 'studentnr' ];
    $extentie = "jpg";
    $foto = $foto1.".".$extentie;

if (!file_exists("../../test/test3/img/fotos/".$foto)) // bestaat $foto NIET (! == not)?
 { 
       $foto = '1.jpg'; // $foto bestaat niet, maak er 1.jpg van.
}

echo ('
<table rules="none">
        <tr>
    <TD>[img]"../../test/test3/img/fotos/'.$foto.'"[/img]</TD>
         </tr>
</table>'); // ja, een echo mag over meerdere regels. check volgende keer ook ff je html goed, want er stond een </tr> en daarna weer een <tr> en dan een </table> |:(

[ Voor 14% gewijzigd door SchizoDuckie op 25-09-2003 09:54 ]

Stop uploading passwords to Github!


  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Bedankt!

Ik zit nu ook de rest van me code aan te passen.
PHP:
1
2
3
echo ('
<td><strong><?php printf(mysql_result($result,$teller,"IND_ASPIRANT_STUDENT")); ?> </strong></td></tr>
');


Zit alleen ff ermee om die regel aan te passen. Ik neem aan dat ik de php tags daar moet weghalen, omdat het al in php staat nu via echo. Hoe moet ik die regel dan neerzetten?

[ Voor 13% gewijzigd door shorty op 25-09-2003 10:05 ]


  • CAP-Team
  • Registratie: April 2000
  • Laatst online: 17:01

CAP-Team

XBL: CAPTeam

als je de 'uitgepoepte' HTML-code bekijkt, wat staat er dan?
En je kunt in de logfiles van Apache ook zien wat voor fouten er voorkomen en op welke regel, dat vind ik zelf een makkelijke debug-methode ;)

Microsoft Surface Pro 6 | Samsung Galaxy S21FE | XBOX Series X


  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Hij "poept" gewoon niks uit. Er staat een lege result op het scherm wat komt doordat ie het gedeelte tussen <?php en ?> niet uitvoert. Ik denk dat ik het anders moet neerzetten die regel, weet alleen niet hoe.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

ThAcRoW schreef op 25 September 2003 @ 10:14:
Hij "poept" gewoon niks uit. Er staat een lege result op het scherm wat komt doordat ie het gedeelte tussen <?php en ?> niet uitvoert. Ik denk dat ik het anders moet neerzetten die regel, weet alleen niet hoe.
probeer eerst ff te snappen wat die php tag doet alsjeblieft, want je bent nug ewoon wat aan het rommelen.

de php tag opent de php parser, en die gaat dan z'n werk doen.

Maar als je in een php code nog eens <?php gaat doen gaat ie dus best over z'n nek (geef ik 'm geen ongelijk in :P)

PHP:
1
2
$string = mysql_result($result,$teller,"IND_ASPIRANT_STUDENT"); // eerst netjes je variabelen instellen.
echo ('<tr><td><strong>'.$string.'</strong></td></tr>'); // dan je string echo 'en met de variabele ertussen. (je was ook nog een <tr> vergeten)


Lees anders even wat tut's ofzow :) (over netjes coden enzow)

[ Voor 10% gewijzigd door SchizoDuckie op 25-09-2003 10:22 ]

Stop uploading passwords to Github!


  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Bedankt, ga wat tutorials zoeken :)

Heb nu nog een ander iets, namelijk:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
  $check = "SELECT * FROM bov_ovr WHERE STUDENT_NUMMER = '".$_GET [ 'studentnr' ]."'";
    $result = mysql_query($check) or die(mysql_error());
    echo "result:", $result;
    $num_rows = mysql_num_rows($result);
    $ov_id = mysql_result($result,0,"OV_ID");
    echo "ov id:", $ov_id;
    $check2 = "SELECT * FROM bov_adr WHERE OV_ID OR BEDRIJFS_ID = $ov_id";
    $result2 = mysql_query($check2) or die(mysql_error());
    $num_rows2 = mysql_num_rows($result2);
    echo "result2:", $result2;
    $adres_id = mysql_result($result2,$num_rows2);
    echo "adres id:", $adres_id;
?> 


Warning: mysql_result(): Unable to jump to row 5 on MySQL result index 4 in D:\test_site\test\test3\testje.php on line 18
adres id:

Die foutmelding krijg ik... alles wordt goed weergegeven, behalve $adres_id dus.

[ Voor 21% gewijzigd door shorty op 25-09-2003 13:31 ]


  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 21-08 12:15
Je probeert een niet bestaande rij aan te spreken (zoals er ook al staat).

$num_rows = 5, maar een index begint bij 0, dus array[5] zal niet bestaan.

Wat je precies probeert te doen, is me niet helemaal duidelijk.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

ThAcRoW schreef op 25 September 2003 @ 13:30:
Bedankt, ga wat tutorials zoeken :)
Werd tijd... :P

We zien je graag terug nadat je ze hebt doorgenomen ;)

Zonder grappen, dit is basic-"help mij debuggen"-stuff, en daar is Programming & Webscripting niet voor bedoeld. Je zult echt zelf wat meer kennis op moeten doen dan dat je hier tentoonspreid.

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.