Gebruikers iets aan pagina toe laten voegen

Status
Niet open voor verdere reacties.

Stinuz

Terugkerende gebruiker
Lid geworden
14 jun 2003
Berichten
1.245
Hoi, ik wil graag iets redelijk ingewikkelds toevoegen aan mijn website. Hier een idioot voorbeeld om uit te leggen wat het idee er achter precies is. Ik heb het bestand quotes.php. Deze pagina ziet er zo uit:

Code:
Hamsteren!
Ik kwam, ik zag, ik overwon
Ik snap het wel, maar ik snap het niet.
Smoking!

Nu wil ik graag dat gebruikers iets aan deze pagina toe kunnen voegen door middel van een tekstbox onderaan de pagina. Als de gebruiker bijvoorbeeld ''Run forest, run!'' intypt (zonder de quotes) en dan op ''verzenden'' drukt moet de pagina er zo uit komen te zien:

Code:
Hamsteren!
Ik kwam, ik zag, ik overwon
Ik snap het wel, maar ik snap het niet.
Run forest, run!
Smoking!

Het liefst dus op alfabet, maar dit moet niet per-se, als de ingevoerde tekst onder de laatste zin komt te staan is het ook prima.

Ik beschik over PHP, MYSQL en kan CHmodden naar 777 dus ik hoop dat dit idee te verwezenlijken is! Alvast bedankt voor eventuele tips! :thumb:
 
Zo ingewikkeld is het niet, je hebt alleen een MySQL database er voor nodig maar die heb je...

Wat je moet doen is elke keer een nieuwe entry maken als iemand wat toevoegt...

De structuur ziet er zo uit
Tabelnaam: quotes
Code:
quoteID | quote
en dan is de inhoud zo: (n.a.v. voorbeeld)
Code:
1 | Hamsteren!
2 | Ik kwam, ik zag, ik overwon
3 | Smoking
4 | Run forest, run!
Vervolgens haal je de waardes er op volgende van quote uit (Dus alfabetisch)
PHP:
$quoteQuery = "SELECT quote FROM quotes ORDER BY quote ASC";
$quoteResult = mysql_query($quoteQuery); // is handig om hier ook nog errors bij te plaatsen
while($quoteRow = mysql_fetch_array($quoteResult))
{
  echo "$quoteRow['quote'] <br />";
}

Dit is maar een simpel voorbeeld maar het geeft wel het hele vraagstuk weer.
 
Laatst bewerkt:
Oke, ik begrijp wat je zegt, ik weet alleen niet hoe ik dit precies in mijn website moet integreren. Heb wel basiskennis als het op PHP aankomt en kan prima MYSQL tables aanmaken etc. maar verder kom ik niet :confused:
 
Waar loop je vast? Dit is een wat ongeveer moet gebeuren.

- het weergeven van de quotes/ opvragen van database gegeven (Voorbeeld heb ik al gegeven)
- Een formulier maken
- Formulier gegevens naar database sturen (evt controleren of quote al aanwezig is)
- Klein admin-panel voor het verwijderen van quotes

Als jij aangeeft waar je problemen hebt kunnen we er wel uitkomen, ik verwacht in ieder geval wel van je dat je zelf wat probeert en niet dat ik je het hele script geef :rolleyes:

Je leert het meeste van je eigen fouten en met zo'n script kun je mooi wat experimenteren en als er wat fout gaat kun je het hier wel melden.;)
 
Bij het gedeelte ''formulier maken'' ga ik de mist in. Ik heb wat scripts van hotscripts.com bestudeerd maar ik kom er niet uit. Hiervoor is mijnkennis van PHP veel te beperkt. Misschien heb jij (of iemand anders) een link of tip die me op weg kan helpen?
 
Je weet hoe je een HTML formulier maakt?

Dit is een simpel voorbeeld:
formulier.html
HTML:
<html>
 <head>
  <title>Formulier</title>
 </head>
 <body>
  <form action="verwerk.php" method="POST">
   Quote:<input type="text" name="quote" /><br />
   <input type="submit" value="Verzenden" name="submit" />
  </form>
 </body>
</html>

verwerk.php
PHP:
if(isset($_POST['quote']))
{
  //uiteindelijk doe je hier de INSERT INTO query
  //en waarschijnlijk ook de SELECT om te zoeken naar duplicaten
  //maar nu laten we alleen de waarde zien.
  echo $_POST['quote'];
}
else
{
  echo "Het veld <b>quote</b> mag niet leeg zijn";
}
 
Ik kom er nog niet helemaal uit. Je bovenstaande scriptjes werken natuurlijk prima maar zodra ik iets bij quote intyp en dan weer terug ga en weer iets anders intyp is mijn eerste ingetypte quote verdwenen. Dit is natuurlijk logisch, want hier doet MYSQL zijn intrede.

Ik heb

PHP:
$quoteQuery = "SELECT quote FROM quotes ORDER BY quote ASC";
$quoteResult = mysql_query($quoteQuery); // is handig om hier ook nog errors bij te plaatsen
while($quoteRow = mysql_fetch_array($quoteResult))
{
  echo "$quoteRow['quote'] <br />";
}

toegevoegd aan verwerk.php en deze geupload maar dan krijg ik de error

Code:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/crankyslap/domains/dimitri-korsakov.com/public_html/verwerk.php on line 9

als ik iets toevoeg. Ik heb nog geen database aangemaakt en zie ook niet hoe bovenstaand script uberhaubt verbinding maakt met een database.

Wat ik tot zover begrijp is dat de 1ste regel van de MYSQL code aangeeft dat de quotes aflopend gesorteerd moeten worden, van regel 2 en 3 snap ik niks en regel 5 laat volgens mij de quotes zien. Ik denk niet dat ik verder kan werken tot ik precies begrijp wat de code doet. verwerk.php en formulier.html zijn me overigens wel duidelijk.

Alvast bedankt tot zover, heel leerzaam :D

Mijn verwerk.php ziet er zo uit:

PHP:
<?php

if(isset($_POST['quote']))
{
$quoteQuery = "SELECT quote FROM quotes ORDER BY quote ASC";
$quoteResult = mysql_query($quoteQuery); // is handig om hier ook nog errors bij te plaatsen
while($quoteRow = mysql_fetch_array($quoteResult))
{
  echo "$quoteRow['quote'] <br />";
}  
}
else
{
  echo "Het veld <b>quote</b> mag niet leeg zijn";
}  

?>
 
De SELECT haalt alleen gegevens uit een database, die voert niets in...

Je moet dus de SELECT in het formulier hebben.
formulier.php (Geen .html meer dus)
PHP:
///////////////////////////////////DATABASE GEGEVENS///////////////////////////////////

$host = "localhost"; // Adres naar MySQL server (Meestal localhost)
$gebruikersnaam = "root"; // Gebruikersnaam voor de database
$wachtwoord = ""; // Wachtwoord voor gebruiker
$database = "quoteDB"; // Database naam (Dus niet die van de tabel)

// Verbinding maken met de server
$dbconnect =  mysql_connect($host, $gebruikersnaam, $wachtwoord) or die (mysql_error());
// De juiste database selecteren
$dbselect =  mysql_select_db($database) or die (mysql_error());

///////////////////////////////////END DB GEGEVENS///////////////////////////////////

//Wil je eerst de quotes laten zien of het formulier?
$formFirst = "True"; // Voor eerst de quotes kun je deze op FALSE zetten

//De quotes uit de database halen maar nog niet weergeven.
$quoteQuery = "SELECT quote FROM quotes ORDER BY quote ASC";
$quoteResult = mysql_query($quoteQuery) or die (mysql_error());


if($formFirst == "True")
{
  // Het formulier tevoorschijn toveren
  echo'
  <html>
   <head><title>Formulier</title></head>
   <body>
    <form action="verwerk.php" method="POST">
     Quote:<input type="text" name="quote" /><br />
     <input type="submit" value="Verzenden" name="submit" /><br /><br />
    </form>';
    // Nu laten we de quotes zien
    while($quoteRow = mysql_fetch_array($quoteResult))
    {
      echo "$quoteRow[quote] <br />"; 
      //In het vorige voorbeeld was er een foutje met de ' ', moet nu verholpen zijn
    }
   echo'
   </body>
  </html>';
}
else
{
  echo'
  <html>
   <head><title>Formulier</title></head>
   <body>'; 
    // Nu laten we eerst de quotes zien
    while($quoteRow = mysql_fetch_array($quoteResult))
    {
      echo "$quoteRow[quote] <br />"; 
    }
    // En nu pas het formulier
  echo'
      <form action="verwerk.php" method="POST">
     Quote:<input type="text" name="quote" /><br />
     <input type="submit" value="Verzenden" name="submit" /><br /><br />
    </form>
   </body>
  </html>';
}

Ik heb hem niet getest dus je zult hem even moeten uitvoeren om te kijken of hij werkt.

Vervolgens moet je in verwerk.php weer opnieuw de databasegegevens bovenin zetten
en daarna moet je iets met INSERT doen...
 
Laatst bewerkt:
Oke ik heb het formulier.php aangepast, de database gegevens ook bovenaan verwerk.php geplakt en hij maakt nu verbinding met de database ''request'' met daarin de tabel ''quotes'' maar als ik nu formulier.php open krijg ik deze error:

Code:
Unknown column 'quote' in 'field list'

Wat gaat er mis?
 
Heb je in de tabel quotes wel 2 velden aangemaakt?

Deze velden moet je aanmaken:
Code:
[B]Field[/B] | [B]Type[/B] | [B]Length/Values[/B] | [B]Attributes[/B] | [B]Null[/B] | [B]Default[/B] | [B]Extra[/B]

quoteID | INT | {leeg} | {leeg} | not null | {leeg} | auto_increment + het eerste rondje (Primary Key)
quote | VARCHAR | 100 | {leeg} | not null | {leeg} | {leeg}
 
De tabellen werken wel, ik heb alleen geen idee wat al die woorden betekenen maar dat zoek ik wel op :P

Ik kon nu de quote invullen maar als ik op submit klik krijg ik dit
Code:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in 
/home/crankyslap/domains/dimitri-korsakov.com/public_html/verwerk.php on line 23
 
Hou het bij verwerk.php even eerst op deze manier:

verwerk.php
PHP:
// {Hier even die database gegevens plakken
//  in onderstaand script heb je hem nog niet nodig
//  maar later we}

echo $_POST['quote'];

Eerst maar even kijken of alles goed gaat...

Weet je al welke query je uit moet voeren om de gegevens in de database te stoppen?
 
Om eerlijk te zijn heb ik geen idee, want als ik nu een quote intyp is die de volgende keer dat er iets ingetypt wordt dus weer verdwenen. Wat is een ''query'' precies? I ken de betekenis van de term niet eens, dat lijkt me een goed begin :D
 
Een query moet je zien als een vraag / opdracht naar de database

Een voorbeeld:
PHP:
$selectQuery = "SELECT * FROM gebruikers WHERE naam='Stinuz'";
Wat je nu eigenlijk aan de database vraag is dit "Selecteer voor mij alle gegevens uit de tabel gebruikers waarbij de in de kolom 'naam' Stinuz staat"

Wanneer er iets in voorkomt zal hij dit teruggeven maar als hij geen Stinuz in de kolom 'naam' kan vinden geeft hij niets terug.

Waarschijnlijk is het zinvol voor je om deze tutorial even door te lezen.
 
Van dit alles heb ik af kunnen leiden dat het er zo uit moest komen te zien:

Code:
$selectQuery = "SELECT quote FROM quotes ORDER BY quote ASC'";

Hij neemt dus een ''quote'' van de tabel ''quotes'' en sorteert deze aflopend.

Maar dit werkte niet, kan je me vertellen wat ik verkeerd doe?
 
Wat je nu doet is de gegevens in de database opvragen, maar je wilt juist dat er een nieuwe qoute in de database komt...

Probeer dit eens:
verwerk.php
PHP:
<?php
///////////////////////////////////DATABASE GEGEVENS///////////////////////////////////

$host = "localhost"; // Adres naar MySQL server (Meestal localhost)
$gebruikersnaam = "root"; // Gebruikersnaam voor de database
$wachtwoord = ""; // Wachtwoord voor gebruiker
$database = "quoteDB"; // Database naam (Dus niet die van de tabel)

// Verbinding maken met de server
$dbconnect =  mysql_connect($host, $gebruikersnaam, $wachtwoord) or die (mysql_error());
// De juiste database selecteren
$dbselect =  mysql_select_db($database) or die (mysql_error());

///////////////////////////////////END DB GEGEVENS///////////////////////////////////

// Deze if statement controleert of er wel op de knop is gedruk en
// of er wel een waarde is ingevoerd.
if(isset($_POST['submit']) && isset($_POST['quote']))
{

  $invoegQuery = "INSERT INTO queries SET quote='$_POST[quote]'";
  $invoegResult = mysql_query($invoegQuery) or die (mysql_error());
  echo "De volgende quote is toegevoegd: <b>$_POST['quote']</b><br /><br />
            klik <a href='formulier.php' >hier</a> om terug te keren.";
}
else
{
  echo "<b>FOUT: U heeft waarschijnlijk geen quote ingevuld, klik <a href='javascript:history.go(-1)' >hier</a> om terug te keren.</b>";
}
?>

Als het goed is wordt nu na het invullen van een quote deze in de db gestop en kun je daarna terugkeren naar het formulier. Hier staat als het goed is nu de quote erbij.
 
Laatst bewerkt:
Als ik bovenstaande gebruik krijg ik eerst de error:

Code:
Parse error: syntax error, unexpected '{' in 
/home/crankyslap/domains/dimitri-korsakov.com/public_html/verwerk.php on line 20

Als ik die '{' op lijn 20 weghaal krijg ik:

Code:
Parse error: syntax error, unexpected T_VARIABLE in 
/home/crankyslap/domains/dimitri-korsakov.com/public_html/verwerk.php on line 22

Ik weet niet wat een T_VARIABLE is dus ik heb ook geen idee hoe ik dit moet fixen :/
 
Ik was een haakje vergeten na de IF statement (Bij een error moet je meestal naar de regel er boven kijken)

Ik heb em nu aangepast dus je zou nu geen error horen te krijgen. (In ieder geval niet dezelfde :p )
 
Inderdaad! Niet dezelfde, maar wel een andere :p

Code:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in 
/home/crankyslap/domains/dimitri-korsakov.com/public_html/verwerk.php on line 24

Heel erg bedankt voor de moeite tot nu toe trouwens :thumb:
 
pff, ik kan merken dat ik een poos geen PHP heb gedaan...

PHP:
<b>$_POST['quote']</b>
veranderen in
PHP:
<b>$_POST[quote]</b>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan