Script functie woorden+Antwoord uit database halen

Status
Niet open voor verdere reacties.

wouter0100

Nieuwe gebruiker
Lid geworden
19 nov 2009
Berichten
4
Hoi iedereen,

Ik ben hier nog niet zo lang actief maar ik heb een script die niet goed functioneert..

Ik begon met deze script:

Code:
<?
    class Resp {
        var $xmlData;
        
        function send() {
            $this->xmlData .= '</Response>';
            header('Content-Type: text/xml');
            echo $this->xmlData;
        }
        
        function init() {
            $this->xmlData = '<?xml version="1.0"?>';
            $this->xmlData .= '<Response>';
        }
        
        function addMsg($msg, $newnick = '') {
            $this->xmlData .= '<Message'.($newnick != '' ? ' nick="'.htmlentities($newnick, ENT_QUOTES).'"' : '').'>';
            $this->xmlData .= htmlentities($msg, ENT_QUOTES);
            $this->xmlData .= '</Message>';
        }
        
        function buzzer() {
            $this->xmlData .= '<Buzzer />';
        }
        
        function newNick($nick) {
            $this->xmlData .= '<Nick>'.htmlentities($nick, ENT_QUOTES).'</Nick>';
        }

        function newPSM($psm) {
            $this->xmlData .= '<PSM>'.htmlentities($psm, ENT_QUOTES).'</PSM>';
        }
        
        function leave() {
            $this->xmlData .= '<Leave />';
        }
    }
    
    // Hier de gehele woordenlijst
    $woorden = array( // Voeg alle woorden hieronder toe
        'Woord' => 'Antwoord',
'Woord => 'Antwoord');
    $anders = Helaas, dit woord staat niet in mijn gegevens!'; // Dit wordt gezegd als de bot het niet snapt
    
    // Het script, hier niets veranderen
    $resp = new Resp();
    $resp->init();
    $msg = str_replace(array(':', ')', '(', ';', '\'', '"', '?', '!'), '', strip_tags(strtolower(base64_decode($_POST['msg']))));
    if(isset($woorden[$msg])) {
        $resp->addMsg($woorden[$msg]);
    } else $resp->addMsg($anders);
    $resp->send();
?>

En in die script wil ik iets maken dat hij automatich het "Woord" En "Antwoord" uit de database haalt..
Tabel heet: msnbot
En de 2 kleine tabels (Ik weet niet hoe je dat noemt) heten: woord , antwoord
En nu zit ik met deze script maar die werkt niet helemaal:

Code:
<?
    class Resp {
        var $xmlData;
        
        function send() {
            $this->xmlData .= '</Response>';
            header('Content-Type: text/xml');
            echo $this->xmlData;
        }
        
        function init() {
            $this->xmlData = '<?xml version="1.0"?>';
            $this->xmlData .= '<Response>';
        }
        
        function addMsg($msg, $newnick = '') {
            $this->xmlData .= '<Message'.($newnick != '' ? ' nick="'.htmlentities($newnick, ENT_QUOTES).'"' : '').'>';
            $this->xmlData .= htmlentities($msg, ENT_QUOTES);
            $this->xmlData .= '</Message>';
        }
        
        function buzzer() {
            $this->xmlData .= '<Buzzer />';
        }
        
        function newNick($nick) {
            $this->xmlData .= '<Nick>'.htmlentities($nick, ENT_QUOTES).'</Nick>';
        }

        function newPSM($psm) {
            $this->xmlData .= '<PSM>'.htmlentities($psm, ENT_QUOTES).'</PSM>';
        }
        
        function leave() {
            $this->xmlData .= '<Leave />';
        }
    }

    // Hier de gehele woordenlijst
    $woorden = array( // Voeg alle woorden hieronder toe
	require_once('connect.php');
    $sql = "
        SELECT woord, antwoord
        FROM msnbot
        ";
    if (!$res = mysql_query ($sql)) {
        echo '<pre>';
        echo htmlentities ($sql);
        trigger_error (mysql_error ());
        echo '</pre>';
    }
    else {
		$tellen = mysql_num_rows($res);
		$teller = 0; // teller start met 0
        while ($row = mysql_fetch_assoc ($res)) {
			$teller++; // teller eentje verhogen (1ste is dus nummer 1, 2de nnummer 2, etc..)
			if($teller == $tellen){ 
				echo nl2br(stripslashes($row['woord'])) .' => '. nl2br(stripslashes($row['antwoord'])) .');';
			}else{
				echo nl2br(stripslashes($row['woord'])) .' => '. nl2br(stripslashes($row['antwoord'])) .',';
			}
		}
    }
    $anders = 'Wij zijn nog bezig met deze BOT!'; // Dit wordt gezegd als de bot het niet snapt

    // Het script, hier niets veranderen
    $resp = new Resp();
    $resp->init();
    $msg = str_replace(array(':', ')', '(', ';', '\'', '"', '?', '!'), '', strip_tags(strtolower(base64_decode($_POST['msg']))));
    if(isset($woorden[$msg])) {
        $resp->addMsg($woorden[$msg]);
    } else $resp->addMsg($anders);
    $resp->send();
?>
Kan iemand mischien de fouten eruit halen?

Alvast bedankt! :d
 
De "grote tabel" heet een "Database" en de "kleine tabellen" heten "Tabellen" ;)

Wat werkt er niet? Als we dat niet weten kunnen we het ook niet verbeteren... krijg je foutmeldingen, zie je vreemd gedrag, wat gebeurd er?
 
Hallo,
ik heb een error met die onderste script die kunt u zelf bekijken op:
http://snabbo.nl/msnbot.php
Dat is mijn website en het bestand wat verbinding zou moeten maken met een database (msnbot)
http://snabbo.nl/connect.php
bestaad ook.
Ik heb een progamatje dat verbinding maakt met http://snabbo.nl/msnbot.php en dan automatich met mijn MSN verbind:
msnprohacker@live.nl (Moet nog een goed email aanmaken)
maar als je de website niet kan bekijken, dit is de error:
Code:
Parse error: syntax error, unexpected ';', expecting ')' in /home/snabbonl/domains/snabbo.nl/public_html/msnbot.php on line 41
Alvast bedankt!
 
Die foutmelding wordt veroorzaakt door regel 40:
PHP:
$woorden = array( // Voeg alle woorden hieronder toe
Je hebt hier wel een haakje openen, maar geen haakje sluiten. Zo zou het wel moeten werken (of in ieder geval geen foutmelding meer moeten geven):
PHP:
$woorden = array(); // Voeg alle woorden hieronder toe
 
Hoi, nu komt er: Hoi => Hoi);Wij zijn nog bezig met deze BOT! maar er moet komen te staan: Wij zijn nog bezig met deze BOT! alvast bedankt :D
 
Heb je de aanhalingstekens en haakjes op de juiste plek gezet?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan