Hoi,

Ik heb een website, http://kennemercollegeboeken.hostzi.com/ . Nu wil ik dat je ipv dat je inlogt en op de Add book pagina (Hier kan je een boek toevoegen die wordt opgeslagen in een database en op een andere pagina wordt opgehaald), dat je je naam, achternaam en klas daar niet hoeft in te vullen, maar alleen bij regristratie. Ook wil ik een pagina maken waar leden kunnen zien welke boeken zij hebben toegevoegd.

Hoe het er nu uitziet: (ondanks dat op de pagina anders staat vermeld)
Regristratie:

-Gebruikersnaam
-Wachtwoord
-Email

Login:

-Gebruikersnaam
-Wachtwoord

Boek toevoegen:

-Naam
-Achternaam
-Klas
-Titel
-Schrijver

Hoe ik het graag zie:

Regristratie:

-Naam
-Achternaam
-Klas
-Gebruikersnaam
-Wachtwoord
-Email

Login:

-Gebruikersnaam
-Wachtwoord

Add Book:

-Titel
-Schrijver

Je moet meerdere boeken kunnen toevoegen, wat dus ook op de beheerderspagina zichtbaar moet zijn. En je moet op een pagina kunnen zien welke boeken je hebt toegevoegd.

Heeft iemand een linkje, of linkjes waar dit staat uitgelegd? Of kan iemand het mij hier, of op skype (frank.martens25) uitleggen? Ik beschik over een FTP server en Teamvieuwer.

Alvast Bedankt voor ieders reacie,

Frank
Hallo Frank,

Wat je wil is zeker mogelijk.

Begin gewoon met de database aan te passen / uit te breiden.

Waarschijnlijk is er een tabel users. daar zal met name nog een kolom 'klas' aan de tabel toegevoegd moeten worden. Denk ook direct na over het einde schooljaar.. wie gaat er naar de volgende klas? wie niet? wellicht zul je hier ook een beheer tool voor maken.

één gebruiker kan meerdere boeken toevoegen. maar een boek kan maar aan één gebruiker toebedeeld zijn tegelijkertijd?
dan kun je het beste een tabel boeken aan de database toevoegen. daarin zou je kolommen kunnen maken als:

boek_id (primary key, autoincrement)
user_id
titel
...
Hoi Frank,

Bedankt voor je reactie. De tabel is nu uitgebreid. Naam, Achternaam en Klas zijn toegevoegd. Één gebruiker kan meerdere boeken toevoegen. 2 mensen kunnen wel hetzelfde boek hebben.

Hoe je boek_id, user_id bedoeld etc begrijp ik niet helemaal... Kan je dat uitleggen? Of gaat het er gewoon om dat dat de tabelnamen zijn? Of juist de 'Fields' ?
Okee in dat geval krijg je een tabel boeken en een koppel-tabel om te kunnen koppelen tussen users en boeken.

ik weet niet hou jouw 'user' tabel heet.. ik hou het op users.

waarschijnlijk hebben alle users een uniek nummer. misschien leerlingnr of iets dergelijks? ik noem het user_id.

Dit unieke nummer mag maar één keer voorkomen. er mogen dus nooit geen dubbele user_id's zijn.

de tabel boeken met de volgende records:
book_id: INT + autoincrement + Primary key.
titel: VARCHAR(50)
(en verder wat je wil)

de koppeltabel user_book met de ALLEEN volgende records:
id: INT + autoincrement + Primary key.
user_id: INT + index
book_id: INT + index

[size=xsmall]Toevoeging op 09/06/2013 21:23:05:[/size]

later kun je dan users bij houden in de user tabel, boeken bijhouden in de tabel boeken.

in de koppel tabel houden we enkel bij wie welk boek heeft.

koppel tabel:
--------------------------
id  |  user_id | book_id |
--------------------------
1   |  25      | 15      |
1   |  25      | 17      |
1   |  18      | 15      |
--------------------------

user met user_id 25 heeft dus boek 15 en boek 17 in gebruik.
user met user_id 18 heeft (ook) boek 15 in gebruik.
CREATE TABLE `*`.`Boeken` (
`book_id` INT( 50 ) NOT NULL AUTO_INCREMENT ,
`Titel` VARCHAR( 50 ) NOT NULL ,
`Schrijver` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `book_id` )
) ENGINE = MYISAM

CREATE TABLE ``.`user_book` (
`id` INT NOT NULL AUTO_INCREMENT ,
`user_id` INT NOT NULL ,
`book_id` INT NOT NULL ,
PRIMARY KEY ( `id` ) ,
INDEX ( `user_id` , `book_id` )
) ENGINE = MYISAM


Bedankt, die zijn aangemaakt. Hoe gaat het nu verder? De tabel heet trouwens Members, maar dat maakt niet uit. Iedereen krijgt daar inderdaad een eigen ID.

[size=xsmall]Toevoeging op 09/06/2013 21:42:51:[/size]

Hoe werkt het nu verder met de formulieren en met het opvragen van boeken?
mooi.

ja nu komt het echte werk.
je zou nu de pagina's waar de 'members' zich registreren kunnen uitbreiden zodat ze ook kunnen opgeven in welke klas ze zitten en wat hun naam en achter naam is. Dit zal waarschijnlijk betekenen dat het formulier aangepast moet worden en ook de PHP die het formulier verwerkt alsmede de database querie INSERT.

tevens moet de boeken tabel gevuld worden. dat zal misschien een beheerpagina worden.

daarnaast kun je een nieuwe pagina gaan maken waar men een overzicht krijgt van de boeken die ze hebben.

boeken voeg je gewoon toe aan de tabel boeken.
boeken die in gebruik zijn voeg je toe in de koppel-tabel. daarvoor heb je dan dus het juiste book_id nodig en de member_id.


[size=xsmall]Toevoeging op 09/06/2013 22:04:06:[/size]

heb je ervaring met formulieren?

Het opvragen van alle boeken:

SELECT * FROM boeken

een stapje verder:
naam van de gebruiker - boek

SELECT member.name, Boeken.Titel FROM user_book
JOIN members ON user_book.user_id = members.member_id
JOIN Boeken ON user_book.book_id = Boeken.book_id
Ergens zit een foutje... De regristratie werkt wel.

Parse error: syntax error, unexpected T_ELSE in /home/a4692586/public_html/toevoegen.php on line 39


<?php
//we zetten error report aan voor als er een foutje in de code zou zitten, deze kan als alles optimaal werkt uitgezet worden. Dit doe je door de 1 te veranderen in een 0.
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
 
//we includen het bestand config.php zodat we verbinding hebben met de database
$host = ""; // De host
$user = ""; // De MySQL gebruikersnaam
$pass = ""; // Het MySQL wachtwoord
$datb = ""; // De database

mysql_connect($host, $user, $pass) or die ("Er kan geen verbinding worden gemaakt");
mysql_select_db($datb) or die ("Er kan geen verbinding worden gemaakt met de database");
 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //kijken of het formulier gepost is 
	$naam = mysql_real_escape_string($_POST['Tite;']);
	$adres = mysql_real_escape_string($_POST['Schrijver']);
 
	//velden controleren
	$errors = array();
	if(strlen($naam) < 2) {
		array_push($errors, "Je hebt geen of  een te korte naam ingevuld");
	}
	if(strlen($naam) > 30) {
		array_push($errors, "Je hebt een te lange naam ingevuld");
	}
	//kijken of  er een naam is ingevuld, zo nee onderbreek het proces, anders ga verder
	if(count($errors) >0){
			foreach($errors as $error){
				echo $error;
			}
	}
 
	 else {
		//alles mooi in de database zetten
		mysql_query ("INSERT INTO boeken (Titel, Schrijver) VALUES ('". $naam ."', '".$adres."')") or die (mysql_error());  
		echo 'Je gegevens zijn opgeslagen in de database';
	}
else {
	// het formulier en we zijn klaar
	<form action="toevoegen.php" method="post">
		Titel:<input type="text" name="Titel" size="45">
		Schrijver: <input type="text" name="Schrijver" size="60">
                <input type="submit" value="verzenden" />
	</form>
}
?>
Je sluit je if van regel 15 niet af, vandaar die error.
Ik heb even een nieuw topic in Beginnend PHP geopend wegens een andere fout;) Daarna kunnen we weer verder.
Beste Frank,

Ik heb het script moeten debuggen, wat eerijk gezegd snel is verlopen. Je kan nu een boek toevoegen op http://kennemercollegeboeken.hostzi.com/toevoegen.php . Hoe werkt het nu verder?

Alvast Bedankt,

Frank
Zou iemand (maakt niet uit wie) hier nog uitleg willen geven?

Reageren