/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
foreach($array as $menu)
Fra : Mickey


Dato : 07-01-02 22:02

Jeg har en menu jeg skal ha hevet ud af en postgresql db.
Dataen ligger i formatet:
Site : overskrift
Menu : komma,separeret,liste,over,menupunkter

Jeg bruger følgende kode for at opbygge menuen:
<?
$menudata = pg_exec($conn, "SELECT * FROM menu");
foreach(pg_fetch_array($menudata,0) as $menu){
echo $menu['site']."\n";
$sub = explode(",",$menu['menu']);
foreach($sub as $submenu){
echo <A
href=\"$PHP_SELF?site=".$menu['site']."&section=$submenu\">$submenu</A>\n";
}
}
?>

I min database har jeg to rows. Resultatet er en menu der ser ud som:

P
P (link til : menu.php?site=P&section=P)
P
P (link til : menu.php?site=P&section=P)
M
M (link til : menu.php?site=M&section=M)
M
M (link til : menu.php?site=M&section=M)

Bogstaverne svarer til det første tegn i den første row i db'en. (P fra det
første felt, M fra den kommaseparerede liste)

Hvad gør jeg galt ?


--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk



 
 
Jonas Koch Bentzen (07-01-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 07-01-02 22:29

Mickey skrev:

> Jeg har en menu jeg skal ha hevet ud af en postgresql db.
> Dataen ligger i formatet:
> Site : overskrift
> Menu : komma,separeret,liste,over,menupunkter

Se, det ville jeg mene er dårlig tabelopbygning. Jeg ville opbygge det
således:

Tabel menuoverskrifter:
id | overskrift

Tabel menupunkter:
id | overskriftid | menupunkt

Og så...:

$query = pg_exec("SELECT id, overskrift FROM menuoverskrifter");
while ($row = pg_fetch_object($query)) {
echo "$row->overskrift<br/>\n";

$query2 = pg_exec("SELECT menupunkt FROM menupunkter WHERE
overskriftid = $row->id");
while ($row2 = pg_fetch_object($query2)) {
echo "$row2->menupunkt<br/>\n";
}
}

> foreach(pg_fetch_array($menudata,0) as $menu){

Ser jeg forkert? Henter du ikke den samme række (række 0) igen og igen?
Andet argument er i øvrigt valgfrit fra og med PHP 4.1.0.

--
Jonas Koch Bentzen

PHP-databaseklasse til PostgreSQL og MySQL:
http://understroem.dk/fasdab/

Mickey (07-01-2002)
Kommentar
Fra : Mickey


Dato : 07-01-02 23:56

"Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> skrev i en meddelelse
news:a1d3vq$opr$1@sunsite.dk...

> Se, det ville jeg mene er dårlig tabelopbygning. Jeg ville opbygge det
> således:

hmm, okay - du har ret (det vidste jeg også godt var bedst, men jeg forsøgte
den anden metode fordi det ikke ville lykkes for mig...)

> while ($row = pg_fetch_object($query)) {

der skal være to paramtre på pg_fetch_object - jeg har lavet om til:
$query = pg_exec("SELECT id, overskrift FROM menuoverskrifter");
$count=0;
while ($row = @pg_fetch_object($query,$count)) {
echo "$row->overskrift<br/>\n";
$subcount=0;
$query2 = pg_exec("SELECT menupunkt FROM menupunkter WHERE
overskriftid = $row->id");
while ($row2 = @pg_fetch_object($query2,$subcount)) {
echo "$row2->menupunkt<br/>\n";
$subcount++;
}
$count++;
}


Der er dog stadig et problem...

Warning: PostgreSQL query failed: ERROR: Unable to identify an operator '='
for types 'text' and 'int4' You will have to retype this query using an
explicit cast in menu.php on line 11

Linie 11 er denne:
$query2 = pg_exec("SELECT menupunkt FROM menupunkter WHERE overskriftid =
$row->id");

Jeg kan ikke helt grejle denne fejl...

--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk


Jonas Koch Bentzen (08-01-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 08-01-02 00:29

Mickey skrev:
>
> der skal være to paramtre på pg_fetch_object

Det kommer an på hvilken PHP-version, du bruger. Fra PHP 4.1.0 er det
ikke nødvendigt.

> Der er dog stadig et problem...
>
> Warning: PostgreSQL query failed: ERROR: Unable to identify an
> operator '=' for types 'text' and 'int4'

Hvordan har du opbygget tabellen?

--
Jonas Koch Bentzen

http://understroem.dk/

Mickey (08-01-2002)
Kommentar
Fra : Mickey


Dato : 08-01-02 13:24

"Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> skrev i en meddelelse
news:a1dav5$jj9$1@sunsite.dk...

> > der skal være to paramtre på pg_fetch_object
>
> Det kommer an på hvilken PHP-version, du bruger. Fra PHP 4.1.0 er det
> ikke nødvendigt.

bruger 4.0.6

> > Der er dog stadig et problem...
> >
> > Warning: PostgreSQL query failed: ERROR: Unable to identify an
> > operator '=' for types 'text' and 'int4'
>
> Hvordan har du opbygget tabellen?

præcis som du foreslog - tre gange text felter


--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk


Mads Lie Jensen (08-01-2002)
Kommentar
Fra : Mads Lie Jensen


Dato : 08-01-02 13:53

On Tue, 8 Jan 2002 13:23:55 +0100, "Mickey" <003@susie.dk> wrote:

>> > Der er dog stadig et problem...
>> >
>> > Warning: PostgreSQL query failed: ERROR: Unable to identify an
>> > operator '=' for types 'text' and 'int4'
>>
>> Hvordan har du opbygget tabellen?
>
>præcis som du foreslog - tre gange text felter

Dvs id-feltet er også text?
Hvis ja, så smid pinger udenom din id-værdi ala:
$query2 = pg_exec("SELECT menupunkt FROM menupunkter WHERE
overskriftid = '$row->id'");

PostgreSQL siger jo netop at den ikke bryder sig om at sammenligne et
tekst-felt med en int.

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk

Directory Opus - nu også til windows - http://www.gpsoft.com.au

Mickey (08-01-2002)
Kommentar
Fra : Mickey


Dato : 08-01-02 14:03

"Mads Lie Jensen" <mads@gartneriet.dk> skrev i en meddelelse

> Hvis ja, så smid pinger udenom din id-værdi ala:
> $query2 = pg_exec("SELECT menupunkt FROM menupunkter WHERE
> overskriftid = '$row->id'");

tak, det virker nu ;)

> PostgreSQL siger jo netop at den ikke bryder sig om at sammenligne et
> tekst-felt med en int.

okay, det var så det jeg ikke forstod...

--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk


Jonas Koch Bentzen (08-01-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 08-01-02 15:48

Mickey skrev:
>
>> Hvordan har du opbygget tabellen?
>
> præcis som du foreslog - tre gange text felter

Jeg skrev nu intet om datatypen...

--
Jonas Koch Bentzen

http://understroem.dk/

Mickey (08-01-2002)
Kommentar
Fra : Mickey


Dato : 08-01-02 15:58

"Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> skrev i en meddelelse
news:a1f0qe$smg$1@sunsite.dk...

> >> Hvordan har du opbygget tabellen?
> >
> > præcis som du foreslog - tre gange text felter
>
> Jeg skrev nu intet om datatypen...

nope, mente også med hensyn til feltnavne og osv. ;)
- indrømmet, det var lidt uklart skrevet...


--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk


Jonas Koch Bentzen (09-01-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 09-01-02 13:09

Mickey skrev:

> "Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> skrev i en
> meddelelse news:a1dav5$jj9$1@sunsite.dk...
>
>> > der skal være to paramtre på pg_fetch_object
>>
>> Det kommer an på hvilken PHP-version, du bruger. Fra PHP 4.1.0 er det
>> ikke nødvendigt.
>
> bruger 4.0.6

Fra http://dk.php.net/manual/en/ref.pgsql.php :

"Warning: Use of PostgreSQL module with PHP 4.0.6 is not recommended
due to a bug in notice message handling."

--
Jonas Koch Bentzen

PHP-databaseklasse til PostgreSQL og MySQL:
http://understroem.dk/fasdab/

Mickey (09-01-2002)
Kommentar
Fra : Mickey


Dato : 09-01-02 15:30


> "Warning: Use of PostgreSQL module with PHP 4.0.6 is not recommended
> due to a bug in notice message handling."

hmmm....
- så skulle jeg måske alligevel opgradere ?

Nu jeg så er igang, kan jeg uden videre opgradere PHP modulet til apache ?
(det kører som DSO, indsat med apxs)

FUT : dk.edb.system.unix


--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk


Jonas Koch Bentzen (09-01-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 09-01-02 16:35

Mickey skrev:
>
> Nu jeg så er igang, kan jeg uden videre opgradere PHP modulet til
> apache ? (det kører som DSO, indsat med apxs)

Ja.

--
Jonas Koch Bentzen

http://understroem.dk/

Mickey (09-01-2002)
Kommentar
Fra : Mickey


Dato : 09-01-02 16:48

> > Nu jeg så er igang, kan jeg uden videre opgradere PHP modulet til
> > apache ? (det kører som DSO, indsat med apxs)
>
> Ja.

dvs, jeg skal bare udskifte .so filen ? (via apxs?)


--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk


Jacob Bunk Nielsen (09-01-2002)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 09-01-02 17:53

"Mickey" <003@susie.dk> writes:

>> > Nu jeg så er igang, kan jeg uden videre opgradere PHP modulet til
>> > apache ? (det kører som DSO, indsat med apxs)
>>
>> Ja.
>
> dvs, jeg skal bare udskifte .so filen ? (via apxs?)

Jeg plejer at gøre noget i retning af:

cd /usr/src
wget http://dk.php.net/do_download.php?download_file=php-4.1.1.tar.gz
tar -zxf php-4.1.1.tar.gz
cd php-4.1.1
../configure --with-apxs=/usr/local/apache/bin/apxs --blah-blah
make
/usr/local/apache/bin/apachectl stop
make install
/usr/local/apache/bin/apachectl start

.... og så kører det

--
Jacob - www.bunk.cc
If rabbits' feet are so lucky, what happened to the rabbit?

Mickey (09-01-2002)
Kommentar
Fra : Mickey


Dato : 09-01-02 19:35

> /usr/local/apache/bin/apachectl stop
> make install
> /usr/local/apache/bin/apachectl start

det er da ikke nødvendigt at stoppe den først er det ? - jeg har da bare
lavet en :
apachectl configtest
apachectl graceful
- og så har det virket ;)

Anyway, jeg tror godt jeg tør gå igang nu ;)


--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk


Jonas Koch Bentzen (09-01-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 09-01-02 20:07

Mickey skrev:

>> /usr/local/apache/bin/apachectl stop
>> make install
>> /usr/local/apache/bin/apachectl start
>
> det er da ikke nødvendigt at stoppe den først er det ? - jeg har da
> bare lavet en :
> apachectl configtest
> apachectl graceful
> - og så har det virket ;)

Lige netop når man geninstallerer PHP har jeg flere gange oplevet, at
netop en "graceful" eller en "restart" ikke virker.

--
Jonas Koch Bentzen

http://understroem.dk/

Mickey (09-01-2002)
Kommentar
Fra : Mickey


Dato : 09-01-02 23:21

> Lige netop når man geninstallerer PHP har jeg flere gange oplevet, at
> netop en "graceful" eller en "restart" ikke virker.

okay - så må jeg nok bare dræbe den ;)


--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk


Jacob Bunk Nielsen (10-01-2002)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 10-01-02 00:42

"Mickey" <003@susie.dk> writes:

> det er da ikke nødvendigt at stoppe den først er det ? - jeg har da bare
> lavet en :
> apachectl configtest
> apachectl graceful
> - og så har det virket ;)

Det har jeg også prøvet, og jeg har også crashed Apache på det et par
gange, hvor den den ene gang blev lidt mystisk bagefter, så jeg plejer
lige at stoppe den mens jeg laver 'make install'.

> Anyway, jeg tror godt jeg tør gå igang nu ;)

Jamen, så held og lykke

--
Jacob - www.bunk.cc
A day without sunshine is like night.

Mickey (10-01-2002)
Kommentar
Fra : Mickey


Dato : 10-01-02 21:16

> > Anyway, jeg tror godt jeg tør gå igang nu ;)
>
> Jamen, så held og lykke

whiii - det virkede, har fået opgraderet min PHP, så skal jeg bare ha
opgraderet min "standalone" php ;)


--
|-|$235-|)k - Mickey - Eko sum lapis

<theo-> ADSL.....is that some sort of learning difficulty?
Problemer med forbindelsen ? - lav en traceroute på http://trace.susie.dk


Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste