PHP og mysqli

Tags:    php

Hej alle jeg har et lille problem

jeg har denne her kode som virker...
-------------------------------------------------
<?
$mysqli = new mysqli("localhost", "root", "******", "comment");

echo '<font size="4" color="green">Leave a comment:</font>';
?>
<form action="<?$_SERVER['PHP_SELF'];?>" method="post">
<p><input type="text" name="name" value="Anonymous" size="30" maxlength="30" /> <small>Name</small></p>
<p><input type="text" name="comment" size="30" maxlength="250" /> <small>Comment</small></p>
<p><input type="submit" name="submit" value="Submit" /></p>
<input type="hidden" name="submitted" value="TRUE" />
</form>
<table border=1><tr><td>
<?
$query = "SELECT * FROM comments ORDER BY id DESC LIMIT 5";
$result = $mysqli->query($query);
while($data = $result->fetch_array(MYSQLI_ASSOC)) {
echo "</td></tr><tr><td>";
echo "<small><br>".$data['date']." - <b>". $data['name']."</b>";
echo "<br>".htmlspecialchars($data['comment'])."</small><br>";
}


$name = $_POST['name'];
$name = strip_tags($name);

$comment = $_POST['comment'];
$comment = strip_tags($comment);

$date = date("r");
$ip = getenv("REMOTE_ADDR");

if (!empty($comment)) {

if (empty($name)) {
echo "<br><b>You didn't include a name.</b>";
}
if (empty($comment)) {
echo "<br><b>You forgot to type in a comment.</b>";
}

$query = "INSERT INTO comments (name, comment, date, ip) VALUES ('$name', '$comment', '$date', '$ip')";
$mysqli->query($query);
echo '<meta http-equiv="refresh" content="1" />';

}

$mysqli->close();
?>
-----------------------------------------------

Men når jeg så laver lidt om på den. ved at sætte en ekstra input ind så virker det ikke mere og jeg ved simpelthen ikke hvorfor...

Her er koden efter ændringen
-----------------------------------------------
<?
$mysqli = new mysqli("localhost", "user", "******", "comment");

echo '<font size="4" color="green">Leave a comment:</font>';
?>
<form action="<?$_SERVER['PHP_SELF'];?>" method="post">
<p><input type="text" name="name" value="Anonymous" size="30" maxlength="30" /> <small>Name</small></p>
<p><input type="text" name="comment" size="30" maxlength="250" /> <small>Comment</small></p>
<p><input type="text" name="mail" size="30" maxlength="250" /> <small>E-mail</small></p>
<p><input type="submit" name="submit" value="Submit" /></p>
<input type="hidden" name="submitted" value="TRUE" />
</form>
<table border=1><tr><td>
<?
$query = "SELECT * FROM comments ORDER BY id DESC LIMIT 5";
$result = $mysqli->query($query);
while($data = $result->fetch_array(MYSQLI_ASSOC)) {
echo "</td></tr><tr><td>";
echo "<small><br>".$data['date']." - <b>". $data['name']."</b>";
echo "<br>".htmlspecialchars($data['comments'])."</small><br>";
}


$name = $_POST['name'];
$name = strip_tags($name);

$comment = $_POST['comments'];
$comment = strip_tags($comments);

$mail = $_POST['mail'];
$mail = strip_tags($mail);

$date = date("r");
$ip = getenv("REMOTE_ADDR");

if (!empty($comment)) {

if (empty($name)) {
echo "<br><b>You didn't include a name.</b>";
}
if (empty($comment)) {
echo "<br><b>You forgot to type in a comment.</b>";
}
if (empty($mail)) {
echo "<br><b>You forgot to type in a mail.</b>";
}

$query = "INSERT INTO comments (name, comments, mail, date, ip) VALUES ('$name', '$comments', '$mail', '$date', '$ip')";
$mysqli->query($query);
echo '<meta http-equiv="refresh" content="1" />';

}

$mysqli->close();
?>
-----------------------------------------------

Håber nogle kan hjælpe mig :-)



Indlæg senest redigeret d. 25.06.2009 14:21 af Bruger #15115
What? Hvad er Mysqli ? Mener du ikke mysql??



Ved ikke helt ham jeg fik koderne af sagde det var mysqli og nogle steder står der også mysqli

f.eks. $mysqli = new mysqli("localhost", "root", "******", "comment");



Måske skulle du skynde dig at fjerne mysql password fra den 2. del af koden. (Eller en admin hvis de ser her).



hej lasse tak for det



Den kode er godt nok sjov :):
Fold kodeboks ind/udKode 

vil aldrig nogen sinde printe en fejlbesked du kommer jo kun til testen hvis den ikke er tom.

Udover det kan jeg kun lige se en ting du kan have fejlet med og det er ikke at udvide mysql tabellen med en mail kolonne.



1) Det ville være super hvis du gad at sætte din kode ind i [code]kode her[/code] tags. Det gør din kode meget mere overskuelig.

2) Er du sikker på at der er et felt i din SQL table der hedder "mail"?

3) Jonas: mysqli er et OO interface for programmering af MySQL. Meget lettere og mere overskueligt.

4) Tror også det ville være bedst hvis du fjernede din IP. Hvis du ikke har alt for megen træning i sikring af en server, kan det evt. være et let offer for en cracker.



Indlæg senest redigeret d. 25.06.2009 14:14 af Bruger #11328
Hej jacob

1) her er koden så

Før
Fold kodeboks ind/udKode 

Efter
Fold kodeboks ind/udKode 


2)Ja det er jeg sikker på og det ligner feltet name og comment på en prik udover navnet som er mail

3)Okay det viste jeg ikke

4)okay mange tak for det



I denne linje fra den oprindelige kode:
Fold kodeboks ind/udKode 

er du kommet til at tilføje et 's' til kolonnen 'comment', så du nu kalder den 'comments' i den nye kode:
Fold kodeboks ind/udKode 

Hvis du i den nye kode ændrer linjen til
Fold kodeboks ind/udKode 

gætter jeg på at det virker...

EDIT:
Du skal vist også ændre navnet på din variable i samme linje, så den nye linje kommer til at være:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 25.06.2009 15:50 af Bruger #13559
What? Hvad er Mysqli ? Mener du ikke mysql??

Nej, han mener mysqli. MySQL Improved, står det for. Forskellen er at mysqli kan bruges objektorienteret, som for eksempel i den kode trådstarter viser os.

http://dk.php.net/mysqli



Hej AH mange tak for svaret det var lige den hjælp jeg skulle bruge... :-)



t