Toon posts:

[php] positie in array aangeven

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

Verwijderd

Topicstarter
Heey,

Ik ben een portfolio aan het maken.

Ik heb portfolio.php daar worden 2 random projecten uit de db gehaald, als deze meer dan 180 tekens lang is verschijnt de tekst...meer. Als je hier op klikt is het natuurlijk de bedoeling dat je dit project helemaal te zien krijgt. hij linkt dan naar showportfolio.php. Alleen werkt showportfolio met een array en zou ik dus de $pos in portfolio.php moeten doorgeven. Alleen heb ik geen idee hoe ik dit het beste kan doen.

dit heb ik in portfolio.php staan

<?php
$portfolio_SQL = mysql_query("SELECT * FROM portfolio ORDER BY RAND() LIMIT 2");

while ($portfolio=mysql_fetch_array($portfolio
_SQL)) {

if(strlen($portfolio['tekst']) > 220) {
$portfolio['tekst'] = substr($portfolio['tekst'], 0, 180) . "...
<a href=\"showportfolio.php?cat_id=" . $portfolio['cat_id'] . "&pos=\">meer</a>";
}
echo $portfolio['naam'] . "<br />";
echo $portfolio['tekst'] . "<br /><br />";
}
?>

Dit staat in showportfolio.php

<?php
$pos=$_GET['pos'];
$cat_id=$_GET['cat_id'];

if(!$pos) $pos = 0;
$count = 1;

$portfolio_SQL = mysql_query("SELECT * FROM portfolio WHERE cat_id='$cat_id'");
//$no_data = mysql_num_rows(mysql_query("SELECT * FROM portfolio WHERE cat_id='$cat_id'"));

$catarray = array();
$i=0;
while($portfolio = mysql_fetch_assoc($portfolio_SQL) ) {
$catarray[$i] = array(); //van elk element een apparte array maken
$catkeys = array();
$catkeys = array_keys($portfolio);
for($j=0; $j<count($portfolio); $j++) {
$catarray[$i][$catkeys[$j]] = $portfolio[$catkeys[$j]];
}
$i++;
}

$no_data = count($catarray);

$new_pos_next = $pos + $count;

//$portfolio = mysql_fetch_assoc($portfolio_SQL);
$new_pos_next = $pos + $count;

if($new_pos_next == $no_data) {
$new_pos_next = 0;
}

$plaatje_SQL = mysql_query("SELECT plaatje, id FROM portfolio WHERE cat_id='$cat_id'");
$i=0;
while($i < $no_data) {
echo "<a href=\"showportfolio.php?pos=".$i."&cat_id=".$cat_id."\">[img]\"images/portfoliothumb_gray/"[/img]</a>";
$i++;
}
echo $catarray[$pos]['naam']."<br><br>";
echo $catarray[$pos]['tekst']."<br>";
?>
<a href="showportfolio.php?pos=<?php echo $new_pos_next ?>&cat_id=<?php echo $cat_id ?>">volgende</a>

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Je zou iig even je code in [code] blokken kunnen zetten :) . Leest wat prettiger.

DM!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Waar heb je het over? Je hebt over over het doorgeven van een aantal dingen van pagina naar pagina, zegt dat het niet lukt en post een lap code. Kun je iets duidelijker zijn in wat je probeert te doen, wat hetgeen dat je nu hebt doet, en dan selectief een stuk code plaatsen waar je denkt dat je probleem zit? Hier kan niemand chocola van maken. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Hey Wouss, welkom in /14. Het zou fijn zijn denk ik voor anderen als je je topic titel voorziet van een [PHP] prefix, zodat men meteen weet waar het over gaat (immers is een array niet alleen voor php weggelegd (alhoewel de implementatie ervan wel heel erg afwijkt t.o.v. 'de rest', maar dat terzijde ;))
Ook fijn zou 't zijn als je je code tussen zogenaamde [code][ /code] tags zou willen plaatsen, leest wat makkelijker kleuriger:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 <?php
$portfolio_SQL = mysql_query("SELECT * FROM portfolio ORDER BY RAND() LIMIT 2");

while ($portfolio=mysql_fetch_array($portfolio
_SQL)) {

if(strlen($portfolio['tekst']) > 220) {
$portfolio['tekst'] = substr($portfolio['tekst'], 0, 180) . "...
<a href=\"showportfolio.php?cat_id=" . $portfolio['cat_id'] . "&pos=\">meer</a>";
}
echo $portfolio['naam'] . "<br />";
echo $portfolio['tekst'] . "<br /><br />";
}
?>

Dit staat in showportfolio.php
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
$pos=$_GET['pos'];
$cat_id=$_GET['cat_id'];

if(!$pos) $pos = 0;
$count = 1;

$portfolio_SQL = mysql_query("SELECT * FROM portfolio WHERE cat_id='$cat_id'");
//$no_data = mysql_num_rows(mysql_query("SELECT * FROM portfolio WHERE cat_id='$cat_id'"));

$catarray = array();
$i=0;
while($portfolio = mysql_fetch_assoc($portfolio_SQL) ) {
$catarray[$i] = array(); //van elk element een apparte array maken
$catkeys = array();
$catkeys = array_keys($portfolio);
for($j=0; $j<count($portfolio); $j++) {
$catarray[$i][$catkeys[$j]] = $portfolio[$catkeys[$j]];
}
$i++;
}

$no_data = count($catarray);

$new_pos_next = $pos + $count;

//$portfolio = mysql_fetch_assoc($portfolio_SQL);
$new_pos_next = $pos + $count;

if($new_pos_next == $no_data) {
$new_pos_next = 0;
}

$plaatje_SQL = mysql_query("SELECT plaatje, id FROM portfolio WHERE cat_id='$cat_id'");
$i=0;
while($i < $no_data) {
echo "<a href=\"showportfolio.php?pos=".$i."&cat_id=".$cat_id."\">[img]\"images/portfoliothumb_gray/"[/img]</a>";
$i++;
}
echo $catarray[$pos]['naam']."<br><br>";
echo $catarray[$pos]['tekst']."<br>";
?>
<a href="showportfolio.php?pos=<?php echo $new_pos_next ?>&cat_id=<?php echo $cat_id ?>">volgende</a>

[ Voor 30% gewijzigd door prototype op 19-01-2005 19:47 ]


  • SiliconError
  • Registratie: Januari 2000
  • Laatst online: 29-10-2025

SiliconError

:(){ :|:& };:

Ik zit er nu al meer dan 5 minuten naar te kijken, en ik begrijp nog steeds niet precies wat je nou wilt?!

Je hebt een lijst met projecten (je portfolio). Die laat je onder elkaar zien.
Als de tekst van een bepaald project groter is dan 180 wil je doorlinken naar een detailscherm.

En dan?!:

Je stuurt cat_id (categorie_id?) mee, maar daarmee heb je het aangeklikte project nog niet geidentificeerd, dus wil je nog iets meesturen. Heb je geen project_id? Lijkt me voldoende om het hele probleem op te lossen (voor zover ik het begrijp).

Probeer als je het probleem zelf begrijpt trouwens je code eens helemaal opnieuw te schrijven, meestal kom je dan tot een veel betere oplossing.
Ik zie bijvoorbeeld
code:
1
2
3
4
$no_data = count($catarray);
...
$i=0; 
while($i < $no_data) {

Probeer eens een for, scheelt weer een paar regels ofzo ;)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:22

Creepy

Tactical Espionage Splatterer

Ik heb je topic titel aangepast. Verder snap ik totaal niet wat je wilt. Je wilt een variabele doorgeven die je niet hebt?

Leg het nog eens kort uit, en post alleen de relevante code i.p.v. deze redelijk lap aub :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
SiliconError schreef op donderdag 20 januari 2005 @ 00:04:
Probeer eens een for, scheelt weer een paar regels ofzo ;)
Of foreach. ;)

of een while, i.c.m. list en each.

[ Voor 8% gewijzigd door Grijze Vos op 20-01-2005 09:58 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Verwijderd

Topicstarter
k zal het nog is proberen te omschrijven

al mijn projecten die ik heb gemaakt zijn onderverdeeld in categorien. In portfolio.php kan je kiezen welke categorie je wilt bekijken ook worden er 2 random projecten voor een deel weergegeven.
Nou wil ik dat als je op een van die 2 random projecten drukt dat hij helemaal word weergegeven. Het weergeven van een project gebeurd in showportfolio.php. De projecten in showportfolio staan in een array waar ook door heen gebladerd kan worden.

Als ik dus een van die random projecten wil weergeven moet ik zeggen in welke categorie die staat ($cat_id) en waar die in de array staat ($pos). Dat cat_id meegeven lukt wel. alleen weet ik dus niet hoe ik die $pos juist kan meegeven, want die array staat in showportfolio.php.

hopelijk is dit wat duidelijker...

Verwijderd

kun je dan niet gewoon het betreffende id nummer meegeven naar showportfolio.php en vervolgens aan de hand van het id nummer je project uit je DB halen?

Guus

[ Voor 4% gewijzigd door Verwijderd op 20-01-2005 12:19 ]


Verwijderd

Topicstarter
nee want dan kan je er niet meer door heen bladeren...

  • UltimateB
  • Registratie: April 2003
  • Niet online

UltimateB

Pomdiedom

Dan zou je de knop voor bladeren de huidige id+1 kunnen meegeven en zo door de verschillende projecten bladeren?

"True skill is when luck becomes a habit"
SWIS


Verwijderd

Topicstarter
Nee want de volgende id hoeft niet perce id+1 te zijn

  • Ebayzo
  • Registratie: Juli 2001
  • Laatst online: 17-10-2022

Ebayzo

hij/hem

Verwijderd schreef op donderdag 20 januari 2005 @ 13:10:
Nee want de volgende id hoeft niet perce id+1 te zijn
Hoe zit je database dan in elkaar :/

Default blanke hetero


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:22

Creepy

Tactical Espionage Splatterer

Ik snap nog steeds weinig van je verhaal.
Maar het lijkt me dat als je de juiste info meegeeft (id en nummer in de array), dat je in showportfolio.php kan bepalen wat de volgende moet zijn, zelfs met het id kan je dat al bepalen want je kan opzoeken op welke plek deze in de array zit. Je commentaar hierop dat je dan niet kan "bladeren" snap ik ook niet. Het lijkt me dat als je het ID weet, je in je code kan checken wat in de database of array het vorige en het volgende ID is zodat je wel kan bladeren.

Daarnaast zie ik je nu een tweetal tips afknallen met een klein zinnetje dat het niet kan zonder dat je nu precies uitlegt waarom jij denkt dat het niet kan.

Ik zet je topic op slot omdat het gewoon een te warrig verhaal wordt.

Mocht je een nieuw topic willen openen:
- Geef kort en bondig aan wat het probleem precies is
- Geef hierbij de relevante code en eventueel de relevante DB structuur
- Gebruik code tags om je code leesbaar te maken
- Bekijk P&W FAQ - De "quickstart" en vul dat wat je hebt aan
- Mocht je aan een antwoord van iemand anders niks hebben geef dan ook precies aan waarom je niks aan het antwoord hebt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.