Probleem met weergeven php

Pagina: 1
Acties:

Onderwerpen


  • arjentjuh
  • Registratie: April 2004
  • Laatst online: 16-09-2023
Ik ben bezig met een database te laten weergeven met php in een gift formaat.

Dit is mijn code/uitwerking
1.
vraag_1
{antwoord_1, =antwoord_2, ~antwoord_3, ~antwoord_4, ~
2.
vraag_2
{antwoord_1, ~antwoord_2, =antwoord_3, ~antwoord_4,
~


Alleen het moet er zo uit komen te zien:
1.
vraag_1
{=antwoord_1, ~antwoord_2, ~antwoord_3, ~antwoord_4}



Het lukt mij niet om het = of ~ voor het antwoord te krijgen en om het } helemaal achteraan te zetten want hij zet dan achter elk antwoord zo'n }.

De bestanden die ik gebruik staan op deze ftp http://gtxp.rickwedzinga.nl

PunlArjen


  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Wat heb je zelf al geprobeerd? Waarom lukt het niet denk je?

Post eens wat relevante code in het topic. PHP files zijn op deze wijze sowieso niet in te zien omdat ze door de webserver worden geparsed. Je zou hoogstens kunnen proberen een .phps extensie te gebruiken.

[ Voor 26% gewijzigd door PhoeniX- op 24-11-2005 13:52 ]


  • arjentjuh
  • Registratie: April 2004
  • Laatst online: 16-09-2023
Wat ik precies heb staat in de uitwerking.php op de ftp.
Wat het moet worden:
vraag_1
{=antwoord_1, ~antwoord_2, ~antwoord_3, ~antwoord_4}
Op deze manier moet het weergegeven worden.


Ik heb geprobeerd om het = of ~ der voor te krijgen door op verschillende plaatsen in de code te zetten
deze code:

if ($record[$antwoord_code] == 1){
print (" =");
} else if ($record[$antwoord_code] == 0){
print (" ~"); }

Maar dit helpt niet
en met het haakje } erachter lukt ook niet. want dan krijg je dit:
vraag_2
{antwoord_1, ~}antwoord_2, =antwoord_3, ~}antwoord_4, ~}

en het moet zo worden

{=antwoord_1, ~antwoord_2, ~antwoord_3, ~antwoord_4}

de bestanden zijn nu ingezipt op de ftp

PunlArjen


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Zie PhoeniX-. Lees ook P&W FAQ - De "quickstart" even door en pas je topicstart even aan, want hier kunnen we niet zoveel mee. :)

Edit: het is dus niet de bedoeling dat wij je gehele code gaan doorspitten op fouten. Je mag zelf isoleren waar de fout ongeveer zit, en dan relevante code posten. Met een complete code dump via FTP kunnen we niets.

[ Voor 41% gewijzigd door NMe op 24-11-2005 14:04 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • arjentjuh
  • Registratie: April 2004
  • Laatst online: 16-09-2023
Er zitten geen fouten in maar ik vraag hier om hulp

de code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
  include("verbinding.php");
  mysql_connect ("$dbhost","$username","$dbww");
  mysql_select_db ("$db") or die ("Foutje");


  $resultaat = mysql_query ("SELECT DISTINCT vragen.vraag_id, vragen.vraag_omschrijving, antwoord_omschrijving, antwoord_code FROM vragen,antwoorden WHERE vragen.vraag_id = antwoorden.vraag_id;");
  $i=1;
  while ($record = mysql_fetch_array($resultaat))
  {
    if($i==1)
    {
      $q="SELECT COUNT(vraag_id) FROM antwoorden WHERE vraag_id=".$record[0];
      $q_result=mysql_query($q);
      $aantal=mysql_fetch_row($q_result);
     
     
      echo "<br>$record[vraag_id].<br>";
      echo "$record[vraag_omschrijving]<br>";
      echo "{";
      
    }
    
        $antwoord_code="antwoord_code";
        
    
    echo "$record[antwoord_omschrijving],";
    

    if($i==$aantal[0])
    {
      $i=1;

    }
    else
      $i++;
     
    if ($record[$antwoord_code] == 1){
    print (" =");
    } else if ($record[$antwoord_code] == 0){
    print (" ~");   echo "}";}
    
}

?>

[ Voor 13% gewijzigd door arjentjuh op 05-12-2005 11:05 ]

PunlArjen


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Het is wel een beetje basic hoor. Je zou zoiets kunnen doen
PHP:
1
2
3
4
5
$result = '{=' . $antwoorden[ 0 ];
for( $i = 1; $i < sizeof( $antwoorden ); $i++ ){
    $result .= ',~' . $antwoorden[ $i ];
}
$result .= '}';

Dit gaat natuurlijk ( expres ) niet direct in jouw code werken.

[ Voor 60% gewijzigd door Woy op 24-11-2005 14:21 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • WormLord
  • Registratie: September 2003
  • Laatst online: 10:10

WormLord

Devver

En die code van rwb is ook te schrijven zo te schrijven:
PHP:
1
2
3
<?
$result = '{=' . implode(',~', $antwoorden) . '}';
?>

[ Voor 19% gewijzigd door WormLord op 24-11-2005 14:22 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Als je code niet doet wat jij vindt dat hij moet doen zitten er natuulijk gewoon nog (semantische) fouten in.

Loop gewoon eens even regel voor regel door je code heen en probeer te begrijpen wat elke regel doet. Op dat moment is het ook niet zo lastig meer om te bepalen op welke plek je welke code neer moet zetten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
WormLord schreef op donderdag 24 november 2005 @ 14:22:
En die code van rwb is ook te schrijven zo te schrijven:
PHP:
1
2
3
<?
$result = '{=' . implode(',~', $antwoorden) . '}';
?>
inderdaad. Maar het was meer om te ilustreren hoe je zulke constructies in een willekeurige taal kan bouwen ( En een beetje omdat ik niet veel van php afweet en dus alle functies niet zo goed ken :P )

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • arjentjuh
  • Registratie: April 2004
  • Laatst online: 16-09-2023
Ik heb nu het volgende geprobeerd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php

error_reporting(E_ALL);
  include("verbinding.php");
  mysql_connect ("$dbhost","$username","$dbww");
  mysql_select_db ("$db") or die ("Foutje");


  $resultaat = mysql_query ("SELECT DISTINCT vragen.vraag_id, vragen.vraag_omschrijving, antwoord_omschrijving, antwoord_code FROM vragen,antwoorden WHERE vragen.vraag_id = antwoorden.vraag_id;");
  $i=1;
  while ($record = mysql_fetch_array($resultaat))

  {
    if($i==1)
    {
      $q="SELECT COUNT(vraag_id) FROM antwoorden WHERE vraag_id=".$record[0];
      $q_result=mysql_query($q);
      $aantal=mysql_fetch_row($q_result);
      echo "<br>" . $record['vraag_id'] . "<br>";
      echo $record['vraag_omschrijving'] . "<br>";
      echo "{";
    }
    echo $record['antwoord_omschrijving'] . ", ";
    
    if($i==$aantal[0])  
    {
      $i=1;

    }
    
    
    else
    $antwoorden="$record[antwoord_omschrijving]";
    $result = '{=' . $antwoorden[ 0 ];
    for( $i = 1; $i < sizeof( $antwoorden ); $i++ ){
    $result .= ',~' . $antwoorden[ $i ];
    }
    $result .= '}'; 
    }  
      
  
?>


Nu krijg ik dus het volgende (gedeelte ervan):

1
vraag_1
{antwoord_1,
1
vraag_1
{antwoord_2,
1
vraag_1
{antwoord_3,
1
vraag_1
{antwoord_4,

Nu komt vraag dus vaker voor en het = en ~ tekentje is nu ook weg het moet zo:
1.
vraag_1
{=antwoord_1, ~antwoord_2, ~antwoord3, ~antwoord4}

Sorry maar ik kom er dus echt niet uit heb van alles bekeken maar mijn php kennis is helaas niet zo goed. Ik hoop dat jullie me een stapje meer in de goede richting kunnen helpen alvast bedankt! :)

Edit:
Wat zijn trouwens:
semantische fouten?

[ Voor 21% gewijzigd door arjentjuh op 05-12-2005 11:04 ]

PunlArjen


Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10:10

WormLord

Devver

Een paar tips om je te helpen met debuggen:
  1. Lijn je code beter uit. Nu zijn de code-blokken niet echt duidelijk herkenbaar.
  2. Wat wil je met de 'else' op regel 32?
  3. En wat wil je precies met de var '$i'? Volgens mij word die nu voor 2 verschillende tellers gebruikt namelijk.

Acties:
  • 0 Henk 'm!

  • b19a
  • Registratie: September 2002
  • Niet online

Acties:
  • 0 Henk 'm!

  • arjentjuh
  • Registratie: April 2004
  • Laatst online: 16-09-2023
@Wormlord:
Met het else statement op regel 32 wil ik ervoor zorgen dat
antwoorden zo wordt weergegeven:
{=antwoord, ~antwoord2, ~antwoord3, ~antwoord4}

Het = en ~ tekentje is de antwoord_code alleen dan omgezet (= betekend goed antwoord ~ betekend fout antwoord)

Het is dus de bedoeling dat het er in zijn geheel zo uit ziet:
1. (vraag_id)
vraag_1 (vraag_omschrijving)
{=antwoord(antwoord_omschrijving), ~antwoord2, ~antwoord3, ~antwoord4}

Ik hoop dat je me kunt helpen want phphulp site werkt niet en we komen er echt niet uit :/

PunlArjen


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
nou dan zal ik het nog een keer in pseudo code neerzetten.
code:
1
2
3
4
5
6
7
8
$vragen = Selecteer alle vragen
$vraagnummer = 1
foreach( $vraag in $vragen )
{
    echo $vraagnummer++ . '<br>'
    echo $vraag.naam . '<br>'
    echo '{=' . implode(',~', $vraag.antwoorden ) . '}'
}

Hier is $vraag.antwoorden een array met de antwoorden die je hebt. en $vraag.naam de naam van de vraag. In jou voorbeeld komt het direct uit de database zul je daar wat anders neer moeten zetten. Maar je kunt het wel degenlijk op deze manier doen.

Schrijf nou eerst eens gewoon in nederlands stap voor stap op wat je wilt. Dan kun je dat daarna makkelijk vertalen naar php.

Dus echt stap voor stap wat je wilt.

code:
1
2
3
4
1. Haal alle vragen op
2. Loop alle vragen door
    2.1 Print de naam van de vraag
    2.2 Print de naam van het eerste antwoord met een '=' ervoor.

enz....

[ Voor 45% gewijzigd door Woy op 05-12-2005 13:39 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • arjentjuh
  • Registratie: April 2004
  • Laatst online: 16-09-2023
Eindelijk ik heb hem af dit is het geworden:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php

  include("verbinding.php");
  mysql_connect ("$dbhost","$username","$dbww");
  mysql_select_db ("$db") or die ("Foutje");
  
  
  
  $resultaat = mysql_query ("SELECT DISTINCT vragen.vraag_id, vragen.vraag_omschrijving, antwoord_omschrijving,
  antwoord_code FROM vragen,antwoorden WHERE vragen.vraag_id = antwoorden.vraag_id;");
  $i=1;
  while ($record = mysql_fetch_array($resultaat))

  {
    if($i==1)
    {
      $q="SELECT COUNT(vraag_id) FROM antwoorden WHERE vraag_id=".$record[0];
      $q_result=mysql_query($q);
      $aantal=mysql_fetch_row($q_result);

      echo "<br>" . $record['vraag_id'] . "<br>";
      echo $record['vraag_omschrijving'] . "<br>";
      echo "{";
    }
    
    
    if($i==$aantal[0])  
    {
      $i=1;
    
    }
    
    
    else
      $i++;
    $antwoord_code="antwoord_code";
    if ($record[$antwoord_code] == 1){
    print (" =");
    } 
    else if ($record[$antwoord_code] == 0){
    print (" ~");     
    } 
    
    
    if($i==count($aantal))  
    {
    
        echo $record['antwoord_omschrijving'] . "}";
    }
    else
    {
        echo $record['antwoord_omschrijving'] . ", ";
    }
    }   

?>


Is er nog een site hoe je de code netjes neerzet? in elk geval bedankt voor jullie hulp! _/-\o_

PunlArjen


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Hoezo doe je trouwens
PHP:
1
mysql_connect ("$dbhost","$username","$dbww");

en niet gewoon?
PHP:
1
mysql_connect ( $dbhost, $username, $dbww );

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • arjentjuh
  • Registratie: April 2004
  • Laatst online: 16-09-2023
@rwb:
Weet ik eigenlijk niet, heb het nu aangepast.
In elk geval bedankt.

PunlArjen


Acties:
  • 0 Henk 'm!

  • Quadro!
  • Registratie: Maart 2004
  • Laatst online: 19-09 15:53
Je kan in elk geval voortaan als "leidraad" aanhouden dat je strings moet quoten en dat je integers en variabelen gewoon unquoted kunt laten staan. Het werkt op deze manier ook wel, maar het "hoort" niet echt zo.

Acties:
  • 0 Henk 'm!

  • arjentjuh
  • Registratie: April 2004
  • Laatst online: 16-09-2023
Ok bedankt voor de tips! :)
Ik ga het script nu beter maken. Het werkt in elk geval dat is het belangrijkste.

Is het trouwens op een eenvoudige manier mogelijk om wat het script weergeeft
dit dus (gedeelte ervan):
1.
vraag_1
{ =antwoord_1, ~antwoord_2, ~antwoord_3, ~antwoord_4}

In een teksbestand te laten opslaan? is hier een script voor te vinden en/of uitleg?

Want het is dus de bedoeling van het script dat dit geexporteerd wordt en vervolgens geimporteerd kan worden. Handmatig opslaan kan natuurlijk ook maar als het zo kan is het helemaal mooi
Alvast bedankt voor jullie reacties en bedankt voor de al gegeven reacties :*)

PunlArjen


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Iestje meer inzet tonen en dus zelf even wat zoeken mag wel hoor ;)
Uitleg is zeker wel te vinden op de PHP site zelf: http://www.php.net/manual/en/ref.filesystem.php. Daar zit vast wel iets bruikbaars tussen :) (tip: fopen en fwrite bijv.)

Als je het aan de gebruikerskant wilt opslaan is het een kwestie van de juiste header meegeven (content-type bijv.) en vervolgens platte tekst als output genereren in PHP.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1