Hallo,

Ik ben Jessy van Lieshout, ik ben 18 jaar oud en ik heb jullie hulp nodig bij een opdracht die ik gekregen heb.

Ik moet een knock-out gaan maken voor een tennisvereniging.

In de applicatie moet een functie komen die de winnaars van elke ronde automatisch doorzet naar de volgende ronde. Hierbij wordt willekeurig een tegenstander gekozen, dit voorkomt vriendjespolitiek. Dit moet zichtbaar worden in een knock-out systeem. De winnaar krijgt dan een kleur. De uitslagen van de wedstrijd worden handmatig door middel van een formulier in de database gezet. De spelers van de 1e ronde worden automatisch bepaald van de aanmeldingen. Dit moet aan de macht van 2 spelers zijn. Als in de eerste ronde geen macht van 2 is worden er in de 1e ronde minder spelers geplaatst waardoor het aantal spelers in de volgende ronde wel aan de macht van 2 is.

Dit betekent dat sommige spelers direct door gaan naar ronde 2.

Sommige aanmelders leveren zelf de aanmeldingen, deze xml files moeten geimporteerd worden door iemand die geen verstand heeft van programmeren.

Wie kan mij helpen bij deze uitdaging? Ik heb de hele dag gepuzzeld maar kom er niet uit.

Alvast bedankt,
Maddy
Volgens mij komen de namen in regels 25-28 niet overeen met de namen in het xml bestand.

Dit > $data->speler[$i]->s_naam

Moet zijn > $data->speler[$i]->spelervoornaam
op dit moment is het gelukt om alle foutmeldingen weg te halen, helaas worden deze gegevens nog niet toegevoegd in de database. Hoe kun je dit oplossen?


<?php
 $query = 
  "INSERT INTO speler 
   (s_id, s_naam, s_tussenvoegsel, s_achternaam) 
   VALUES(:s_id, :s_naam, :s_tussenvoegsel, :s_achternaam);";
  $statement = $connect->prepare($query);
  for($i = 0; $i < count($data); $i++)
  {
   $statement->execute(
    array(
     ':s_naam'   => $data->aanmelding[$i]->spelervoornaam,
     ':s_tussenvoegsel'  => $data->aanmelding[$i]->spelertussenvoegsel,
     ':s_achternaam'  => $data->aanmelding[$i]->spelerachternaam
    )
   );
?>

Haal bij de INSERT en VALUES
s_id,

en
 :s_id, 

Weg.

Die veldnaam komt niet voor in de array daarna.
ID is waarschijnlijk autoincrenent.
dus die hoef je dan ook niet in de array te zetten?
En in een eerdere versie van de code komt ook een insert van de schoolnaam voor.

[size=xsmall]Toevoeging op 11/01/2020 12:31:04:[/size]

Kan je niet net als Greta de planeet gaan redden?
<b>Dit is het xml bestand</b>


<?xml version="1.0" standalone="true"?>

-<aanmeldingen>


-<aanmelding>

<spelervoornaam>Piet</spelervoornaam>

<spelerachternaam>Pietersen</spelerachternaam>

<spelertussenvoegsels/>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>


-<aanmelding>

<spelervoornaam>Mohammed</spelervoornaam>

<spelerachternaam>Oualiki</spelerachternaam>

<spelertussenvoegsels/>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>


-<aanmelding>

<spelervoornaam>Susan</spelervoornaam>

<spelerachternaam>Blankers</spelerachternaam>

<spelertussenvoegsels/>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>


+<aanmelding>


-<aanmelding>

<spelervoornaam>Ali</spelervoornaam>

<spelerachternaam>Abdul</spelerachternaam>

<spelertussenvoegsels/>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>


-<aanmelding>

<spelervoornaam>Steven</spelervoornaam>

<spelerachternaam>Speelberg</spelerachternaam>

<spelertussenvoegsels/>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>


-<aanmelding>

<spelervoornaam>Maarten</spelervoornaam>

<spelerachternaam>Leest</spelerachternaam>

<spelertussenvoegsels>van</spelertussenvoegsels>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>


-<aanmelding>

<spelervoornaam>Anton</spelervoornaam>

<spelerachternaam>Teunnissen</spelerachternaam>

<spelertussenvoegsels/>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>


-<aanmelding>

<spelervoornaam>Petra</spelervoornaam>

<spelerachternaam>Jansen</spelerachternaam>

<spelertussenvoegsels/>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>


-<aanmelding>

<spelervoornaam>Peter</spelervoornaam>

<spelerachternaam>Kapteijns</spelerachternaam>

<spelertussenvoegsels/>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>


-<aanmelding>

<spelervoornaam>Esra</spelervoornaam>

<spelerachternaam>Elha</spelerachternaam>

<spelertussenvoegsels/>

<schoolnaam>Koning Willem I College</schoolnaam>

</aanmelding>

</aanmeldingen>



[size=xsmall]Toevoeging op 11/01/2020 12:32:11:[/size]

dit is wat ik aan code heb, nu ik de id erbij heb gezet krijg ik deze melding: invalid parameters.


<?php
  $data = simplexml_load_file($_FILES['file']['tmp_name']);
  $connect = new PDO('mysql:host=localhost;dbname=tenniswedstrijden','root', '');
  $query = 
  "INSERT INTO speler 
   (s_id, s_naam, s_tussenvoegsel, s_achternaam) 
   VALUES(:s_id, :spelervoornaam, :spelerachternaam, :spelertussenvoegsels)";
   
  $statement = $connect->prepare($query);
  for($i = 0; $i < count($data); $i++)
  {
   $statement->execute(
    array(
     'spelervoornaam'   => $data->aanmelding[$i]->spelervoornaam,
     ':spelertussenvoegsels'  => $data->aanmelding[$i]->spelertussenvoegsels,
     ':spelerachternaam'  => $data->aanmelding[$i]->spelerachternaam
    )
   );
?>

Gebruik a.u.b. codetags om je code.
Zie de Veelgestelde Vragen.
dat doe ik op het einde, het gaat er mij om dat het nu eerst gaat werken en ik een document in mijn database krijg.
Nee, we zien liever duidelijke topics die aan de voorwaarden voldoen, als de forumcrew er om vraagt.
sorry ik probeer me aan de regels te houden, ik zie nu ook dat dit wel helpt.
mijn volledige import.php code ziet er nu als volgt uit:


<?php
//import.php
sleep(3);
//stores error or succes message
$output = '';

//checkt of er een file geselecteerd is.
if(isset($_FILES['file']['name']) && $_FILES['file']['name'] != '')
{
$valid_extension = array('xml');
$file_data = explode('.', $_FILES['file']['name']);
$file_extension = end($file_data);
if(in_array($file_extension, $valid_extension))
{
$data = simplexml_load_file($_FILES['file']['tmp_name']);

// maakt connectie met database
$connect = new PDO('mysql:host=localhost;dbname=tenniswedstrijden','root', '');

//query voegt gegevens toe aan tabellen in database
$query =
"INSERT INTO speler
(s_naam, s_tussenvoegsel, s_achternaam)
VALUES(:spelervoornaam, :spelerachternaam, :spelertussenvoegsels)";

$statement = $connect->prepare($query);
for($i = 0; $i < count($data); $i++)
{
//values krijgen gegevens
$statement->execute(
array(
'spelervoornaam' => $data->aanmelding[$i]->spelervoornaam,
':spelertussenvoegsels' => $data->aanmelding[$i]->spelertussenvoegsels,
':spelerachternaam' => $data->aanmelding[$i]->spelerachternaam,
)
);
}
// laat zien als goede file gekozen is
$result = $statement->fetchAll();
if(isset($result))
{
$output = '<div class="alert alert-success">Import Data Done</div>';
}
}
//laat zien als foutieve/geen xml file gekozen is
else
{
$output = '<div class="alert alert-warning">Invalid File</div>';
}
}
else
{
$output = '<div class="alert alert-warning">Please Select XML File</div>';
}

echo $output;

?>


[size=xsmall]Toevoeging op 11/01/2020 13:25:28:[/size]

ik heb even verder aan de code gewerkt en krijg nu de volgende foutmelding:

Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`tenniswedstrijden`.`speler`, CONSTRAINT `speler_ibfk_1` FOREIGN KEY (`sch_id`) REFERENCES `school` (`sch_id`)) in C:\xampp\htdocs\Tenniswedstrijden\startbootstrap-agency-gh-pages\php\import.php:36 Stack trace: #0 C:\xampp\htdocs\Tenniswedstrijden\startbootstrap-agency-gh-pages\php\import.php(36): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\Tenniswedstrijden\startbootstrap-agency-gh-pages\php\import.php on line 36

Reageren