View Single Post
Old 04-29-2005, 05:42 PM   #15 (permalink)
Silvy
paranoid
 
Silvy's Avatar
 
Location: The Netherlands
Warning, read the entire post, answer the last part first, it'll probably be the most relevant.

Quote:
Originally Posted by arch13
Index.php is the template page. It is what is seen at www.arch13.com . It's the backround, navigation, etc. It's all built with html and css, it's just a php file to allow it to be parsed for the include script that includes the footer copyright and the main window content. It's the frame that displays in other words. You are right that it will do one of the three mentioned based on the url variables and if id=blah is a php or jpg file.
I like that functionality, and it took a while to figure it out with lots of help. The else is just to put something (brewerysplash.jpg) up should they try to request something that does not exist.
Understood. And I agree.

Quote:
Originally Posted by arch13
$id.php is whatever plaintext file I'm displaying in the templates content area. if you go to my front page, where brewerysplash.jpg is, that is the "content area". The point has always been seperating content from display. That way, many different types of content can be placed in that box based on what I want the viewer to see. Conversly, I can change the template, and not have to edit or change any of the included files.
Right. So far we're on the same track. 3 files:
1 content ($id.php)
1 mostly structure (index.php)
1 layout, color etc (css)
Quote:
Originally Posted by arch13
There are areas where we get complicated. In my portfolio for example. Index.php calls p_gallery into the content area using $id, and then p_gallery call's portfolio_gal.php through $id2 to build the thumbnail table. In this case, $id and $id2 have othing to with one another besides doing similar actions (calling in another file via include)
This gets interesting. Do you want p_gallery to call $_REQUEST['id2'] directly? Or do you want index.php to set up a special variable for it?

Quote:
Originally Posted by arch13
The feeling I got was this. Right now index.php has the first $id php script in it's content area box. I need that to always work, regardless of what the included page has in it's coding. $id is how I choose what file to display there. $id2 is what I use when the included page also needs to include something.
I'm assuming you've got some way to generate the correct URL's (with the id2 and stuff).
Quote:
Originally Posted by arch13
I'm not trying to disguise on as the other.
I'm currently calling $_REQUEST['id2'] from the included file I caled using $id if I understand your first list point
Can I use the $id variable from the index page in the included pages php script? That's what I was trying to ask in less well phrased questioning.

So, On to the actual markup of index.php and brewery.php as maybe that will help you understand what I'm asking instead of me babbling
Actually 'disquise' is the wrong word. I meant wether you wanted the value of id2 put into variable $id for the included file.
Actually for that first list point I meant that $_REQUEST['id2'] should not be put into a variable $id if there is no specific reason. Because when you read through your code later, you might mistake $id coming from $_REQUEST['id']. I usually try to name my variables logically to make the code easier to understand.
Ofcourse if a script depends on the existance of $id. And the value for it is located in $_REQUEST['id2'], by all means do that.

On to the next post:
Quote:
Originally Posted by arch13
So here is my index.php:

My class="contentbox" is my content display area. As you see, the php that calls $id is there so that depending on the url, it places the included file called in that box.
Got it. Looks good.
Quote:
Originally Posted by arch13
Now brewery.php:
Say index.php is located in www/
Where is brewery.php located? (and if you had a choice, where do you want it to be after we're done?)
- in www/
- in www/brewery
- in www/imgs/brewery

The reason I'm asking is that it looks like all files are currently in the same directory. (judging by a quick glance through the code).
Then again, you mentioned paths in your URLs before, so this is indeed a problem we need to tackle. Apparently your index.php is in (say) www/
your images are in www/brewery/ (ex. www/brewery/brewery1.jpg)
Since we're hiding the path now, we need to decide where you want the middle-man (brewery.php, which essentially is the second file in the include-chain).

I'd suggest:
index.php does a file_exists('brewery.jpg') (so local to the index.php)
index.php then does a file_exists('brewery/brewery.php') (so in a sub-dir from index.php)
(and then the splash)
brewery.php looks in it's local directory for the images.
brewery.php looks in a subdir for the include
(and then the splash)
etc.
Quote:
Originally Posted by arch13
So here is the goal in a nutshell: Clean up the php coding to be more efficiant, and so that $id2=12345 instead of the name. Your previously suggested, parse failed script is hitting the nail on the head of intent there. Of course, that is only for this include page that I want it to work that way. In the case of www.arch13.com/index.php?id=p_gallery, I still need $id2 to work as it does currently. (when it doesn't, you'll notice that clicking that url defaults to a picture of a boiler on the left instead of a thumbnail table since the url didn't set an $id2)
The solution I'm searching for is something to use on all the building gallery pages. Brewery.php, stockhouse.php, etc.
So the url www.arch13.com/index.php?id=brewery will display the brewery.php file in the content box of the index.
Becuase I still need the code to work in way similar to currently on some pages, while the way we're discussing on others, I thought keeping the $id and $id2 scripts seperate was a good idea. But I know a lot less about clean code than you do.
-blush- thanks.
I think you'll find the above set up of file locations to be a good step towards your goal.


Note, about the code, I wrote the script to replace the code in index.php (hence some confusion there. This was my fault, as I thought it would reference the images directly. )
Given the mix-up, all your comments are correct.
Quote:
Originally Posted by arch13
I want to create a new set of pages, one for each building I document. On these pages, the solution I want is what we are discssuing.
So to comment on your script as suggested:
Right, and I suggest placing the PHP file of each building in a seperate directory with it's images. Cleans it up quite nicely. Plus if you ever (re)move an image set, the PHP file goes with it, all neat.

Quote:
Originally Posted by arch13
Am I loosing you at this point?
I really hope not

Can your suggested script be made to work while leaving the php script in index.php the same and just messing with the php script on the included page, or is this going to take a whole new appraoch?
Actually, you just got me back
With the above set up we can leave most of the files the way they are.
To be absolutely compatible with the current situation (but migrate to the file setup I mentioned earlier) change this in index.php:
Code:
$id = $_REQUEST['id'];
if(file_exists($id.".jpg")) {
echo "<img src='$id.jpg'>";
} elseif(file_exists($id.".php")) {
include($id.".php");
} else {
echo "<img src='Brewerysplash.jpg'>";
}
In to:
Code:
$id = $_REQUEST['id'];
if(file_exists($id.".jpg")) {
echo "<img src='$id.jpg'>";
} elseif( file_exists( $id."/".$id.".php" ) {
include(  $id."/".$id.".php" 
} elseif(file_exists($id.".php")) {
include($id.".php");
} else {
echo "<img src='Brewerysplash.jpg'>";
}
Essentially, I just added elseif( file_exists( $id."/".$id.".php" )
This checks wether a subdirectory exists with a php file.
Now all images are in www/brewery right?
put the brewery.php in there as well.
If the images in www/brewery are called brewery1.jpg and so on change
Code:
$id = $_REQUEST['id2'];
if(file_exists($id.".jpg")) {
echo "<img src='$id.jpg'>";
} elseif(file_exists($id.".php")) {
include($id.".php");
} else {
echo "<img src='brewerysplash.jpg'>";
}
In to:
Code:
$base = 'brewery';   //only for images if they are called brewery1.jpg etc.
$id = $_REQUEST['id2'];
if(file_exists($base.$id.".jpg")) {
echo "<img src='$base.$id.jpg'>";
} elseif(file_exists($id.".php")) {
include($id.".php");
} else {
echo "<img src='brewerysplash.jpg'>";
}
I added a "$base = " statement, and added $base to the 2 image searching and loading lines.
(if the images in www/brewery are called 1.jpg, 2.jpg etc you can leave the code as-is).

It should then work.
(forgetting all those things about coding practices, constants and other stuff, let's get it to work first )
Then we'll clean up the code.

This way, if I'm correct, all should work the same as it is now but for brewery. Brewery can now use shorter URLs
http://www.arch13.com/index.php?id=brewery&id2=1 should load up the page through index.php, which looks for brewery/brewery.php and includes it. Brewery.php then looks for brewery1.jpg, finds it and echo's the corresponding HTML.

Are we getting somewhere?

Btw, if there is a maximum post size on this forum, we should be reaching it pretty soon
__________________
"Do not kill. Do not rape. Do not steal. These are principles which every man of every faith can embrace. "
- Murphy MacManus (Boondock Saints)
Silvy is offline  
 

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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360