PHP versteckten $_POST[] übertragen?`

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hi, ich hab nen Problem...

Ich hab nen Formular:
formpostprob.bmp


Dort kann ich verschiedende Texte bearbeiten oder löschen und die Texte werden zu einer Seite zugeordnet in der Datenbank.
Die Funktionen sind genau das Problem!
Wenn ich etwas auswähle, dann kann ich nicht den Inhalt der Dropdown-Box nehmen um in der Datenbank die richtige Zeile zu finden...
Die Uhrzeit habe ich per Unix timestamp in form von integer in die Datenbank eingetragen... und daraus wird auch das Datum und die Uhrzeit in den runden klammern gebildet...

Ich hab also 2x news als textname in der Datenbank stehen, die sich nur durch den timestamp und die id unterscheiden...
Wie kann ich z.B. jetzt eins auswählen und aus der Datenbank löschen? Irgendwie muss es ja möglich sein, die richtige Zeile in der Datenbank finden zu können.
ich kann nicht den namen aus dem dropdown nehmen und mit der datenbank vergleichen weil dort nur als name news steht und nicht mit dem datum dahinter

ich hoffe ich konnte mich einigermaßen verständlich ausdrücken, wenn nicht nochmals nachfragen... mfg
 
Zuletzt bearbeitet:
ich kann nicht den namen aus dem dropdown nehmen und mit der datenbank vergleichen weil dort nur als name news steht und nicht mit dem datum dahinter
Warum das denn nicht? Irgendwo muss der Timepstamp ja gespeichert werden.

Ich würde das ganze aber gar nicht über die zeit machen sondern Über IDs.
Dann suchst du in der DB nach der ID und hast immer die dazugehörigen Daten.
 
Wenn ich dich richtig verstanden habe liegt dein Problem schon im Markup des Formulars. Das sollte so aussehen
HTML:
<select name="news_id">
    <optgroup label="Bitte wählen...">
        <option value="42">news(Datum) / Titel...</option>
        <option value="23">news(Datum) / anderer Titel...</option>
        ...
    </optgroup>
</select>

Wird das Formular abgeschickt kannst du über
PHP:
$_POST['news_id']
auf die ausgewählte Option zugreifen und den Datenbankeintrag auslesen.
 
Davon abgesehen, dass das von muhkuher vorgeschlagene die beste Lösung ist, könntest du alternativ natürlich auch den String wieder in einen timestamp und den newsnamen umwandeln, am einfachsten mit einem regulären Ausdruck.
 
muhkuher schrieb:
Wenn ich dich richtig verstanden habe liegt dein Problem schon im Markup des Formulars. Das sollte so aussehen
HTML:
<select name="news_id">
    <optgroup label="Bitte wählen...">
        <option value="42">news(Datum) / Titel...</option>
        <option value="23">news(Datum) / anderer Titel...</option>
        ...
    </optgroup>
</select>

Wird das Formular abgeschickt kannst du über
PHP:
$_POST['news_id']
auf die ausgewählte Option zugreifen und den Datenbankeintrag auslesen.

Wie man das abruft weiß ich ja... aber ich kann ja nicht den kompletten inhalt news(datum) ...
nehmen und in mit der datenbank vergleichen, um die richtige zeile zu finden...
meine Datenbank sieht so aus:
datenbank-texte.bmp


in dem dropdown hab ich news und das datum zusammengepackt, damit man erkennen kann, welches news wann entstanden ist... in der Datenbank steht aber unter textname nur news bei beiden... und die unterscheiden sich wie gesagt durch die id oder das datum...
also muss ich irgendwie, wenn man das auswählt und abschickt die id mit übertragen damit ich diese für das finden der richtigen zeile verwenden kann...
 
Machst du doch mit dem Beispiel von muhkuher.
Du schreibst in die Eigenschaft value="" die ID der News. Dann wird eine der Beiden News ausgewählt.
Dann wird das Feld versendet und in dem Empfänger-Skript kannst du dann wie beschrieben den Wert abfragen.

Vielleicht kannst dein Problem nochmal genauer erklären.
 
okay ich könnte in die <option> die textid eintragen als value...
die frage ist wie stell ich das an und wie kann ich die value auslesen? etwa mit $_POST?
ich muss ja irgendwie die id übertragen können und dann auslesen^^

mein quelltext sieht grad noch so aus:
PHP:
//Text auswählen und Bearbeiten/Löschen
$seite = $_GET['edit'];
$sql_texte = mysql_query("SELECT textid,textname,textdatum FROM texte ORDER BY textdatum DESC") or die(mysql_error());	
echo'<hr><br>
<form method="post" action="include/texteditor.inc.php">
	<label>Text in "<b>'.$seite.'</b>" bearbeiten:</label>
	<select name="textedit_name">
		<optgroup label="Bitte wählen...">';					
			while($obj_texte = mysql_fetch_object($sql_texte))
			{
				$year = date("d.m.Y", $obj_texte->textdatum);
				$time = date("H:i", $obj_texte->textdatum);
				echo '<option>'.$obj_texte->textname.'('.$year.' um '.$time.' Uhr)</option>';
			}
			echo'
		</optgroup>
	</select>
	<input type="submit" name="edit_text" value="Bearbeiten">
	<input type="submit" name="delete_text" value="Löschen">
</form><br>';

stellt sich halt nur die frage wie ich die textid des ausgewählten <option> nach include/texteditor.inc.php übertragen und dort dann auslesen kann um dann die richtige Zeile in der Datenbank zu finden...

in der texteditor.inc.php steht bisher nur:
PHP:
if(isset($_POST['edit_text']))
{
	header('Location: ../admin_texteditor.php?textedit=true');
}
if(isset($_POST['delete_text']))
{
       //Abfrage kommt natürlich eine andere hin ;-)
	$sql_text_delete = mysql_query("DELETE FROM texte WHERE textname = '".$_POST['text_name']."'") or die(mysql_error());
	if($sql_text_delete) header('Location: ../admin_texteditor.php?textdelete=true');
}


mfg
 
Zuletzt bearbeitet:
So sollte es funktionieren:
PHP:
//Text auswählen und Bearbeiten/Löschen
$seite = $_GET['edit'];
$sql_texte = mysql_query("SELECT textid,textname,textdatum FROM texte ORDER BY textdatum DESC") or die(mysql_error());    
echo'<hr><br>
<form method="post" action="include/texteditor.inc.php">
    <label>Text in "<b>'.$seite.'</b>" bearbeiten:</label>
    <select name="text_edit">
        <optgroup label="Bitte wählen...">';                    
            while($obj_texte = mysql_fetch_object($sql_texte))
            {
                $year = date("d.m.Y", $obj_texte->textdatum);
                $time = date("H:i", $obj_texte->textdatum);
                echo '<option value="'.$obj_texte->id.'">'.$obj_texte->textname.'('.$year.' um '.$time.' Uhr)</option>';
            }
            echo'
        </optgroup>
    </select>
    <input type="submit" name="edit_text" value="Bearbeiten">
    <input type="submit" name="delete_text" value="Löschen">
</form><br>';
 
Jo habs mal ausprobiert... bekomm so tatsächlich die id rüber ... thx :)
 
Zuletzt bearbeitet:
Du hast wohl die genaue Bedetung der HTML-Attribute "value" nicht gekannt?

Im Falle von einer Auswahl, wird über die POST-Methode der Wert der Attribute VALUE übertragen. Natürlich nur bei der Option, die man ausgewählt hat. Genau mit dieser Methode arbeite ich übrigens auch immer ;)
 
Zurück
Oben