Hallo ich bin PHP Anfänger und habe ein Proble mit einem Script welches ich aus dem Internet leicht abgeändert habe. Es ist eine Kommentarfunktion (mit Bewertungsfunktion/ mit mysql), was zwar alles funktioniert, jedoch möchte ich hinzufügen, dass man einen Namen angeben kann. Das ist das Problem, denn ich bekomme es partout nicht hin diese "simple" Problem zu lösen. Jetzt erhoffe ich mir hier etwas Hilfe. Was muss ich ändern, damit der Name in die Datenbank eingetragen und wieder ausgegeben wird? Hier das script:

suggestions.php
PHP-Code:
<?php
require "connect.php";
require 
"suggestion.class.php";



// Converting the IP to a number. This is a more effective way
// to store it in the database:

$ip    sprintf('%u',ip2long($_SERVER['REMOTE_ADDR']));


// The following query uses a left join to select
// all the suggestions and in the same time determine
// whether the user has voted on them.

$result $mysqli->query("
    SELECT s.*, if (v.ip IS NULL,0,1) AS have_voted
    FROM suggestions AS s
    LEFT JOIN suggestions_votes AS v
    ON(
        s.id = v.suggestion_id
        AND v.day = CURRENT_DATE
        AND v.ip = 
$ip
    )
    ORDER BY s.rating DESC, s.id DESC
"
);

$str '';


if(!
$mysqli->error)
{
    
// Generating the UL
    
    
$str '<ul class="suggestions">';
    
    
/// Using MySQLi's fetch_object method to create a new
    // object and populate it with the columns of the result query:
    
    
while($suggestion $result->fetch_object('Suggestion'))
    {
        
$str.= $suggestion;    // Using the __toString() magic method.
    
}
        while(
$name $result->fetch_object('Name'))
    {
        
$str1.= $name;    // Using the __toString() magic method.
    
}

    
$str .='</ul>';
}
<!
DOCTYPE html>
<
html>
    <
head>
              
    </
head>
    <
body>
        <
p>Hier wird der Kommentar geschrieben.</p>
                    <
form id="suggest" action="" method="post" accept-charset="ISO-8859-1">
                        <
p>                
                        <
textarea id="suggestionText" name="line" cols="23" rows="5" placeholder="Puchline"></textarea><br />
                        <
input type="submit" value="" id="button" />
                        </
p>
                    </
form>
                <
h3 id="h">Hier werden die Kommentare ausgegeben</h3>
                <?
php
                    
echo $str;
                
?>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        <script src="script.js"></script>

    </body
</html>
script.js
PHP-Code:
$(document).ready(function(){
    
    var 
ul = $('ul.suggestions');
    
    
// Listening of a click on a UP or DOWN arrow:
    
    
$('div.vote span').live('click',function(){
        
        var 
elem        = $(this),
            
parent        elem.parent(),
            
li            elem.closest('li'),
            
ratingDiv    li.find('.rating'),
            
id            li.attr('id').replace('s',''),
            
v            1;

        
// If the user's already voted:
        
        
if(parent.hasClass('inactive')){
            return 
false;
        }
        
        
parent.removeClass('active').addClass('inactive');
        
        if(
elem.hasClass('down')){
            
= -1;
        }
        
        
// Incrementing the counter on the right:
        
ratingDiv.text(+ +ratingDiv.text());
        
        
// Turning all the LI elements into an array
        // and sorting it on the number of votes:
        
        
var arr = $.makeArray(ul.find('li')).sort(function(l,r){
            return +$(
'.rating',r).text() - +$('.rating',l).text();
        });

        
// Adding the sorted LIs to the UL
        
ul.html(arr);
        
        
// Sending an AJAX request
        
$.get('ajax.php',{action:'vote',vote:v,'id':id});
    });


    $(
'#suggest').submit(function(){
        
        var 
form        = $(this),
            
textField    = $('#suggestionText');
        
        
// Preventing double submits:
        
if(form.hasClass('working') || textField.val().length<3){
            return 
false;
        }
        
        
form.addClass('working');
        
        $.
getJSON('ajax.php',{action:'submit',content:textField.val()},function(msg){
            
textField.val('');
            
form.removeClass('working');
            
            if(
msg.html){
                
// Appending the markup of the newly created LI to the page:
                
$(msg.html).hide().appendTo(ul).slideDown();
            }
        });
        
        return 
false;
    });
}); 
ajax.php
PHP-Code:
<?php

require "connect.php";
require 
"suggestion.class.php";

// If the request did not come from AJAX, exit:
if($_SERVER['HTTP_X_REQUESTED_WITH'] !='XMLHttpRequest'){
    exit;
}

// Converting the IP to a number. This is a more effective way
// to store it in the database:

$ip    sprintf('%u',ip2long($_SERVER['REMOTE_ADDR']));

if(
$_GET['action'] == 'vote'){

    
$v = (int)$_GET['vote'];
    
$id = (int)$_GET['id'];

    if(
$v != -&& $v != 1){
        exit;
    }

    
// Checking to see whether such a suggest item id exists:    
    
if(!$mysqli->query("SELECT 1 FROM suggestions WHERE id = $id")->num_rows){
        exit;
    }
    
    
// The id, ip and day fields are set as a primary key.
    // The query will fail if we try to insert a duplicate key,
    // which means that a visitor can vote only once per day.
    
    
$mysqli->query("
        INSERT INTO suggestions_votes (suggestion_id,ip,day,vote)
        VALUES (
            
$id,
            
$ip,
            CURRENT_DATE,
            
$v
        )
    "
);

    if(
$mysqli->affected_rows == 1)
    {
        
$mysqli->query("
            UPDATE suggestions SET 
                "
.($v == 'votes_up = votes_up + 1' 'votes_down = votes_down + 1').",
                rating = rating + 
$v
            WHERE id = 
$id
        "
);
    }
    
}
else if(
$_GET['action'] == 'submit'){

    if(
get_magic_quotes_gpc()){
        
array_walk_recursive($_GET,create_function('&$v,$k','$v = stripslashes($v);'));
    }

    
// Stripping the content    
    
$_GET['content'] = htmlspecialchars(strip_tags($_GET['content']));
    
    if(
mb_strlen($_GET['content'],'utf-8')<3){
        exit;
    }
    
    
$mysqli->query("INSERT INTO suggestions SET suggestion = '".$mysqli->real_escape_string($_GET['content'])."'");
    
$mysqli->query("INSERT INTO suggestions SET name = '".$mysqli->real_escape_string($_GET['content'])."'");    
    
// Outputting the HTML of the newly created suggestion in a JSON format.
    // We are using (string) to trigger the magic __toString() method of the object.
    
    
echo json_encode(array(
        
'html'    => (string)(new Suggestion(array(
            
'id'            => $mysqli->insert_id,
            
'suggestion'    => $_GET['content'],
                
'name'    => $_GET['content']
        )))
    ));
}


?>
suggestion.class.php
PHP-Code:
<?php
class Suggestion
{
    private 
$data = array();
    
    public function 
__construct($arr = array())
    {
        if(!empty(
$arr)){
            
            
// The $arr array is passed only when we manually
            // create an object of this class in ajax.php
            
            
$this->data $arr;
        }
    }
    
    public function 
__get($property){
        
        
// This is a magic method that is called if we
        // access a property that does not exist.
        
        
if(array_key_exists($property,$this->data)){
            return 
$this->data[$property];
        }
        
        return 
NULL;
    }
    
    public function 
__toString()
    {
        
// This is a magic method which is called when
        // converting the object to string:
        
        
return '
        <li id="s'
.$this->id.'">
            <div class="vote '
.($this->have_voted 'inactive' 'active').'">
                <span class="up"></span>
                <span class="down"></span>
            </div>
            <div class="text">'
.$this->suggestion.'</div>
            <div class="name">'
.$this->name.'</div>
            <div class="rating">'
.(int)$this->rating.'</div>
        </li>'
;
    }
}

?>
<?php
class Name
{
    private 
$data = array();
    
    public function 
__construct($arr = array())
    {
        if(!empty(
$arr)){
            
            
// The $arr array is passed only when we manually
            // create an object of this class in ajax.php
            
            
$this->data $arr;
        }
    }
    
    public function 
__get($property){
        
        
// This is a magic method that is called if we
        // access a property that does not exist.
        
        
if(array_key_exists($property,$this->data)){
            return 
$this->data[$property];
        }
        
        return 
NULL;
    }
    
    public function 
__toString()
    {
        
// This is a magic method which is called when
        // converting the object to string:
        
        
return '
        <li id="s'
.$this->id.'">
            <div class="vote '
.($this->have_voted 'inactive' 'active').'">
                <span class="up"></span>
                <span class="down"></span>
            </div>
            <div class="text">'
.$this->name.'</div>
            <div class="name">'
.$this->name.'</div>
            <div class="rating">'
.(int)$this->rating.'</div>
        </li>'
;
    }
}

?>
connect.php
PHP-Code:
<?php

error_reporting
(E_ALL E_NOTICE);

$db_host 'localhost';
$db_user 'root';
$db_pass '';
$db_name 'poll';

@
$mysqli = new mysqli($db_host$db_user$db_pass$db_name);

if (
mysqli_connect_errno()) {
    die(
'<h1>Could not connect to the database</h1><h2>Please try again after a few moments.</h2>');
}

$mysqli->set_charset("utf8");


?>
Das Script ist hier in dem Zustand bevor ich selbst versucht habe, das Problem zu lösen. Wenn mir jemand helfen könnte, wäre ich sehr, sehr dankbar.
Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!