Brauch hilfe bei einer verkorcksten html/php seite

Alles, was PHP betrifft, kann hier besprochen werden.

Brauch hilfe bei einer verkorcksten html/php seite

Postby fallin' angel » 17. November 2006 13:23

Hi alle zusammen.

Ich muss für ein Projekt in der Schule eine verkorckste internet seite wieder richten, doch ich hab absolut null ahnung wie ich das anstellen soll. ein bisschen kenn ich mich in php aus, doch das übersteigt mein wissen. schaut mal bitte drüber und sagt mir was man da machen kann.

Danke im vorraus^^ chrisi


<?php
Datenbank: `add2_php`

CREATE TABLE kaugummisorten (
id int(11) NOT NULL auto_increment,
name text NOT NULL,
geschmack int(11) NOT NULL default '0',
farbe text NOT NULL,
preis varchar(15) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;


$conn = mysql_connect("localhost", "root", "") or die("mySQL-Fehler0: " . mysql_error());

mysql_select_db("add2_php") or die("Auswahl der Datenbank fehlgeschlagen");

if ($mode == "edit") {
if ($id) {
$res = mysql_query("SELECT * FROM kaugummisorten WHERE id = ".$id);

$d = mysql_fetch_array($res);
}
?>

<form method="post" action="./">
<input type="hidden" name="mode" value="save">
<input type="hidden" name="id" value="">
<table border="0" cellpadding="2" cellspacing="1" width="300">
<tr><td>Bearbeiten</td></tr>
<tr><td>name:</td><td><input type="text" name="name" value=""></td></tr>
<tr><td>geschmack:</td><td><select name=geschmack><option value=0>Bitte wählen!</option>

<?php
if ($d[geschmack] == 1)
echo "<opton value="1" selected>Süß</option>";
if ($d[geschmack] == 2)
echo "<opton value="2" selected>Sauer</option>";
if ($d[geschmack] != 1 && $d[geschmack] != 2)
echo "<opton value="3" selected>Anders</option>";

?>

</td></tr>
<tr><td>farbe:</td><td><input type="text" name="farbe" value=""></td></tr>
<tr><td>preis:</td><td><input type="text" name="preis" value=""></td></tr>
<tr><td><input type="submit"></td></tr>
</table>
</form>

<?php
} elseif ($mode == "save") {
mysql_query("UPDATE kaugummisorten SET
name = \"$name\", geschmack=\"$geschmack\", farbe=\"$farbe\",
preis=\"preis\"
WHERE id = $id");
echo "gespeichert!";
} else {
$res = mysql_query("SELECT * FROM kaugummisorten");
$sorten = array();
while ($d = mysql_fetch_array($res))
$sorten = array_merge($sorten, array($d));
$i = 0;
?>

<table border="0" cellpadding="2" cellspacing="1" width="300">

<?php
foreach($sorten AS $v) {
$preis = str_replace(".", ",", $v[preis]);
echo "<tr><td>$i</td><td>$v[id]</td><td>$v[name]</td><td>";
if ($v[geschmack] == 1) echo "Süß";
elseif ($v[geschmack] == 2) echo "Sauer";
else echo "Anders";
}
?>

</td><td>$v[farbe]</td><td>$preis</td><td><a href=\"./?id=$v[id]&mode=edit\">Bearbeiten</a></tr>

</table><a href="?mode=edit">hinzufügen</a>

<?php
}

mysql_close($conn);

?>
fallin' angel
 
Posts: 2
Joined: 17. November 2006 13:03

Postby Wastelander » 18. November 2006 03:05

Hi erstmal!

Ich bin zwar auch noch richtig am Anfang, was PHP + MySQL angeht, aber ich versuche mich mal an Deiner Aufgabe.

Code: Select all
<?php

Ist wohl richtig so, bedarf keiner weiteren Erklärung. *g*

Code: Select all
Datenbank: `add2_php`

CREATE TABLE kaugummisorten (
id int(11) NOT NULL auto_increment,
name text NOT NULL,
geschmack int(11) NOT NULL default '0',
farbe text NOT NULL,
preis varchar(15) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;

Das ist der SQL-Query zur Erstellung einer Tabelle mit dem Namen kaugummisorten. Voraussetzung ist, dass Du eine Datenbank mit dem Namen add2_php angelegt hast. Diese Datenbank, ebenso wie die Tabelle erstellst Du am einfachsten über PHPMyAdmin. Nachdem Du die Datenbank erstellt hast, fügst Du einfach obigen Query in die SQL-Konsole ein.

Code: Select all
$conn = mysql_connect("localhost", "root", "") or die("mySQL-Fehler0: " . mysql_error());

mysql_select_db("add2_php") or die("Auswahl der Datenbank fehlgeschlagen");

if ($mode == "edit") {
if ($id) {
$res = mysql_query("SELECT * FROM kaugummisorten WHERE id = ".$id);

$d = mysql_fetch_array($res);
}
?>

In diesen Zeilen kann ich soweit keine Fehler entdecken.

Code: Select all
<form method="post" action="./">
  <input type="hidden" name="mode" value="save">
  <input type="hidden" name="id" value="">
  <table border="0" cellpadding="2" cellspacing="1" width="300">
    <tr>
      <td>Bearbeiten</td>
    </tr>
    <tr>
      <td>
        name:
      </td>
      <td>
        <input type="text" name="name" value="">
      </td>
    </tr>
    <tr>
      <td>
        geschmack:
      </td>
      <td>
        <select name=geschmack>
        <option value=0>Bitte wählen!</option>

Auch hier erkenne ich keine Fehler.

Code: Select all
<?php
if ($d[geschmack] == 1)
echo "<opton value="1" selected>Süß</option>";
if ($d[geschmack] == 2)
echo "<opton value="2" selected>Sauer</option>";
if ($d[geschmack] != 1 && $d[geschmack] != 2)
echo "<opton value="3" selected>Anders</option>";
?>

Korrigiert mich, wenn ich falsch liege, aber diese Zeilen müssten m.E. wiefolgt heißen:

Code: Select all
<?php
  if ($d[geschmack] == 1)
    echo "<option value='1' selected>Süß</option>";
  if ($d[geschmack] == 2)
    echo "<option value='2' selected>Sauer</option>";
  if ($d[geschmack] != 1 && $d[geschmack] != 2)
    echo "<option value='3' selected>Anders</option>";
?>

option statt opton und einfache Anführungszeichen ('...')statt Doppelten("...").

Code: Select all
</td></tr>
<tr><td>farbe:</td><td><input type="text" name="farbe" value=""></td></tr>
<tr><td>preis:</td><td><input type="text" name="preis" value=""></td></tr>
<tr><td><input type="submit"></td></tr>
</table>
</form>

Das ist soweit ich es beurteilen kann auch alles richtig.

Code: Select all
<?php
} elseif ($mode == "save") {
mysql_query("UPDATE kaugummisorten SET
name = \"$name\", geschmack=\"$geschmack\", farbe=\"$farbe\",
preis=\"preis\"
WHERE id = $id");
echo "gespeichert!";
} else {
$res = mysql_query("SELECT * FROM kaugummisorten");
$sorten = array();
while ($d = mysql_fetch_array($res))
$sorten = array_merge($sorten, array($d));
$i = 0;
?>

Bei diesem Teil bin ich mir an einigen Stellen unsicher. Persönlich würde es mich auch interessieren, wie hier z.B. die Anführungszeichen zu setzen sind.

Code: Select all
<table border="0" cellpadding="2" cellspacing="1" width="300">

<?php
foreach($sorten AS $v) {
$preis = str_replace(".", ",", $v[preis]);
echo "<tr><td>$i</td><td>$v[id]</td><td>$v[name]</td><td>";
if ($v[geschmack] == 1) echo "Süß";
elseif ($v[geschmack] == 2) echo "Sauer";
else echo "Anders";
}
?>

</td><td>$v[farbe]</td><td>$preis</td><td><a href=\"./?id=$v[id]&mode=edit\">Bearbeiten</a></tr>

</table><a href="?mode=edit">hinzufügen</a>

In diesem Abschnitt kann ich ebenfalls nicht 100%ig folgen. Wiederum bitte ich um weitere Unterstützung von den erfahreneren Programmierern.

Code: Select all
<?php
}

mysql_close($conn);

?>

Bei diesem Teil bin ich mir aber wieder sicher, dass er in Ordnung ist. ;D

Zur besseren Übersicht poste ich mal meine teilweise korrigierte und eingerückte Version.

Code: Select all
<?php
/*
 *  Datenbank: `add2_php`
 *
 *  CREATE TABLE kaugummisorten (
 *  id int(11) NOT NULL auto_increment,
 *  name text NOT NULL,
 *  geschmack int(11) NOT NULL default '0',
 *  farbe text NOT NULL,
 *  preis varchar(15) NOT NULL default '',
 *  PRIMARY KEY (id)
 *  ) TYPE=MyISAM;
 *
 */

  $conn = mysql_connect("localhost", "root", "mismatch") or die("mySQL-Fehler0: " . mysql_error());

  mysql_select_db("add2_php") or die("Auswahl der Datenbank fehlgeschlagen");

  if ($mode == "edit") {
    if ($id) {
      $res = mysql_query("SELECT * FROM kaugummisorten WHERE id = ".$id);
      $d = mysql_fetch_array($res);
    }
?>

  <form method="post" action="./">
    <input type="hidden" name="mode" value="save">
    <input type="hidden" name="id" value="">
    <table border="0" cellpadding="2" cellspacing="1" width="300">
      <tr>
        <td>Bearbeiten</td>
      </tr>
      <tr>
        <td>
          name:
        </td>
        <td>
          <input type="text" name="name" value="">
        </td>
      </tr>
      <tr>
        <td>
          geschmack:
        </td>
        <td>
          <select name=geschmack>
          <option value=0>Bitte wählen!</option>

          <?php
            if ($d[geschmack] == 1)
              echo "<option value='1' selected>Süß</option>";
            if ($d[geschmack] == 2)
              echo "<option value='2' selected>Sauer</option>";
            if ($d[geschmack] != 1 && $d[geschmack] != 2)
              echo "<option value='3' selected>Anders</option>";
          ?>

        </td>
      </tr>
      <tr>
       <td>
         farbe:
       </td>
       <td>
         <input type="text" name="farbe" value="">
       </td>
     </tr>
      <tr>
       <td>
         preis:
       </td>
       <td>
         <input type="text" name="preis" value="">
       </td>
     </tr>
      <tr>
       <td>
         <input type="submit">
       </td>
     </tr>
    </table>
  </form>

<?php
  } elseif ($mode == "save") {
    mysql_query("
     UPDATE kaugummisorten SET
       name = \"$name\",
        geschmack=\"$geschmack\",
        farbe=\"$farbe\",
        preis=\"preis\"
      WHERE id = $id
   ");
    echo "gespeichert!";
  } else {
    $res = mysql_query("SELECT * FROM kaugummisorten");
    $sorten = array();
    while ($d = mysql_fetch_array($res))
    $sorten = array_merge($sorten, array($d));
    $i = 0;
?>

    <table border="0" cellpadding="2" cellspacing="1" width="300">

<?php
      foreach($sorten AS $v) {
        $preis = str_replace(".", ",", $v[preis]);
        echo "
         <tr>
            <td>
             $i
          </td>
          <td>
            $v[id]
          </td>
          <td>
            $v[name]
          </td>
          <td>
        ";
        if ($v[geschmack] == 1)
         echo "Süß";
        elseif ($v[geschmack] == 2)
         echo "Sauer";
        else
         echo "Anders";
     }
?>

      </td>
       <td>
       $v[farbe]
     </td>
     <td>
       $preis
     </td>
     <td>
       <a href=\"./?id=$v[id]&mode=edit\">
         Bearbeiten
       </a>
     </tr>
      </table>
   <a href="?mode=edit">hinzufügen</a>

<?php
  }

  mysql_close($conn);

?>


Wie bereits erwähnt bin ich mir an einigen Stellen nicht sicher, was verbessert werden muss, damit es funktioniert. Außerdem macht mir die starke Verschachtelung von HTML- und PHP-Abschnitten noch zu schaffen. Befasse mich damit erst seit einigen Tagen. Deshalb würde es mich freuen, wenn jemand mir und fallin' angel anhand dieser Aufgabe etwas mehr Einblick in die PHP-Programmierung verschaffen könnte.

LG
~W
Wastelander
 
Posts: 5
Joined: 17. November 2006 01:08

Postby fallin' angel » 19. November 2006 19:11

Hi Wastelander. Danke für die Hilfe :D

Code: Select all
<?php
} elseif ($mode == "save") {
mysql_query("UPDATE kaugummisorten SET
name = \"$name\", geschmack=\"$geschmack\", farbe=\"$farbe\",
preis=\"preis\" WHERE id = $id");
echo "gespeichert!";
} else {
$res = mysql_query("SELECT * FROM kaugummisorten");
$sorten = array();
while ($d = mysql_fetch_array($res))
$sorten = array_merge($sorten, array($d));
$i = 0;
?>


Ich kenn mich SQL wesentlich besser aus als mit PHP. Meines erachtens müssten der obige ausschnitt wie folgt aussehen:

Code: Select all
<?php
} elseif ($mode == "save") {
mysql_query("UPDATE kaugummisorten SET
name = '$name', geschmack='$geschmack', farbe='$farbe',
preis='$preis' WHERE id = '$id'");
echo "gespeichert!";
} else {
$res = mysql_query("SELECT * FROM kaugummisorten");
$sorten = array();
while ($d = mysql_fetch_array($res))
$sorten = array_merge($sorten, array($d));
$i = 0;
?>


Die / und " gehören da nicht hin. Stattdessen werden die variablen mit je einem ' gekennzeichnet.
fallin' angel
 
Posts: 2
Joined: 17. November 2006 13:03

Postby H.Klingel » 27. November 2006 21:32

//Die MySQL Query ist wohl richtig, sie wird aber nicht ausgeführt.
//Also solltest du den Text erstmal einer Variabel zuordnen:

$sql ="CREATE TABLE kaugummisorten (
id int(11) NOT NULL auto_increment,
name text NOT NULL,
geschmack int(11) NOT NULL default '0',
farbe text NOT NULL,
preis varchar(15) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM";


$conn = mysql_connect("localhost", "root", "") or die("mySQL-Fehler0: " . mysql_error());

mysql_select_db("add2_php") or die("Auswahl der Datenbank fehlgeschlagen");

// Jetzt die Tabelle erzeugen:
mysql_query($sql);
H.Klingel
 
Posts: 31
Joined: 29. August 2005 09:07


Return to PHP

Who is online

Users browsing this forum: No registered users and 7 guests