Anfängerfragen zu php - mysql

Alles, was PHP betrifft, kann hier besprochen werden.

Anfängerfragen zu php - mysql

Postby ghost » 29. January 2005 18:50

Ich will ein Prog schreiben, bei dem ich am Anfang die Benutzerdaten für das Login zu einer MySQL - DB eingegeben
werden muß. Die so aufgebaute Verbindung soll dann für Abfragen verwendet werden. Diese Abfragen sollen jedoch von
verschiedenen "Seiten" aus möglich sein d.h. die Verbindung soll dauerhaft ( bis mysql_close() ) bestehen. Ich hab
es deshalb bereits mit include und pconnect versucht, doch leider funktioniert das ganze nicht richtig ( oder besser
ich weiß nicht wies richtig geht :-) ). Deshalb hier meine Fragen:

1. Wie mach ich in meinem Fall das mit der Connection richtig?
2. Wie kann ich, aus php heraus ( z. B.: aus einer if schleife ) ein anderes Fenster( bzw. Datei ) öffnen?
3. Wie kann ich das Ergebnis aus einer Abfrage in einem bestehenden Textarea ausgeben, ohne das eine neue Seite aufgebaut wird?

Hier sind meine bisherigen Versuche:
Code: Select all
<html>
 <head>
   <title>MySql - Editor</title>
    <style type = "text/css">
   p.head{font-size=24pt; color=#6666FF;}
   </style>
 </head>
 <body>
 <p class = head>MySQL - Benutzerschnittstelle</p></hr>
 <hr>
<span style = "font-size:8pt">
 <h3>Bitte geben Sie Ihre Benutzerdaten ein</h3>
 <br>
<form method="post" action="connection.php">
<table>
<tr>
<td align = "right">Benutzername:
</td>
<td>
<input type="text" name="user" size="20">
</td>
</tr>
<tr>
<td align = "right">Passwort:
</td>
<td>
<input type="text" name="pw" size="20">
</td>
</tr>
<tr>
<td align = "right">Host:
</td>
<td>
<input type="text" name="host" size="20">
</td>
</tr>
<tr>
</tr>
<tr>
</tr>
<td>
</td>
<td>
<input type="submit" value="Verbinden" size="20">
</td>
</tr>
</table>
 </form>
Der MySQL - Editor ist ein in HTML und PHP geschriebenes Programm um einfachen Zugriff auf eine
MySQL - Datenbank nehmen zu können.
<br>
<br>
<br>
<br>
<hr>
 </body>
</html>


</head>
 <body>
 <?php
 $user = htmlentities(addslashes(rtrim($_POST["user"])));
  $pw = htmlentities(addslashes(rtrim($_POST["pw"])));
  $host = htmlentities(addslashes(rtrim($_POST["host"])));
  $dat = htmlentities(addslashes(rtrim($_POST["dat"])));
       $db = mysql_pconnect($host,$user,$pw)
      or die(mysql_error());
      /*$result = mysql_query("Show Databases")
      or die(mysql_error());
     
     echo '<pre>'."\n";
     
      $x = 1;
      while ($row = mysql_fetch_row($result)){
      echo 'Datenbank '.$x++.': '.$row[0]."\n";
      }
      echo '</pre>'."\n";
     
      mysql_free_result($result);
      mysql_close($db); */
   ?>
  <h1>MySQL - Editor</h1>
 <h3>Bitte geben Sie einen gültigen SQL - Befehl in das Abfrage - Feld ein oder
 wählen Sie einen Menu - Punkt</h3>
 <form method="post" action="abfrage.php">
Abfrage: <input type="text" name="abfrage" size="50">
<input type = "submit" value="Abfrage ausführen" action="abfrage.php">
</form>
<br>
<br>
<textarea name = sql rows=10 cols = 80>
</textarea>
 </form>
 <br>
 <br>
 <h3>Bitte wählen Sie:</h3>
 <a href ="select.php">Suche --> Einfache Suchfunktion
 <br>
 <a href ="grant.php">Benutzer anlegen
 <br>
 <a href ="insert.php">Eingaben tätigen
 <br>
 <a href ="ende.php">Verbindung beenden
 </body>
</html>

<html>
 <head>
   <title>abfrage.php</title>
 </head>
 <body>
   <h3>Abfrage</h3>
   <?php
   include ('connection.php');
   $abfrage = htmlentities(addslashes(rtrim($_POST["abfrage"])));
    $result = mysql_query("Show Databases")
      or die(mysql_error());

     echo '<pre>'."\n";

      $x = 1;
      while ($row = mysql_fetch_row($result)){
      echo 'Datenbank '.$x++.': '.$row[0]."\n";
      }
      echo '</pre>'."\n";
       mysql_free_result($result);
 ?>
 </body>
</html>
ghost
 
Posts: 55
Joined: 17. January 2005 18:49

Postby Wiedmann » 29. January 2005 19:09

1. Wie mach ich in meinem Fall das mit der Connection richtig?

pconnect() wäre schon eine Möglichkeit. im allgemeinen baut man aber trotzdem in jeder Seite die Verbindung neu auf. Die Anmeldedaten kannst ja über Sessions weitergeben (wieso muss jemand die MySQL-Login-Daten im Browser eingeben?). Daten wie DB oder Tabelle musst ja auch weitergeben.

Code: Select all
2. Wie kann ich, aus php heraus ( z. B.: aus einer if schleife ) ein anderes Fenster( bzw. Datei ) öffnen?

Gar nicht. PHP läuft auf dem Server und Fenser werden auf dem Client geöffnet (z.B. mit JS oder Link mit target="_blank").

3. Wie kann ich das Ergebnis aus einer Abfrage in einem bestehenden Textarea ausgeben, ohne das eine neue Seite aufgebaut wird?

Gar nicht. (Naja, von irgendwelche JS-Spielereien mal abgesehen. Da könnte das evtl. gehen)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Anfängerfragen

Postby ghost » 29. January 2005 20:42

zu 1. ich soll sowas wie ne Benutzerschnittstelle entwickeln wobei man am Beginn der Sitzung seine Daten eingibt und so dann ne Verbindung aufbaut und nutzen soll...

Wenn ich mit pconnect die Verbindung aufbaue, wie kann ich sie dann weiter nutzen ( mit include? )?
ghost
 
Posts: 55
Joined: 17. January 2005 18:49

frage zu Beispielprog

Postby ghost » 30. January 2005 11:49

Ich hab jetzt auch ein Beispiel-Prog gefunden ( leider muß man sich auch hier immer wieder neu anmelden ). Bei dem
Prog taucht bei der Ausgabe von manchen Abfrage ( z.B:show tables / select *... ) die Fehlermeldung Undefined Variable
und Undefined Index auf. Woran könnte das liegen ( unten hab ich die Programmteile für die Abfrage und Ausgabe gepostet )Ich hoffe ihr könnt mir helfen!

Code: Select all
<html>
 <head>
   <title>abfrage.inc</title>
 </head>
 <body>
 <?php
 include"./lib/config.inc.php";
 function myErrors($errno, $errmsg){
 echo"<p class='err'>$errmsg";
 echo"</p>";
 }
 $old_error_handler = set_error_handler("myErrors");
 get_dbparms($dbhost, $dbname, $dbuser, $dbpwd);
if(! $linkid = @mysql_pconnect($dbhost, $dbuser, $dbpwd)){
die(">>>Programm abgebrochen<<<");
}
if (! @mysql_select_db($dbname, $linkid)){
die("<<<Programm abgebrochen>>>");
}
$result = mysql_query($sql, $linkid);
if(($err = mysql_errno()) > 0){
trigger_error("[$err] ".mysql_error());
}
elseif($result ==1){
include"./lib/update.inc.php";
}
else{
include"./lib/select.inc.php";
mysql_free_result($result);
}
?>
</body>
</html>
////////////////////////////
<html>
 <head>
   <title>ausgabe.inc</title>
 </head>
 <body>
 <?php
 function make_sql($sql){
 $suer[0][0] = "\n";
 $suer[0][1] = "%OA";
 $suer[1][0] = "\r";
 $suer[1][1] = "\OD";
 $suer[2][0] = " ";
 $suer[2][1] = "%20";
 $x = htmlentities($sql);
 for($i=0; $i<sizeof($suer); $i++){
 $x = str_replace($suer[$i][0], $suer[$i][1], $x);
 }
 return $x;
 return str_replace(chr(10), "%OA",str_replace(chr(13), "%OD", str_replace(" ", "%20", htmlentities($sql))));
 }
 
 // Beginn der Datenausgabe
 $fields = mysql_num_fields($result);
 
if($struk =="checked"){
echo"<table class='tas'>";
echo"<tr class='trsh'>";
echo"<td class='tdsh'>Name</td>";
echo"<td class='tdsh'>Tabelle</td>";
echo"<td class='tdsh'>Datentyp</td>";
echo"<td class='tdsh'>Länge</td>";
echo"<td class='tdsh'>Schalter</td></tr>";
$rowfl = 1;
}
$head="";
for($i=0; $i<$fields; $i++){
if(mysql_field_type($result, $i)!="blob"){
$form[$i]="nowrap";
}
else{
$form[$i]="";
}
$na = mysql_field_name($result, $i);
if($struk == "checked"){
echo"<tr class='trs$rowfl'>";
echo"<td class='tds$rowfl'>",
mysql_field_name($result, $i), "</td>";
echo"<td class='tds$rowfl'>",
mysql_field_table($result, $i),"</td>";
echo"<td class='tds$rowfl'>",
mysql_field_type($result, $i),"</td>";
echo"<td class='tds$rowfl'>",
mysql_field_len($result, $i), "</td>";
echo"<td class='tds$rowfl'>",
mysql_field_flags($result, $i),"</td>";
echo "</tr>";
$rowfl= ! $rowfl;
}
$head .="<td class='tdsh' ". $form[$i]. ">" .$na ."</td>";
}
if($struk == "checked"){
echo"</table><br>";
}
$rowct=0;
$rowfl=1;
$breakfl=0;
echo "<table class='tas'>";
echo "<tr class = 'trsh'>";
echo"<td class='tdsh'>Lfd#</td>";
echo $head;
while($row = mysql_fetch_row($result)){
$rowct ++;
echo "<tr class = 'trs$rowfl'>";
echo "<td class='tds$rowfl'>$rowct</td>";
for($i=0; $i<$fields; $i++){
echo "<td class = 'tds$rowfl' ",  $form[$i], ">",htmlentities($row[$I]),"</td>";
}
echo"</tr>";
$rowfl=!$rowfl;
if($rowct >=$recs and $recs>0){
$breakfl = 1;
break;
}
}
echo"</table>";
?>
 </body>
</html>
////////////////////////////////////////
<html>
 <head>
   <title>select.inc</title>
 </head>
 <body>
 <?PHP
 $maxrows= mysql_num_rows($result);
 echo"<p style='color:#000080'>
 Die Abfrage liefert $maxrows Datensätze.</p>";
 include"./lib/ausgabe.inc.php";
 if($breakfl){
 if(! stristr($sql, "limit") and stristr($sql, "select")){
 $x = make_sql($sql);
 echo"<a href = edit.php?action=browse&sql=";
 echo $x;
 echo "&rows=$recs&maxrows=$maxrows tarbet='_blank'>
 ... weiter Datensätze vorhanden</a>";
 }
 else{
 echo"<p>... weiter Datensätze vorhanden</p>";
 }
 }
 ?>
 </body>
</html>
ghost
 
Posts: 55
Joined: 17. January 2005 18:49


Return to PHP

Who is online

Users browsing this forum: No registered users and 6 guests