Menü

  Login

  Shoutbox

  Forum » Fragen zu Ilch » Andere Dinge » PHP mysql Fehler


PHP mysql Fehler
corian
Grünschnabel

User Pic

Posts: 21
# 25.01.2013 - 20:48:24
    zitieren



Hey Mairus,
Ich hoffe mal du kannst mir helfen.

Ich bin gerade dabei ein favorit like für die usergallery zu erstellen.

ich stehe nur im mom wirklich auf dem schlauch.
es geht darum das er die klicks zählen soll und an hand der ip weiss wer gevotet hat und wer nicht.
also die klicks zählt er.
einmal, k.p. frag mich warum.. hatte er auch schon die ip übertragen mit der dazu gehörigen id.

vielleicht kannst du dir ja mal kurz den code anschaun. die tabelen in der datenbank sind soweit mit einander verknüpft.

 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:
 
<?php

define 
'main' TRUE );
require_once(
'C:/Inetpub/vhosts/........../httpdocs/include/includes/config.php');
require_once(
'C:/Inetpub/vhosts/........./httpdocs/include/includes/func/db/mysql.php');
db_connect(); 
echo 
__LINE__;
flush();
$ip=$_SERVER['REMOTE_ADDR']; 

if(isset(
$_POST['id']))
{
$id=$_POST['id'];
$ip_sql db_query("SELECT ip_add FROM prefix_image_ip where img_id_fk='$id' and ip_add='$ip'");
$count db_num_rows($ip_sql);
if(
$count==0)
{
$sql "UPDATE prefix_usergallery set love=love+1 where id='$id'";
db_query$sql);
$sql_in "INSERT into image_ip (ip_add,img_id_fk) values ('$ip','$id')";
db_query$sql_in);
$result db_query("SELECT love FROM prefix_usergallery where id='$id'");
$row db_fetch_array($result);
$love=$row['love'];
?>
<span class="on_img" align="left"><?php echo $love?></span>
<?php
}
else
{
echo 
'Du hast bereits gevotet!';
}

}



?>


„Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“
corian
Grünschnabel

User Pic

Posts: 21
# 26.01.2013 - 09:51:38
    zitieren



So...jetzt läuft es. Der iis Server hat mit der $_SERVER['REMOTE_ADDR']; abfrage Probleme. Jetzt habe ich nur noch ein problem und zwar gibt erst mir das erste Echo nicht aus.

„Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“
Mairu
Administrator

User Pic

Posts: 1908
# 26.01.2013 - 09:58:50
    zitieren



Mhh ok, also in für die Ip gibt es bei ilch auch eine Funktion getip(), weiter hast du bei dem INSERT das prefix_ der Tabelle vergessen.

Das mit dem echo kann ich nicht erklären, eine wichtige Frage für mich ist, wo hast du die Datei im Einsatz, da du Dateien direkt einbindest, und anscheinend nicht über index.php "gehst".

Weiter würde ich empfehlen, wenn ein Benutzer angemeldet ist über die UserId statt der IP Adresse zu gehen, da sich diese nicht ändert. Das ist natürlich nur dann wichtig, wenn ein Benutzer nur einmal und nicht einmal pro Tag abstimmen können soll.
corian
Grünschnabel

User Pic

Posts: 21
# 26.01.2013 - 10:28:29
    zitieren



hey. also mal kurz zur erklärung. das ganze läft über ajax und das ist die config php.
mein aktueller code sieht so aus.
 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:
 
<?php

define 
'main' TRUE );
require_once(
'C:/Inetpub/vhosts/......../httpdocs/include/includes/config.php');
require_once(
'C:/Inetpub/vhosts/....../httpdocs/include/includes/func/db/mysql.php');
db_connect(); 
$ip=getenv("REMOTE_ADDR"); 
if (isset(
$_POST['id']))
{
$id=$_POST['id'];
$ip_sql db_query("SELECT ip_add FROM prefix_image_ip where img_id_fk='$id' and ip_add='$ip'");
$count db_num_rows($ip_sql);
if(
$count==0){
$sql "UPDATE prefix_usergallery set love=love+1 where id='$id'";
db_query$sql);
$sql_in "INSERT into prefix_image_ip (ip_add,img_id_fk) values ('$ip','$id')";
db_query$sql_in);
$result db_query("SELECT love FROM prefix_usergallery where id='$id'");
$row db_fetch_array($result);
$love=$row['love'];

echo 
'Danke';

}
else
{
echo 
'Du hast bereits gevotet';
}

}



?>





ja die frage der sicherheit hatte ich mir auch schon gestellt aber ohne das einbinden funktioniert es nicht. hast du da noch einen anderen vorschlag...und wie gesagt das erste echo nimmt er einfach nicht...

mfg Zwinker


Ahso und die Datei liegt im Ordner contents.


Zuletzt modifiziert von corian am 28.01.2013 - 19:24:33

„Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“
Mairu
Administrator

User Pic

Posts: 1908
# 26.01.2013 - 10:37:05
    zitieren



Ja auch ajax abfragen können einfach über das "normale" System des Seitenaufrufs bei ilch gemacht werden.

Also eine Datei in den contents Order legen, beispielt voteimg.php, der Adresse für den Aufruf ist dann index.php?voteimg

Dann ist die Verbindung zur Datenbank schon hergestellt und alle erforderlichen Dateien eingebunden. So kannst du auf alle nötigen Funktionen und die Session Zugreifen, um z.B. auch Rechteabfragen zu haben oder den Anmeldestatus (User/Gast etc.) des Benutzers auslesen.

Du darfst dann halt einfach nicht die Designklasse verwenden.

Wenn du die Konfigrationsoption Zugriff auf nicht im Menü verlinkte Module für alle? auf nein gestellt hast, muss du zusätzlich in der Navigation (z.B. Menü5 um es "unsichtbar" zu haben) einen Eintrag für diese Seite erstellen.
corian
Grünschnabel

User Pic

Posts: 21
# 26.01.2013 - 11:21:31
    zitieren



Ah ja jetzt habe ich es verstanden. Ich hatte im script den direkten Pfad zur Datei angegeben und jetzt mit Index.php funktioniert es. Danke dir.
Was aber immer noch komisch ist das er das erste echo nicht ausgibt selbst ohne alles.

„Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“
Mairu
Administrator

User Pic

Posts: 1908
# 26.01.2013 - 17:41:48
    zitieren



Meinst eigentlich jegliche echo, also in deinem Fall das Danke, du hattest ja vorher noch ein echo __LINE__ drin, ich dachte du meinst das.

Bei ajax muss du mittels Javascript ja noch angeben was mit der Antwort, die vom Server erhältst passiert.
Wenn du z.B. Firebug (Addon für Firefox) oder die Entwicklerconsole von Chrome nutzt, solltest du dir die Antwort vom Server anschauen können, da sollte dann auch Danke drin stehen.
corian
Grünschnabel

User Pic

Posts: 21
# 26.01.2013 - 20:32:49
    zitieren



 Zitat von Mairu

Wenn du z.B. Firebug (Addon für Firefox) oder die Entwicklerconsole von Chrome nutzt, solltest du dir die Antwort vom Server anschauen können, da sollte dann auch Danke drin stehen.


also das war eine SUPER idee, firebug hat mir promt 2 fehler angezeigt---beide behoben und siehe da jetzt funktioniert es wie es soll.

DANKE dir Mairu

„Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“