PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit PHP/MySQL



Underserial
22.06.2007, 13:52
Kann mir mal jemand bitte der sich mit mit Homepages kennt behilflich sein.

Bitte nicht hier im Forum sondern per PN.

Danke!

Lukas
22.06.2007, 13:54
a) wieso denn nicht oeffentlich? Da wirst du vermutlich schneller Hilfe bekommen (mal abgesehen davon haben hier vermutlich viele Leute keine Lust, Privat-Support zu leisten...)
b) Wieso postest du das hier und nicht im Webentwickler-Forum?

Underserial
22.06.2007, 13:59
a) Weil ich ihm dann die Daten geben könnte ohne das irgendwas passiert.
b) weils ein Programmierungsprob ist

Aber sehs dir selber an www.esdi-page.de ich find den Fehler in der index.php leider nicht....

Lukas
22.06.2007, 14:09
b) weils ein Programmierungsprob istAber ein Problem mit Website-Programmierung, wofuer das Webentwickler-Forum da ist.


a) Weil ich ihm dann die Daten geben könnte ohne das irgendwas passiert.
[...]
Aber sehs dir selber an www.esdi-page.de ich find den Fehler in der index.php leider nicht....
Du kannst den Sourcecode auch einfach ins Forum posten, das ist die gaengige Vorgehensweise. So musst du keine Login-Daten an irgendjemanden weitergeben, und alle koennen versuchen, dir zu helfen. Und ohne den Source helfen die Fehlermeldungen auf der Seite herzlich wenig weiter.

Underserial
22.06.2007, 14:19
".$arr[1].""; }else{ $submenu.= "".$arr[1].""; } }$res=mysql_query("SELECT * FROM menu ORDER by name");while($arr=mysql_fetch_row($res)){ if ($arr[2]==0) { $idee=$arr[0]; $resulu=mysql_query("SELECT * FROM content WHERE id = $idee ORDER BY id LIMIT 1"); $cona=mysql_fetch_array($resulu); $conit=$cona[0]; }else{ $conit=$arr[2]; } if ($sub==$arr[0]) { $menu.= "".$arr[1].""; }else{ $menu.= "".$arr[1].""; } }$res=mysql_query("SELECT * FROM box");while($arr=mysql_fetch_row($res)){ if($arr[3]==1) { $box_left.=file_get_contents("templates/box.tpl")."
"; $box_left=str_replace("{box_title}",$arr[1],$box_left); $box_left=str_replace("{box_con}",$arr[2],$box_left); }else{ $box_right.=file_get_contents("templates/box.tpl")."
"; $box_right=str_replace("{box_title}",$arr[1],$box_right); $box_right=str_replace("{box_con}",$arr[2],$box_right); }}$res=mysql_query("SELECT * FROM content WHERE id='$con'");$arr=mysql_fetch_array($res);$con_center=file_get_contents("templates/box.tpl");$con_center=str_replace("{box_title}",$arr[1],$con_center);$con_center=str_replace("{box_con}",$arr[2],$con_center);$con_info=file_get_contents("templates/box.tpl"); $con_info=str_replace("{box_title}",$info_name,$con_info);$con_info=str_replace("{box_con}",$info_con,$con_info);$con_menu=file_get_contents("templates/box.tpl");$con_menu=str_replace("{box_title}","Hauptmenü",$con_menu);$con_index=file_get_contents("templates/index.tpl");$con_index=str_replace("{menu}",$menu,$con_index);$con_index=str_replace("{center}",$con_center,$con_index);$con_index=str_replace("{box_right}",$box_right,$con_index);$con_index=str_replace("{box_left}",$box_left,$con_index);$con_index=str_replace("{leftmenu}",$con_menu,$con_index);$con_index=str_replace("{box_con}",$submenu,$con_index);$con_index=str_replace("{info}",$con_info,$con_index);echo $con_index;?>

Das ist die index.php

Lukas
22.06.2007, 14:36
".$arr[1].""; }else{ $submenu.= "".$arr[1].""; } }$res=mysql_query("SELECT * FROM menu ORDER by name");while($arr=mysql_fetch_row($res)){ if ($arr[2]==0) { $idee=$arr[0]; $resulu=mysql_query("SELECT * FROM content WHERE id = $idee ORDER BY id LIMIT 1"); $cona=mysql_fetch_array($resulu); $conit=$cona[0]; }else{ $conit=$arr[2]; } if ($sub==$arr[0]) { $menu.= "".$arr[1].""; }else{ $menu.= "".$arr[1].""; } }$res=mysql_query("SELECT * FROM box");while($arr=mysql_fetch_row($res)){ if($arr[3]==1) { $box_left.=file_get_contents("templates/box.tpl")."
"; $box_left=str_replace("{box_title}",$arr[1],$box_left); $box_left=str_replace("{box_con}",$arr[2],$box_left); }else{ $box_right.=file_get_contents("templates/box.tpl")."
"; $box_right=str_replace("{box_title}",$arr[1],$box_right); $box_right=str_replace("{box_con}",$arr[2],$box_right); }}$res=mysql_query("SELECT * FROM content WHERE id='$con'");$arr=mysql_fetch_array($res);$con_center=file_get_contents("templates/box.tpl");$con_center=str_replace("{box_title}",$arr[1],$con_center);$con_center=str_replace("{box_con}",$arr[2],$con_center);$con_info=file_get_contents("templates/box.tpl"); $con_info=str_replace("{box_title}",$info_name,$con_info);$con_info=str_replace("{box_con}",$info_con,$con_info);$con_menu=file_get_contents("templates/box.tpl");$con_menu=str_replace("{box_title}","Hauptmenü",$con_menu);$con_index=file_get_contents("templates/index.tpl");$con_index=str_replace("{menu}",$menu,$con_index);$con_index=str_replace("{center}",$con_center,$con_index);$con_index=str_replace("{box_right}",$box_right,$con_index);$con_index=str_replace("{box_left}",$box_left,$con_index);$con_index=str_replace("{leftmenu}",$con_menu,$con_index);$con_index=str_replace("{box_con}",$submenu,$con_index);$con_index=str_replace("{info}",$con_info,$con_index);echo $con_index;?>

Das ist die index.php

Das wird wohl kaum der komplette Code sein, da fehlt ja schon allein das <?php. Desweiteren waere es nett, wenn du den Code mal lesbar formatierst (und am besten in [php] statt [code] schreibst).

Underserial
22.06.2007, 14:40
<?include("admin/config.inc.php");include("admin/var.inc.php");if(mysql_connect($sql_host, $sql_user, $sql_pass)){ mysql_select_db($sql_db);}else{ error("Keine DB Verbindung m&ouml;glich","Die Verbindung zur Datenbank konnte nicht hergestellt werden");}$sub=htmlspecialchars($_GET['sub']);$con=htmlspecialchars($_GET['con']);if($sub==""){ $sub=$startcat; $con=$startpage;
}
if($con=="")
{
$con=$startpage;
}


$res=mysql_query("SELECT * FROM content WHERE submenu = $sub ORDER by name");
while($arr=mysql_fetch_row($res))
{
if ($con==$arr[0])
{
$submenu.= "<a class=\"left_mark\" href=\"index.php?con=".$arr[0]."&sub=".$arr[3]."\">".$arr[1]."</a>";
}else{
$submenu.= "<a class=\"left\" href=\"index.php?con=".$arr[0]."&sub=".$arr[3]."\">".$arr[1]."</a>"; } }$res=mysql_query("SELECT * FROM menu ORDER by name");while($arr=mysql_fetch_row($res)){ if ($arr[2]==0) { $idee=$arr[0]; $resulu=mysql_query("SELECT * FROM content WHERE id = $idee ORDER BY id LIMIT 1"); $cona=mysql_fetch_array($resulu); $conit=$cona[0]; }else{ $conit=$arr[2]; } if ($sub==$arr[0]) { $menu.= "<a class=\"top_mark\" href=\"index.php?con=".$conit."&sub=".$arr[0]."\">".$arr[1]."</a>"; }else{ $menu.= "<a class=\"top\" href=\"index.php?con=".$conit."&sub=".$arr[0]."\">".$arr[1]."</a>"; } }$res=mysql_query("SELECT * FROM box");while($arr=mysql_fetch_row($res)){ if($arr[3]==1) { $box_left.=file_get_contents("templates/box.tpl")."<br>"; $box_left=str_replace("{box_title}",$arr[1],$box_left); $box_left=str_replace("{box_con}",$arr[2],$box_left); }else{ $box_right.=file_get_contents("templates/box.tpl")."<br>"; $box_right=str_replace("{box_title}",$arr[1],$box_right); $box_right=str_replace("{box_con}",$arr[2],$box_right); }}$res=mysql_query("SELECT * FROM content WHERE id='$con'");$arr=mysql_fetch_array($res);$con_center=file_get_contents("templates/box.tpl");$con_center=str_replace("{box_title}",$arr[1],$con_center);$con_center=str_replace("{box_con}",$arr[2],$con_center);$con_info=file_get_contents("templates/box.tpl");
$con_info=str_replace("{box_title}",$info_name,$con_info);$con_info=str_replace("{box_con}",$info_con,$con_info);$con_menu=file_get_contents("templates/box.tpl");$con_menu=str_replace("{box_title}","Hauptmen&uuml;",$con_menu);$con_index=file_get_contents("templates/index.tpl");$con_index=str_replace("{menu}",$menu,$con_index);$con_index=str_replace("{center}",$con_center,$con_index);$con_index=str_replace("{box_right}",$box_right,$con_index);$con_index=str_replace("{box_left}",$box_left,$con_index);$con_index=str_replace("{leftmenu}",$con_menu,$con_index);$con_index=str_replace("{box_con}",$submenu,$con_index);$con_index=str_replace("{info}",$con_info,$con_index);echo $con_index;?>

Lukas
22.06.2007, 15:44
Okay, da laesst sich auf den ersten Blick nichts finden. Gib mal nach der Query die MySQL-Fehlermeldungen aus (echo mysql_error();).

Jesus_666
22.06.2007, 19:02
Der Thread hat hier wirklich nichts verloren.


BTW, wir sollten wirklich mal Richtlinien posten, wie man Hilfeanfragen am besten formuliert, um schnell gute Antworten zu kriegen. Das würde vielleicht einiges schneller machen.


jesus_666@multimediaxis Programmierung $ mv "HP Fehler?!" "../Webentwicklung/Problem mit PHP/MySQL"

mitaki
22.06.2007, 20:06
Codeformatierung ist ein essenzieller Bestandteil, du solltest mehr Wert darauf legen. Darum epmfehle ich auch <?php statt <? zu verwenden, weil <?php Konfigurationsunabhängig ist.

Bei Daten die vom Benutzer kommen solltest du nicht nur die HTML-Sonderzeichen maskieren, sonder auch Zeichen, die der SQL-Abfrage gefährlich werden könnten. MySQL kennt daher die Funktion mysql_real_escape_string().

Außerdem solltest du die Werte nicht einfach so in die Abfrage einbauen, sondern '' (Korrektur: auch hier sind es einfache Anführungszeichen) um die einzufügenden Werte schreiben, damit der Variableninhalt als zusammenhängend erkannt wird.

Ich empfehle dir weiterhin immer einfache Anführungszeichen (') zu verwenden, da da einen kleinen Performanceboos mit bringt. Außerdem musst du dann nicht alle " escapen.

Auch finde ich es nicht gerade gut, wenn du die Variablen als Teil des Strings schreibst (bezogen auf die Abfrage, an anderer Stelle scheint es zu passen). ...string' . $vari . 'string... wäre nicht so anfällig für Fehler.

Underserial
23.06.2007, 10:30
Codeformatierung ist ein essenzieller Bestandteil, du solltest mehr Wert darauf legen. Darum epmfehle ich auch <?php statt <? zu verwenden, weil <?php Konfigurationsunabhängig ist.

Bei Daten die vom Benutzer kommen solltest du nicht nur die HTML-Sonderzeichen maskieren, sonder auch Zeichen, die der SQL-Abfrage gefährlich werden könnten. MySQL kennt daher die Funktion mysql_real_escape_string().

Außerdem solltest du die Werte nicht einfach so in die Abfrage einbauen, sondern '' (Korrektur: auch hier sind es einfache Anführungszeichen) um die einzufügenden Werte schreiben, damit der Variableninhalt als zusammenhängend erkannt wird.

Ich empfehle dir weiterhin immer einfache Anführungszeichen (') zu verwenden, da da einen kleinen Performanceboos mit bringt. Außerdem musst du dann nicht alle " escapen.

Auch finde ich es nicht gerade gut, wenn du die Variablen als Teil des Strings schreibst (bezogen auf die Abfrage, an anderer Stelle scheint es zu passen). ...string' . $vari . 'string... wäre nicht so anfällig für Fehler.

Ok, mein Freund.

Ich habe leider keine Ahnung von was du da redest ich hab das nicht selbst gecodet.

Sorry.

mitaki
23.06.2007, 11:06
Ok, mein Freund.

Ich habe leider keine Ahnung von was du da redest ich hab das nicht selbst gecodet.

Sorry.
Und wo ist der ••••••••r, der gecodet hat?

Versuche es mit dieser überarbeiteten Version, eventuell genügt das.
AUch wenn nicht, die teils bessere Formatierung hilft bei der Fehlersuche.

<?php

include('admin/config.inc.php');
include('admin/var.inc.php');

if( mysql_connect($sql_host, $sql_user, $sql_pass) ) {
mysql_select_db($sql_db);
} else {
error('Keine DB Verbindung m&ouml;glich','Die Verbindung zur Datenbank konnte nicht hergestellt werden');
}

$sub=htmlspecialchars($_GET['sub']);
$con=htmlspecialchars($_GET['con']);

if($sub=='') {
$sub=$startcat;
$con=$startpage;
}

if($con=='') {
$con=$startpage;
}

$res=mysql_query('SELECT * FROM content WHERE submenu = "' . $sub . '" ORDER by name;');

while($arr=mysql_fetch_row($res))
{
if ($con==$arr[0])
{
$submenu.= '<a class="left_mark" href="index.php?con=' . $arr[0] . '&amp;sub=' . $arr[3] . '">' . $arr[1] . '</a>';
}else{
$submenu.= '<a class="left" href="index.php?con=' . $arr[0] . '&amp;sub=' . $arr[3] . '">' . $arr[1] . '</a>';
}
}

$res=mysql_query('SELECT * FROM menu ORDER by name;');

while($arr=mysql_fetch_row($res)) {
if ($arr[2]==0) {
$idee=$arr[0];
$resulu=mysql_query('SELECT * FROM content WHERE id = ' . $idee . ' ORDER BY id LIMIT 1;');
$cona=mysql_fetch_array($resulu);
$conit=$cona[0];
}else{
$conit=$arr[2];
}

if ($sub==$arr[0]) {
$menu.= '<a class="top_mark" href="index.php?con=' . $conit . '&amp;sub=' . $arr[0] . '">' . $arr[1] . '</a>';
}else{
$menu.= '<a class="top" href="index.php?con=' . $conit . '&amp;sub=' . $arr[0] . '">' . $arr[1] . '</a>';
}
}

$res=mysql_query('SELECT * FROM box');

while($arr=mysql_fetch_row($res)) {
if($arr[3]==1) {
$box_left.=file_get_contents('templates/box.tpl') . '<br>';
$box_left=str_replace('{box_title}',$arr[1],$box_left);
$box_left=str_replace('{box_con}',$arr[2],$box_left);
}else{
$box_right.=file_get_contents('templates/box.tpl').'<br>';
$box_right=str_replace('{box_title}',$arr[1],$box_right);
$box_right=str_replace('{box_con}',$arr[2],$box_right);
}

}

$res=mysql_query('SELECT * FROM content WHERE id="' . $con . '";');
$arr=mysql_fetch_array($res);
$con_center=file_get_contents('templates/box.tpl');
$con_center=str_replace('{box_title}',$arr[1],$con_center);
$con_center=str_replace('{box_con}',$arr[2],$con_center);
$con_info=file_get_contents('templates/box.tpl');

$con_info=str_replace('{box_title}',$info_name,$con_info);
$con_info=str_replace('{box_con}',$info_con,$con_info);
$con_menu=file_get_contents('templates/box.tpl');
$con_menu=str_replace('{box_title}','Hauptmen&uuml;',$con_menu);
$con_index=file_get_contents('templates/index.tpl');
$con_index=str_replace('{menu}',$menu,$con_index);
$con_index=str_replace('{center}',$con_center,$con_index);
$con_index=str_replace('{box_right}',$box_right,$con_index);
$con_index=str_replace('{box_left}',$box_left,$con_index);
$con_index=str_replace('{leftmenu}',$con_menu,$con_index);
$con_index=str_replace('{box_con}',$submenu,$con_index);
$con_index=str_replace('{info}',$con_info,$con_index);

echo $con_index;

?>

Underserial
23.06.2007, 11:11
Dessen Arbeit hab ich nur einmal in Anspruch genommen glaub mir ...

Leider kommt auf der HP immer noch folgender fehler


Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/web182/html/index.php on line 26

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/web182/html/index.php on line 38

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/web182/html/index.php on line 57

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/web182/html/index.php on line 71

DFYX
23.06.2007, 11:25
Füg mal bitte nach jeder Zeile mit mysql_query folgendes ein:

echo mysql_errno() . ": " . mysql_error() . "<br/>\n";

Underserial
23.06.2007, 11:38
Füg mal bitte nach jeder Zeile mit mysql_query folgendes ein:

echo mysql_errno() . ": " . mysql_error() . "<br/>\n";

dann kommt das:


1146: Table 'usr_web182_3.content' doesn't exist

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/web182/html/index.php on line 27
1146: Table 'usr_web182_3.menu' doesn't exist

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/web182/html/index.php on line 40
1146: Table 'usr_web182_3.box' doesn't exist

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/web182/html/index.php on line 61
1146: Table 'usr_web182_3.content' doesn't exist

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/web182/html/index.php on line 76

Lukas
23.06.2007, 11:39
...da steht doch gross und breit, was los ist. Die Datenbanktabelle, auf die du zugreifen willst, gibt's nicht. Logisch, dass das nicht funktionieren kann.

Underserial
23.06.2007, 11:42
hmm wie krieg ich das wieder hin?

Ok
hab ein Backup gemacht nun steht oben was.

Sehs dir mal an.

www.esdi-page.de

Edit:

Ist weg alles wieder iO

habs hinbekommen

Lukas
23.06.2007, 11:45
hmm wie krieg ich das wieder hin?
Indem du die Datenbank anlegst.

Edit:
Der neue Output heisst, dass es keine MySQL-Fehler gab. Loesch einfach den von DFYX geposteten Code wieder aus der Datei, dann ist das weg.

Underserial
23.06.2007, 12:03
Dank euch allen.

Die verbesserte index.php ist nun einiges kompatibler.

MFG; ;)