Hallo,

Ik moet voor school voor het vak informatica het spel zeeslag maken in o.a. PHP.
Ik loop al vast bij helaas al vast bij de eerste stap en hoop dat iemand mij daarmee kan helpen.
Van mijn docent moet ik eerst een pagina moet maken waar iemand kan inloggen (zonder wachtwoord!) of zich kan registreren (naam + alias in het spel).
Vervolgens moet je dus kunnen inloggen hiervoor moet je, je php koppelen aan je database met PDO (ik werk met phpmyadmin). Vervolgens is het de bedoeling dat je nadat je hebt ingelogd, je in een wachtrij komt en kan kiezen met wie je wilt spelen (bijv. de computer).
Ik snap gelukkig wel wat ik moet doen, maar in de praktijk vindt ik het lastig uit te voeren ik hoop echt dat iemand mij kan helpen...

Alvast bedankt :)
Wat heb je tot nu toe al gemaakt? En waar loop je precies op vast?
Op dit moment loop ik vast bij het maken van de inlog pagina, dus zodat ik zorg ik een pagina heb waar je kunt klikken op een knop registreren of je naam kunt typen zodat je kunt inloggen en dan vervolgens naar de pagina wachtrij.php gaat.

Op dit moment heb ik bij de index.php
Naam: <input type="text" name="name" value="<?php echo $name;?>">
<input type="submit" name="inloggen" value="inloggen" >
<br>
<a href="registreren.php">Of klik hier om je te registreren</a>

Maar volgens mij is dit niet echt php maar html.

Ik weet ook niet precies hoe je er nou voor kan zorgen dat als je uiteindelijk bij registreren.php komt dat je ook daadwerkelijk kunt registreren (met naam en alias) dus dat die in de database komen automatisch (phpmyadmin).

Ik heb op dit moment dit uitgezocht voor registreren.php, maar ook hiervan weet ik niet of het klopt...

Mijn docent zegt dat je het conecten met phpmyadmin moet doen via PDO

<?php
try {
$db = new PDO(' phpmyadmin:host=localhost;dbname=db_name' , 'db_user' , ' db_password' );
} catch (PDOException $e) {
echo $e->getMessage()."<br>";
die();

}
$sql = 'select naam from zeeslag_accounts' ;
foreach( $db->query($sql) as $row) {
echo $row['naam'] . "<br>";
}
$db = null;
?>

Alvast ontzettend bedankt dat je de moeite hebt genomen om mijn vraag te lezen :)
Maaike Doornhein op 30/03/2016 18:50:04

...
Vervolgens moet je dus kunnen inloggen hiervoor moet je, je php koppelen aan je database met PDO (ik werk met phpmyadmin).

PHPMyAdmin is niet je database maar MySQL.
Je connectie met mysql zet je als volgt op:
<?php
$db= new PDO('mysql:host=localhost;dbname=db_name;charset=utf8mb4', 'db_user', 'db_pwd');
?>

PHPMyAdmin is een tool geschreven in PHP om MySQL-databases te beheren.
Bedankt!!

Ik ben op dit moment al een stuk verder, heb wat uitleg van mijn docent gehad namelijk.
Nu heb ik voor registreren.php dit bestandje:

<?php
include_once "connect.php";

$naam = filter_input(INPUT_POST,"naam" );
$alias = filter_input(INPUT_POST,"alias" );

$sql = "insert into acounts (naam,alias) values(:naam,:alias)";
$db -> prepare($sql);

$sql -> bindParam( ':naam', $naam );
$sql -> bindParam( ':alias', $alias );

$sql -> execute ();

include_once "index.php";


?>

Alleen blijf ik nu continu de foutmelding:
Fatal error: Call to a member function bindParam() on a non-object in /Applications/XAMPP/xamppfiles/htdocs/zeeslag/registreren.php on line 10

En ik heb geen idee wat ik er mee aan moet, iemand een idee??
op regel zeven bewaar je een sting in de variabele $sql. Vervolgens probeer je op regel 10 een method (een functie binnen een class) aan te roepen. Dat gaat niet werken he. Probeer eens

$db->bindParam( ':naam', $naam );
bindParam is een method van het PDOStatement object (wat geretourneerd wordt door PDO::prepare), dus je moet dat eerst aan een variabele toewijzen:
<?php
$sql = "insert into acounts (naam,alias) values(:naam,:alias)";
$prep = $db -> prepare($sql);

$prep -> bindParam( ':naam', $naam );
$prep -> bindParam( ':alias', $alias );

$prep -> execute ();
?>
Allemaal heel erg bedankt voor het meehelpen en denken!
Zelf ben ik helaas niet zo goed in informatica :(

Ik ben op dit moment bezig met het maken het registreren en het inloggen en vanuit het inloggen dat je dan uiteindelijk uitkomt in de 'wachtrij'. Helaas werkt mijn code nog niet zoals dat zou moeten, ik hoop dat jullie mij misschien willen helpen...

Ik heb op dit moment dit:

index.php

<form method="post" action="wachtrij.php">
Naam: <input type="text" name="wie" />
<input type="submit" name="loginSubmit" value="Log in!" /> 
</form>
<BR>
<form method="post" action="registreren.php">
<input type="submit" name="loginSubmit" value="registreer je hier!" /> 
</form>


connect.php

<?php
$db = array (
    'host' => 'localhost',
    'dbname' => 'zeeslag_accounts',
    'user' => 'root',
    'pass' => ''
);

try
{
    $db = new PDO('mysql:host=' . $db['host'] . ';dbname=' . $db['dbname'] , $db['user'], $db['pass']);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->query("SET SESSION sql_mode = 'ANSI,ONLY_FULL_GROUP_BY'");
}
catch(PDOException $e)
{
    $sMsg = '<p>
            Regelnummer: '.$e->getLine().'<br />
            Bestand: '.$e->getFile().'<br />
            Foutmelding: '.$e->getMessage().'
        </p>';
    
    trigger_error($sMsg);
}
?> 


registreren.php

<form method="post" action="wachtrij.php">
Naam: <input type="text" name="wie" />
</form>
<BR>
Alias: <input type="text" name="alias" />
<BR>
<BR>
<input type="submit" name="loginSubmit" value="registreer!" /> 
</form>

<?php
include_once "connect.php";

$naam = filter_input(INPUT_POST,"naam" );
$alias = filter_input(INPUT_POST,"alias" );

$sql = "insert into acounts (naam,alias) values(:naam,:alias)";
$prep = $db -> prepare($sql);

$prep -> bindParam( ':naam', $naam );
$prep -> bindParam( ':alias', $alias );

$prep -> execute ();

?>


wachtrij.php

<?php
include_once "connect.php";
$naam = filter_inpu(INPUT_POST, "wie");
$db -> prepare($sql)
$sql -> bindParam(':naam', $naam);
$sql -> execute( );

$aantalregels = $sql -> row(count();
if ($aantalregels == 0) {
	include_once "index.php";
	exit( );	
}

$sql ="unpdat acounts set active = 1 where id = $id";

include_once "refreshwachtruimte.php"

?>


wachtruimterefresh.php

 <head>
<meta http-equiv="refresh" content="3">
</head> 

<?php
include_once "connect.php"

$id= input_filter(inout_get, "id");
$sql = "select * from acounts where active = 1"

$r = fetchAll(PDO::FETCH_ASSOC);
foreach($r as $regelnr => $regel) {
	if ($regel ['id'] == $id
	print
}
{
	foreach ($r as $regel) {
	if $regel ['id']; = $id) } 


?>


Je mist hier en daar een ; aan het eind van een paar regels.
Verder is de code in wachtruimterefresh.php best merkwaardig met afgebroken if'jes etc en loze print's.

In wachtrij.php gebeuren ook vreemde dingen.

Probeer je nu wat uit, in plaats van te weten wat je precies moet doen? Want daar lijkt het wel op.
En dat kan nooit de bedoeling zijn.
Maaike, gebruik je al een PHP editor? Dat zou anders je leven zeker veraangenamen. Ik ben zelf erg tevreden over het gratis Netbeans
Ik vond PHP zwaar irritant toen ik net ermee begon (om het te leren). Het week zoveel af van HTML dat het een tijd duurde voor mij voordat ik het enigszins doorkreeg. Misschien geldt voor jou hetzelfde (dat weet ik niet). Ik heb er in ieder geval wel veel aan gehad om op w3schools tutorials te volgen en van bepaalde zaken kant en klare oplossingen te zoeken en die te ontleden. Zo ben ik met mijn eigen login-systeem begonnen door een veilige te downloaden en deze te doorlopen en daarna aan te passen.

In mijn ervaring werkt dit veel beter in het begin dan telkens maar proberen dingen aan te passen zonder dat je echt begrijpt wat ze doen. Dat koste mij uren en uren en ik werd er nog niet wijzer van omdat ik dus dingen probeerde die ik al wist terwijl er dingen nodig waren die ik niet wist.

Als je een paar uur besteed aan het downloaden van inlog systemen en deze uit te proberen en de codes te bekijken en te volgen is het denk ik voor jou al snel een stuk duidelijker waar bepaalde dingen niet kloppen.

Plus wat anderen ook al hebben gezegd, zoals Frank dat je netbeans kan gebruiken wat heel veel scheelt omdat je dan gemakkelijker fouten kan traceren en sowieso direct kan zien als iets niet klopt.

Reageren