FOK!forum / Digital Corner / [PHP&MySQL] Includen en "correct" uitlezen uit de database
poepeneesjedonderdag 10 mei 2007 @ 15:54
Beste mede-fokkers,

Ik heb een aantal problemen met het includen van een PHP-pagina, welke data uit een database haalt.

Deze pagina doet het gewoon op het moment dat ik hem niet include.

Include ik hem wel (zie hier), dan krijg ik de volgende foutmelding:
quote:
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Waarom geeft hij deze en fout en wat kan ik hieraan doen? Google heeft niet de gewenste antwoorden opgeleverd.

Daarnaast nog een probleem. De bedoeling van deze include hierboven is, dat iemand anders dan ik via een pagina op de site nieuwe nieuwsberichten kan toevoegen. Allemaal mooi en fijn en het is mij ook wel gelukt om dit te maken.

Alleen is het probleem nu dat als degene op de pagina waar hij het bericht moet typen, gebruik maak van enters, deze tekst wordt opgeslagen in de database met deze enters. Maar op het moment dat ik deze tekst weer uit de database laat lezen, dan zijn deze enters "verdwenen".

Logisch want er zit geen html-opmaak in de tekst, hoe kan ik ervoor zorgen dat bij het printen wel automatisch <p></p> en <br /> enzo meegeeft (net zoals in het bericht van van Fok!)?

Structuur site, voor de includes:
index.php (dit is "de" lay-out van de site en waar alles wordt geïncluded)
-map: database -> databaseconnectie.php
-map: php -> alle includes
-map: secure -> pagina's die nodig zijn om de pagina met nieuws aan te passen

Indien er behoefte is aan meer informatie laat het mij dan weten, ik hoop dat jullie mij wat kunnen helpen.

Liefs, Poepeneesje .
Pilesdonderdag 10 mei 2007 @ 16:00
quote:
Op donderdag 10 mei 2007 15:54 schreef poepeneesje het volgende:
Beste mede-fokkers,
Deze pagina doet het gewoon op het moment dat ik hem niet include.
Echt niet
Ik denk dat je je host verkeerd hebt ingevuld in mysql_connect()
Metseldonderdag 10 mei 2007 @ 16:06
Om je enters terug te krijgen zul je nl2br() om de string heen moeten zetten. Deze functie zorgt ervoor dat de enters in mysql worden omgezet naar <br> in HTML.

Op [url=http://www.php.net ]http://nl2.php.net/nl2br[/url]kun je de uitleg precies vinden.

En je hebt inderdaad waarschijnlijk de verkeerde host te pakken. Wellicht ondersteunt je host geen verbindingen van buitenaf.

SucceS!
poepeneesjedonderdag 10 mei 2007 @ 16:37
@ Piles en Metsel, jullie hadden inderdaad gelijk, toen ik na jullie post keek toen gaf hij die fout ook bij de niet geïnclude pagina, nu doet de niet geïnclude pagina het weer wel (hoe het komt weet ik niet, niets aan veranderd, wellicht de server zelf). Dus het probleem is er nog steeds.

ik heb ook nog even de connect include in dezelfde map gezet als de nieuws include, maar het mocht niet baten.

Zouden jullie even naar mijn PHP-code willen kijken dan?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    $mysqlserver 
"SERVERNAAM"
    
$user "USERNAAM"
    
$password "PASSWORD"
    
$database "DATABASENAAM";

    
$connection mysql_connect("$mysqlserver","$user","$password"
    or die (
mysql_error ());
    echo 
"Er is een connectie opgezet met de MySQL-server: <strong>" $mysqlserver "</strong>. ";

    
mysql_select_db("$database")
    or die (
mysql_error ()); 
    echo 
"Van deze MySQL-server is de database <strong>" $database "</strong> geselecteerd.";
?>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
    
include "../database/mysqldatabaseconnection.php";

    
$sql "SELECT title, author, text, DATE_FORMAT(DATE, '%e/%m/%Y') AS date, TIME_FORMAT(TIME, '%H:%i') AS time, id FROM news ORDER BY id DESC LIMIT 10";
    
$query mysql_query($sql) or die (mysql_error ());
    
    while(
$request mysql_fetch_array($query))
    {   
        
$title $request["title"];
        
$author $request["author"];
        
$text $request["text"];
        
$date $request["date"];
        
$time $request["time"];
        
$id $request["id"];
        
        echo 
"<p>$title - $author - $text - $date - $time - <a href='index.php?id=$id'>bewerk het bericht</a></p>";
    }
?>


De nieuws include is trouwens een pagina die geïnclude wordt op een al geïnclude pagina, wellicht dat dit het is?

@ Metsel, bedankt voor de tip ik ga straks even kijken als ik het andere probleem heb opgelost.
Pilesdonderdag 10 mei 2007 @ 16:39
Wat vul je in bij $mysqlserver ?
Die is onjuist waarschijnlijk
poepeneesjedonderdag 10 mei 2007 @ 16:40
quote:
Op donderdag 10 mei 2007 16:39 schreef Piles het volgende:
Wat vul je in bij $mysqlserver ?
Die is onjuist waarschijnlijk
sql2.pcextreme.nl
Pilesdonderdag 10 mei 2007 @ 16:42
Nu doet ie het wel (die ene)
Waarschijnlijk was de server even onbereikbaar

Raar dat het includen niet werkt
poepeneesjedonderdag 10 mei 2007 @ 16:56
quote:
Op donderdag 10 mei 2007 16:42 schreef Piles het volgende:
Nu doet ie het wel (die ene)
Waarschijnlijk was de server even onbereikbaar

Raar dat het includen niet werkt
Het heeft hoogswaarschijnlijk met de include in de include te maken... Zie hier, hier include in hem namelijk direct in de index.
poepeneesjedonderdag 10 mei 2007 @ 17:02
Geprobeerd: Een van de twee includes te vervangen voor require, maar ook dit werkt niet. Niemand nog een oplossing?
Tuvai.netdonderdag 10 mei 2007 @ 19:01
Zoals in in het PHP topic al zei, vermoed ik dat je ergens twee dezelfde variabelen gebruikt. Het is in ieder geval iets met je mysql_connect() regel, of de gegevens die je daar invoer. Maar effe offtopic: PCExtreme:

Verschrikkelijke kuthost waar ik erg veel slechte en vooral vreemde ervaringen mee heb, waar je de ene keer wél en de andere keer géén (correcte) foutmeldingen krijgt en die d'r vaak uit ligt.
poepeneesjedonderdag 10 mei 2007 @ 19:22
quote:
Op donderdag 10 mei 2007 19:01 schreef Tuvai.net het volgende:
Zoals in in het PHP topic al zei, vermoed ik dat je ergens twee dezelfde variabelen gebruikt. Het is in ieder geval iets met je mysql_connect() regel, of de gegevens die je daar invoer. Maar effe offtopic: PCExtreme:

Verschrikkelijke kuthost waar ik erg veel slechte en vooral vreemde ervaringen mee heb, waar je de ene keer wél en de andere keer géén (correcte) foutmeldingen krijgt en die d'r vaak uit ligt.
Mhmm, ik heb even de variabelen die hetzelfde waren in de twee includes veranderd, zodat één van de twee een andere naam kreeg. Maar ook nu werkt het niet. Zou je misschien in bovenstaande PHP-code willen kijken voor mij? Want wanneer ik het bestand niet include, doet hij gewoon wat hij doen moet...

Btw met PCextreme heb ik nog nooit ergens last van gehad... Ik ben er juist heel positief over. Wat is volgens jou dan een goede host?
Tuvai.netdonderdag 10 mei 2007 @ 19:28
quote:
Op donderdag 10 mei 2007 19:22 schreef poepeneesje het volgende:

[..]

Mhmm, ik heb even de variabelen die hetzelfde waren in de twee includes veranderd, zodat één van de twee een andere naam kreeg. Maar ook nu werkt het niet.
Dan ligt het toch echt aan je mysql_connect() (of de gegevens die je daar in voert). Zoals je foutmelding al zegt kan het script niet (aan de hand van jouw gegevens) verbinding maken.
quote:
Op donderdag 10 mei 2007 19:22 schreef poepeneesje het volgende:
Btw met PCextreme heb ik nog nooit ergens last van gehad... Ik ben er juist heel positief over. Wat is volgens jou dan een goede host?
Een paar van mijn clienten staan op pcextreme gehost (wat ik niet voor ze uitgezocht heb overigens). Ik heb vrij regelmatig dat er 'ineens' bestanden worden overschreven door dezelfde, maar oudere bestanden (alsof je een ouwe backup terugzet of zo). Je moet een hoop meuk toevoegen aan je scripts om het correct weergeven van PHP foutmeldingen aan te zetten wat tegenwoordig vrijwel overal standaard ingesteld is. Om over de vele downtime maar te zwijgen.

Ik gebruik zelf altijd http://www.mijndomein.nl . Fair user policy en een domein+ hosting inclusief PHP en een database voor ¤29 per jaar. Vaak hebben ze acties waardoor je nog goedkoper uit bent.

[ Bericht 0% gewijzigd door Tuvai.net op 10-05-2007 19:39:01 ]
poepeneesjedonderdag 10 mei 2007 @ 19:34
@ Tuvai.net bedankt voor je hulp en de informatie.
Metseldonderdag 10 mei 2007 @ 23:08
Uhm

Je variabelen in de databaseconnection.php staan sowieso tussen quotes. Dat gaat al niet werken..

$connection = mysql_connect("$mysqlserver","$user","$password")
or die (mysql_error ());

moet zijn:

$connection = mysql_connect($mysqlserver,$user,$password)
or die (mysql_error ());
poepeneesjedonderdag 10 mei 2007 @ 23:27
Bedankt, ik zal de fouten verbeteren. Maar hij doet het wel, alleen tijdens het includen in een geïnclude pagina, geeft hij deze fout melding.
cyberstalkerdonderdag 10 mei 2007 @ 23:32
quote:
Op donderdag 10 mei 2007 23:08 schreef Metsel het volgende:
Uhm

Je variabelen in de databaseconnection.php staan sowieso tussen quotes. Dat gaat al niet werken..

$connection = mysql_connect("$mysqlserver","$user","$password")
or die (mysql_error ());

moet zijn:

$connection = mysql_connect($mysqlserver,$user,$password)
or die (mysql_error ());
Dat kan geen kwaad. Daar zit het probleem niet. Dat zou alleen gebeuren bij enkele quotes.
CraZaayvrijdag 11 mei 2007 @ 00:06
Dat werkt prima inderdaad binnen dubbele quotes, los van het feit dat het totaal nutteloos is
poepeneesjevrijdag 11 mei 2007 @ 11:57
Probleem gevonden!

1
2
3
<?php
include "../database/mysqldatabaseconnection.php";
?>


Het moet zijn:

1
2
3
<?php
include "./database/mysqldatabaseconnection.php";
?>


Blijkbaar ga je met ./ in PHP naar de root, wat in xHTML met ../ moet. En een map terug in PHP gebeurd met / en in xHTML ./.

Iedereen bedankt voor zijn of haar hulp !
slakkievrijdag 11 mei 2007 @ 12:07
quote:
Op vrijdag 11 mei 2007 11:57 schreef poepeneesje het volgende:
Probleem gevonden!
[ code verwijderd ]

Het moet zijn:
[ code verwijderd ]

Blijkbaar ga je met ./ in PHP naar de root, wat in xHTML met ../ moet. En een map terug in PHP gebeurd met / en in xHTML ./.

Iedereen bedankt voor zijn of haar hulp !
Mmm, ./ is huidige dir ../ is 1 dir up

Dus als je in dir /var/www/php zit en je doet include ./file.php staat file.php in /var/www/php als je include ../file.php staat de file in /var/www/.

Als je include /file.php doet betekend het dat file.php in de root directory staat.
poepeneesjevrijdag 11 mei 2007 @ 12:57
quote:
Op vrijdag 11 mei 2007 12:07 schreef slakkie het volgende:

[..]

Mmm, ./ is huidige dir ../ is 1 dir up

Dus als je in dir /var/www/php zit en je doet include ./file.php staat file.php in /var/www/php als je include ../file.php staat de file in /var/www/.

Als je include /file.php doet betekend het dat file.php in de root directory staat.
Ja dat dacht is dus ook, dat is met xHTML wel zo, maar toen ik het toepast in de PHP-code kreeg ik dus fouten met include van de databaseconnectie, het kan natuurlijk ook mijn code liggen, maar hij doet het nu in ieder geval.

Heb/ken jij misschien een tutorial waar het voor PHP staat beschreven?

De foutmelding wordt trouwens nu wel weergeven bij de niet geïnclude pagina, blijkbaar ga ik dus toch niet met ./ terug naar de root...
CraZaayvrijdag 11 mei 2007 @ 15:17
Paden in PHP en HTML zijn hetzelfde. '/' is de root, '../' een niveau omhoog (en '../../../' bijv. 3 niveau's omhoog) en './' het huidige niveau.
slakkievrijdag 11 mei 2007 @ 15:56
quote:
Op vrijdag 11 mei 2007 12:57 schreef poepeneesje het volgende:

[..]

Ja dat dacht is dus ook, dat is met xHTML wel zo, maar toen ik het toepast in de PHP-code kreeg ik dus fouten met include van de databaseconnectie, het kan natuurlijk ook mijn code liggen, maar hij doet het nu in ieder geval.

Heb/ken jij misschien een tutorial waar het voor PHP staat beschreven?

De foutmelding wordt trouwens nu wel weergeven bij de niet geïnclude pagina, blijkbaar ga ik dus toch niet met ./ terug naar de root...
./ gaat ook niet naar de root. ./ is de huidige directory.

Stel dat je je een index.php in /var/www hebt staan. En je hebt in /var/www ook database.php staan. Dan moet je in index.php een include doen op:

1) /var/www/database.php
of
2) ./database.php

Mocht je database.php in /var/www-data hebben staan:

3) ../www-data/database.php.

Dit geldt voor Unix/Windows/PHP/HTML/etc etc. Dit is geen specifieke HTML/xHTML/PHP eigenschap.
poepeneesjevrijdag 11 mei 2007 @ 23:45
Mijn dank .