PHP PHP Button erstellen

Dennis_Sch

Newbie
Registriert
Apr. 2011
Beiträge
1
Hallo zusammen,

ich habe folgendes Problem:
Auf einer Wordpress-Seite möchte ich eine Mitfahrgelegenheitsübersicht für unseren Verein erstellen.
Die Seite für das erstellen und Eintragen in die Datenbank funktioniert soweit auch super.

Jedoch soll auch das löschen möglich sein, wenn eine Anfrage nicht mehr existent ist. (Also ein Insert Into welches Anzeigen auf '0' setzten soll.)

Hierfür habe ich hinter jede Zeile einen Button (aktueller Name ist die ID) erstellt.
Hiermit ist jedoch das löschen der entsprechenden Zeile nicht möglich.

Kann mir hier vielleicht jemand helfen?

Der bisherige Code:
PHP:
<html>
<form method="post">
[insert_php]

$db_link = mysqli_connect ("localhost","user","password","table");
mysqli_query( $db_link, "set names 'utf8';");

$sql = "Select *,
termine.Bezeichnung AS Bezeichnung,
termine.url AS URL,
fahrgemeinschaften.weg AS weg,
fahrgemeinschaften.id AS nr,
date_format(termine.Datum_Start, '%d') AS Datum_Start1, 
date_format(termine.Datum_Start, '%m') AS Datum_Start2, 
date_format(termine.Datum_Start, '%Y') AS Datum_Start3,
date_format(termine.Datum_Ende, '%d') AS Datum_Ende1, 
date_format(termine.Datum_Ende, '%m') AS Datum_Ende2, 
date_format(termine.Datum_Ende, '%Y') AS Datum_Ende3
FROM fahrgemeinschaften, termine
WHERE fahrgemeinschaften.Veranstaltung = termine.id
AND fahrgemeinschaften.Anzeigen = 1
AND termine.fahrgemeinschaft = 1
AND termine.Datum_Start > NOW() 
ORDER BY `termine`.`Datum_Start` ASC, `fahrgemeinschaften`.`Weg` ASC";

$db_erg = mysqli_query( $db_link, $sql);
if ( ! $db_erg )
{
  die('Ungültige Abfrage:' . mysqli_error());
}

echo ' <table border="0">
<colgroup> 
<col width="15%" /> 
<col width="15%" /> 
<col width="25%" /> 
<col width="20%" /> 
<col width="15%" /> 
<col width="10%" /> 
<col width="10%" /> 
</colgroup>
<tr>
<td colspan="1"><b>Veranstaltung</b></td>
<td>
<b>Weg</b>
</td>

<td >
<b>Name</b>
</td>
<td>
<b>E-Mail-Adresse</b>
</td>

<td>
<b>Telefon</b>
</td>

<td>
<b>Anz. freie Sitzpätze</b>
</td>
<td>
</td>
';

while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>";
  echo "<td>";
  if ($zeile['Bezeichnung'] != '0'){
  if ($zeile['url'] == ''){
    echo $zeile['Bezeichnung'];
  }
  if ($zeile['url'] != ''){
    echo "<a href=". $zeile['url']. ">". $zeile['Bezeichnung']. "</a>";
  }
  }

  echo "</td>";
  echo "<td>";
  echo $zeile['Weg'];
  if ($zeile['Weg'] == 'Hin'){
  echo "<br> (". $zeile['Datum_Start1']. ".". $zeile['Datum_Start2']. " ". $zeile['Datum_Start3']. ")";
  }
  if ($zeile['Weg'] == 'Zurück'){
  echo "<br> (". $zeile['Datum_Ende1']. ".". $zeile['Datum_Ende2']. " ". $zeile['Datum_Ende3']. ")";
  }

  echo "</td>";
  echo "<td>";
  echo $zeile['Name'];
  echo "</td>";
  echo "<td>";
  echo $zeile['EMail'];
  echo "</td>";
  echo "<td>";
  echo $zeile['Telefon'];
  echo "</td>";
  echo "<td>";
  echo $zeile['Anzahl'];
  echo "</td>";
  echo "<td>";

  $nr = $zeile['ID'];
  echo "<input type='submit' name='$nr' value='$nr'>";
  echo "</td>";
}

echo "</table>";

echo "</b>";

$varnr = $nr;

$sql1 = "UPDATE fahrgemeinschaften
SET fahrgemeinschaften.Anzeigen='0'
WHERE fahrgemeinschaften.id=$varnr";

if (mysqli_query($db_link, $sql1)) {
    echo "Löschung erfolgreich.";
} else {
    echo "Error: " . $sql1 . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
}

//echo "</form>";
[/insert_php]
</form>

</html>
 
grundsätzlich brauchst du zum ändern den UPDATE Befehl nicht den INSERT (du hast ja schon nen DB Eintrag)

Aber warum löscht du den Eintrag nicht einfach aus der DB?
 
Zuletzt bearbeitet:
Zuerst löscht Du mal bitte das Bracket nach dem SQL-Disco raus.
Dann die Frage warum Du das Form nicht mit in die While-Schleife packst?

PHP:
  echo '<form action="#" method="post"><input type="submit" name="ID" value="$zeile[ID]"></form>';

Außerdem fehlt vor dem SQL-UPDATE ein if, damit die die Aktualisierung nur dann ausgelöst wird, wenn man das Formular absendet - so wie es jetzt ist, wird bei jedem Seitenaufruf der SQL-Update-Befehl gestartet.

Sowas lässt sich einfach hiermit lösen:
PHP:
if (isset( $_POST['ID'] ))
{
$sql1 = "UPDATE fahrgemeinschaftenSET fahrgemeinschaften.Anzeigen='0'WHERE fahrgemeinschaften.id='".mysql_real_escape_string($_POST['ID'])."'"; 

if (mysqli_query($db_link, $sql1)) 
{    
echo "Löschung erfolgreich.";
} 
else 
{    
echo "Error: " . $sql1 . "<br>" . mysqli_error($conn);
}
};
 
Zuletzt bearbeitet:
...und wie üblich schreit der Code geradezu nach einer SQL Injection. NIE NIE NIE ungeprüft irgend eine POST- oder GET-Variable in einen Query packen.
Und mal ehrlich: Wozu haben clevere Köpfe denn Prepared Statements und Datenbank-Abstraktionen erfunden?
 

Ähnliche Themen

Antworten
1.211
Aufrufe
162.620
Antworten
7
Aufrufe
1.758
6 7 8
Antworten
154
Aufrufe
31.586
Zurück
Oben