PhP gastenboek in Jquery Mobile

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Eelke Scholte

Eelke Scholte

22/06/2012 20:28:54
Quote Anchor link
Ik ben bezig met het maken van een mobiele site in Jquery Mobile en had bedacht om er een gastenboek aan toe te voegen.
Nu heb ik helemaal geen ervaring met PhP en het leek me handig om met een zo simpel mogelijk gastenboek te beginnen.
Maar helaas loop ik zelfs daar al op vast.
Ik heb op internet gezocht naar een simpele opzet voor een script, maar ik kan niet nagaan of dit script wel klopt, aangezien ik de codes nog niet goed ken.
Op dit moment krijg ik een basis-opzet te zien, maar zo gauw ik een bericht wil plaatsen krijg ik de melding "undefined".

Het gastenboek wil ik oproepen via
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php

include 'gastenboek.php';
?>


Vervolgens heb ik twee php-bestanden, te weten:

gastenboek.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?PHP
echo"<a href=schrijf.php>Schrijf in het gastenboek</a><br><br>";
 
$bestand=array_reverse(file("gastenboek.txt"));
 
echo ($bestand) ? "" : "Er zijn nog geen berichten!";
 
foreach($bestand as $i)
{

$i=explode("|",$i);
$naam = $i[0];
$email = $i[1];
$datum = $i[2];
$ip = $i[3];
$bericht = $i[4];
$email = htmlspecialchars($email);
$naam = htmlspecialchars($naam);
$bericht = htmlspecialchars($bericht);
$bericht = str_replace("&lt;br&gt;","<br>",$bericht);
echo"<b>Bericht door <a href='mailto:$email'>$naam</a> @ $datum</b> IP: $ip<br><br>$bericht<br><br>";
}

?>


en schrijf.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$datum
= date("d-m-Y / H:i");
if($naam && $email && $bericht) {
$bestand = fopen("gastenboek.txt", "a");
$bericht = str_replace("\n","<br>",$bericht);
$bericht = str_replace("|","",$bericht);
$naam = str_replace("|","",$naam);
$email = str_replace("|","",$email);
fwrite($bestand, "$naam|$email|$datum|$REMOTE_ADDR|$bericht\n") ;
fclose($bestand);
echo"Bedankt!<br><br><a href=gastenboek.php>Gastenboek</a>";
}
else {
echo"<form method=post action=$PHP_SELF>";
echo"Naam:<br><input type=text name=naam><br>";
echo"Email:<br><input type=text name=email><br>";
echo"Bericht:<br><textarea cols=30 rows=10 name=bericht></textarea><br>";
echo"<input type=submit value='Verstuur'>";
echo"</form>";
}

?>


Kan iemand me vertellen of deze code enigszins correct is en wat ik fout aan het doen ben?
 
PHP hulp

PHP hulp

26/12/2024 07:24:32
 
B Polak

B Polak

22/06/2012 21:03:26
Quote Anchor link
Als ik heel eerlijk mag zijn vind ik zo'n fwrite en get_content systeem nou niet echt een 'makkelijk' gastenboek systeem. Gastenboek krijgt met zo'n systeem behoorlijke beperkingen.

Ik raad aan om kort te spieken hoe MySQL werkt.

connectie maken met MySQL voor beginners:
http://www.tizag.com/mysqlTutorial/mysqlconnection.php

tables aanmaken om data op te slaan:
http://www.tizag.com/mysqlTutorial/mysqltables.php

data invoegen
http://www.tizag.com/mysqlTutorial/mysqlinsert.php

etc. etc.

Zo kun je updaten, berichten uit gastenboek deleten etc.
 
Eelke Scholte

Eelke Scholte

22/06/2012 21:49:26
Quote Anchor link
Dat is makkelijker gezegd dan gedaan!
Ik heb al moeite met PhP, laat staan MySQL.

Maar goed, ik heb er een poging aan gewaagd.
Wil het toch leren!

Ik heb een gastenboek hier van de website gehaald:
http://www.phphulp.nl/php/script/gastenboeken-fora/gastenboek/1592/
(naar mijn idee is deze goed uitgewerkt als ik alle reacties eronder lees)

Heb de SQL code toe weten te voegen aan mijn database en heb de PhP ingevuld en aan mijn site toegevoegd.
Maar helaas krijg ik de melding "Er is iets mis gegaan"

Als ik de PhP probeer te lezen ligt dat volgens mij ergens aan de eerste regels code, maar ik zie niet wat ik daar verkeerd heb ingevuld.
Er staat nu:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
error_reporting(E_ALL);
$host = "localhost:3306"; // Je host
$user = "EelkeScholte"; // Je MySQL gebruikersnaam
$pass = "hierstaatmijnwachtwoord"; // Je MySQL wachtwoord
$datb = "gastenboek"; // Je MySQL database

// Verbinding maken

mysql_connect($host, $user, $pass) or die ("Er is iets mis gegaan");
mysql_select_db($datb) or die ("Er is iets mis gegaan");
?>


heb ik een punt of komma gemist?
Gewijzigd op 22/06/2012 21:50:12 door Eelke Scholte
 
Roel -

Roel -

23/06/2012 00:45:16
Quote Anchor link
Hé, mijn gastenboek - leuk :-)
Over je probleem: dan is óf je host, gebruikersnaam of wachtwoord verkeers, óf je databasenaam.

localhost:3306 hoeft overigens niet, daar kun je gewoon localhost neerzetten.
 
Wouter J

Wouter J

23/06/2012 00:48:13
Quote Anchor link
Quote:
localhost:3306 hoeft overigens niet, daar kun je gewoon localhost neerzetten.

Niet als je MySQL server op poort 3306 zit.
 
Roel -

Roel -

23/06/2012 00:52:32
Quote Anchor link
Dat is toch in 99% van de gevallen zo?
 
Wouter J

Wouter J

23/06/2012 00:56:19
Quote Anchor link
Ja, behalve als je allemaal vreemde servers op je computer hebt staan waardoor er geen 1 normale poort meer over is (spreek uit ervaring), dan moet je ineens localhost:8080 in de url gaan gebruiken en localhost:8888 in mysql...
 
Roel -

Roel -

23/06/2012 00:57:16
Quote Anchor link
Tsja, dat is dan ook vaak je eigen probleem.
Vooral als het om servers gaat (die horen vaak maar één taak te hebben).
Gewijzigd op 23/06/2012 00:57:26 door Roel -
 
Wouter J

Wouter J

23/06/2012 00:59:56
Quote Anchor link
Ach ja... Je installeert RoR: eigen servertje. Je script wat met C#: eigen servertje. Je bent een beginner met ZF en installeerd per ongeluk Zend Server: eigen servertje. Je script wat in .NET: eigen servertje. Je bent ook nog PHP scripter: eigen servertje.

In het totaal 5 servers, had vast makkelijker gekund, maar had er toender tijd niet de kennis voor (en nu waarschijnlijk ook nog niet).
Gewijzigd op 23/06/2012 01:00:21 door Wouter J
 
Eelke Scholte

Eelke Scholte

24/06/2012 14:21:31
Quote Anchor link
Roel van de Water op 23/06/2012 00:45:16:
Hé, mijn gastenboek - leuk :-)
Over je probleem: dan is óf je host, gebruikersnaam of wachtwoord verkeers, óf je databasenaam.

localhost:3306 hoeft overigens niet, daar kun je gewoon localhost neerzetten.


Hoi Roel,

Ja, jouw gastenboek zag er wel goed bruikbaar uit en ik wilde een zo eenvoudig mogelijk gastenboek, om problemen met de 1-pagina-structuur van Jquery Mobile te verminderen.

Het is me nu uiteindelijk gelukt om het gastenboek zichtbaar te krijgen, maar een bericht plaatsen doet hij nog niet.
Als ik op submit druk wordt ik doorgestuurd naar de home-pagina van mijn site en wordt het bericht niet geplaatst.
Weet jij misschien waar dat vandaan zou kunnen komen?

En daarnaast, wat is je bedoeling van de vraag "Welke dag is het vandaag"?
Heeft die een specifieke functie?
(ik probeer je PhP-script door te krijgen)

Toevoeging op 24/06/2012 14:24:13:

update: als ik mijn pagina ververs wordt mijn geplaatste bericht wel zichtbaar, maar ik heb nergens een bevestiging gehad.
 
Koen Vlaswinkel

Koen Vlaswinkel

24/06/2012 14:25:05
Quote Anchor link
Ik zal even het antwoord op je laatste vraag geven. Het is een anti-spam bescherming. In plaats van een CAPTCHA wordt er hier een vraag gebruikt. Dat kan je zien in de broncode.
 
Eelke Scholte

Eelke Scholte

24/06/2012 14:27:19
Quote Anchor link
@ Koen. oke, duidelijk.
dan laat ik die lekker staan.

Toevoeging op 25/06/2012 10:38:10:

Ben weer een stapje verder gekomen.
Ik ben er achter gekomen dat het geastenboek wel werkt als ik het rechtstreeks aanspreek (complete url typen in browser)
Maar niet als ik hem via mijn site invul.
Dus zal het er waarschijnlijk mee te maken hebben dat mijn site is opgebouwd uit 1 pagina met ID's om de verschillende subpagina's aan te spreken.

Is het mogelijk om in PhP aan te geven dat een script door moet verwijzen naar een specifieke plek binnen een website?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.