php mysql query tabellen darstellungsproblem

battleck

Grünschnabel
hallo zusammen,
wenn ich die daten aus der mysql datenbank ausgeben lassen, verschiebt sich die tabelle pro weiteren eintrag. Pro gelöschten Eintrag rutscht sie wieder nach oben.

Ich habe leider keine ahnung wo das Problem liegt, vielleicht kann mir hier jemand helfen.

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
.tabletop {
position:absolute;
top:30px;
}
</style>
</head>
<body>
<div id="center">
<?php

// Datenbankverbindung aufbauen 
    $db_user = 'user';
    $db_pass = 'pass';
    $db_host = 'localhost';
	
// Verbinden
    $dblink = mysqli_connect($db_host, $db_user, $db_pass);
    $selected = mysqli_select_db($dblink, 'assona');
    
    if (!$selected) {
    die ('Cannot use DB : '.mysqli_error($dblink));
    }
    
    mysqli_set_charset($dblink, 'utf8');

	
// query	
$sql = "SELECT * FROM daten WHERE status IS NULL or status = 'angenommen' or status = ' ' or status = 'abgelehnt'"; 
$result = mysqli_query($dblink,$sql);


// status ändern
if (isset($_POST['changestatus'])){
    $status=$_POST['status'];
    
    $id=$_POST['id'];
	$datum=date("d.m.Y : H:i:s", time());


// Hier werden die Daten in die Datenbank gespeichert
    $sql  = "UPDATE daten ";
    $sql .= "SET status = '$status' ";
    $sql .= "WHERE ";      
    $sql .= "id = '$id'";
 $erg = mysqli_query($dblink,$sql);

    $sql  = "UPDATE daten ";
    $sql .= "SET statusdat = '$datum' ";
    $sql .= "WHERE ";      
    $sql .= "id = '$id'";
 $erg = mysqli_query($dblink,$sql); 

//echo '<strong> Die Daten wurden auf ' . $status . ' ge&auml;ndert.<br /><br /></strong>';
$sql = "SELECT * FROM daten WHERE status IS NULL or status = 'angenommen' or status = ' ' or status = 'abgelehnt'"; 
$result = mysqli_query($dblink,$sql);
}

// waei ändern
if (isset($_POST['changewaei'])){
    $waei=$_POST['waei'];
    
    $id=$_POST['id'];


// Hier werden die Daten in die Datenbank gespeichert
    $sql  = "UPDATE daten ";
    $sql .= "SET waei = '$waei' ";
    $sql .= "WHERE ";      
    $sql .= "id = '$id'";
 $erg = mysqli_query($dblink,$sql);

//echo '<strong> Die Daten wurden auf ' . $status . ' ge&auml;ndert.<br /><br /></strong>';
$sql = "SELECT * FROM daten WHERE status IS NULL or status = 'angenommen' or status = ' ' or status = 'abgelehnt'"; 
$result = mysqli_query($dblink,$sql);
}

// kv ändern
if (isset($_POST['changekv'])){
    $kv=$_POST['kv'];
    
    $id=$_POST['id'];


// Hier werden die Daten in die Datenbank gespeichert
    $sql  = "UPDATE daten ";
    $sql .= "SET kv = '$kv' ";
    $sql .= "WHERE ";      
    $sql .= "id = '$id'";
 $erg = mysqli_query($dblink,$sql);

//echo '<strong> Die Daten wurden auf ' . $status . ' ge&auml;ndert.<br /><br /></strong>';
$sql = "SELECT * FROM daten WHERE status IS NULL or status = 'angenommen' or status = ' ' or status = 'abgelehnt'"; 
$result = mysqli_query($dblink,$sql);
}



// Ausgabe auf der Seite

$num_results = $result->num_rows;

echo 'Anzahl aller noch nicht abgeschlossenen EONs:' . $num_results;
echo '<div class="tabletop">';
echo '<table border="1" cellspacing="0" cellpadding="3" align="center" valign="middle">';
echo '<tr align="center" valign="middle">
<td>&nbsp;&nbsp;id&nbsp;&nbsp;</td>
<td>&nbsp;schunum&nbsp;</td>
<td>&nbsp;schanum&nbsp;</td>
<td>&nbsp;sdat&nbsp;</td>
<td>&nbsp;&nbsp;&auml;ndern in&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;WaEi&nbsp;</td>
<td>&nbsp;KV&nbsp;</td>
<td>&nbsp;namek&nbsp;</td>
<td>&nbsp;deck&nbsp;</td>
<td>&nbsp;herst&nbsp;</td>
<td>&nbsp;modell&nbsp;</td>
<td>&nbsp;sn&nbsp;</td>
<td>&nbsp;fehler&nbsp;</td>
</tr>'; 

for ($i = 0; $i < $num_results; $i++){
    $row = $result->fetch_assoc();
 echo "<tr align='center' valign='middle'>"; 
 echo "<td><form method='post' action='assonaentry.php'>". $id = $row['id'] . "</td>"; 
 echo "<td>&nbsp;". $row['schunum'] . "&nbsp;</td>";
 echo "<td>&nbsp;". $row['schanum'] . "&nbsp;</td>";
 echo "<td>&nbsp;". $row['sdat'] . "&nbsp;</td>";
 echo "    <td>&nbsp;" . $row['status'] ."<br> 
         <select name='status'>
			<option value=' '> </option>
            <option value='abgelehnt'>abgelehnt</option>
            <option value='angenommen'>angenommen</option>
            <option value='entsorgung'>entsorgung</option>
        </select><br>
        
        
        &nbsp;</td>";
        
echo "<select name='id' style='visibility:hidden;'><option>$id</option></select>";        
echo "<td>&nbsp;<input name='changestatus' type='submit' value='ok'>&nbsp;</td></form>";

echo "<FORM method='post' action='assonaentry.php'>
         <select name='waei' style='visibility:hidden;'>
            <option value='" . date("d.m.Y : H:i:s", time()) . "'>" . date("d.m.Y : H:i:s", time())  . "</option>
        </select>
<select name='id' style='visibility:hidden;'><option>$id</option></select>
<td align='center'>&nbsp;<INPUT TYPE='submit' name='changewaei' VALUE='email' onClick=\"parent.location='mailto:froemel@vilotec.de?subject=Notebook im Wareneingang (Schutzbriefnr. " . $row['schunum'] . " - Schadennr. " . $row['schanum'] . ")&bcc=assona@vilotec.de&body=text'\"><br>".$row['waei']."</FORM>&nbsp;</td>";

echo "<FORM method='post' action='assonaentry.php'>
         <select name='kv' style='visibility:hidden;'>
            <option value='" . date("d.m.Y : H:i:s", time()) . "'>" . date("d.m.Y : H:i:s", time())  . "</option>
        </select>
<select name='id' style='visibility:hidden;'><option>$id</option></select>
<td align='center'>&nbsp;<INPUT TYPE='submit' name='changekv' VALUE='email' onClick=\"parent.location='mailto:froemel@vilotec.de?subject=Notebook Kostenvoranschlag (Schutzbriefnr. " . $row['schunum'] . " - Schadennr. " . $row['schanum'] . ")&bcc=assona@vilotec.de&body=text'\"><br>".$row['kv']."</FORM>&nbsp;</td>";

 echo "<td>&nbsp;". $row['namek'] . "&nbsp;</td>";
 //echo "<td>". $row['strk'] . "</td>";
 //echo "<td>". $row['plzortk'] . "</td>";
 //echo "<td>". $row['telk'] . "</td>";
 //echo "<td>". $row['emailk'] . "</td>"; 
 echo "<td>&nbsp;". $row['deck'] . "&nbsp;</td>"; 
 //echo "<td>". $row['sb'] . "</td>"; 
 echo "<td>&nbsp;". $row['herst'] . "&nbsp;</td>"; 
 echo "<td>&nbsp;". $row['modell'] . "&nbsp;</td>"; 
 echo "<td>&nbsp;". $row['sn'] . "&nbsp;</td>"; 
 //echo "<td>". $row['kdat'] . "</td>"; 
 echo "<td>&nbsp;". $row['fehler'] . "&nbsp;</td>"; 
 //echo "<td>". $row['status'] . "</td>";
 echo "</tr>";
 }
 echo "</table></div>";
?>

</div>
</body>
</html>

Vielen Dank im Voraus
 
Zeile 130: Du beginnst ein Formulat innerhalb eines td-Tags und schliesst es nicht innerhalb dieses Tags. Tags sollten sich nicht kreuzen!
Zeile 145: Du gibts für jeden Datensatz ein verstektes Feld aus, dass nicht innerhalb eines Feldes (<td>...</td>) gesetzt wird und darum vor der Tabelle ausgegeben wird.
PHP:
	echo "<select name='id' style='visibility:hidden;'><option>$id</option></select>";

Zeile 146: Schliessen des form-Tags aus Zeile 130. Somit hast du sowas und das ist gar nicht gut
HTML:
<table><tr><td><form></td></form></tr></table>

Zeile 148: Ein Formular das nicht innerhalb von td-Tags ist. dito zu Zeile 145

Zeile 153: Du schliesst einen td-Tag den du nie geöffnet hast
Zeile 160: dito

Das gibt alles in allem etwa diese html-Struktur und das ist alles, nur kein sauberes html
HTML:
<table>
	<tr>
		<td>...</td>
		<select>...</select>
		<td>
			<form>
		</td>
		<td>
			</form>
		</td>
		<form>...</form>
		</td>
		<form>...</form>
		</td>		
		<td>...</td>
	</tr>
</table>

Tipp: Schau dir den generierten HTML-Source an. da sieht man was in den Zeilen steht


Nebenbei
item: Du kannst die 2 Update in einem update lösen. SET status = '$status', statusdat = '$datum'
item: Warum das SELECT jedesmal neu ausführen? Führe es einmal nach allen Updates aus. Vorher brauchst du es nicht.
 
Zuletzt bearbeitet:
Hallo yaslaw,
vielen dank für deine Ratschläge, jetzt habe ich die befolgt und meine Table iss nun ganz kaputt, da er für das:
echo "<select name='id' style='visibility:hidden;'><option>$id</option></select>";

im td tag einen Platz reserviert, dadurch verrutscht alles im td tag :)

Irgendeine Idee wie ich das lösen könnte?

edit:
So Problem gelöst, allerdings voll unsauber :)

Den ungewünschten Teil in einen div gesetzt und irgendwo platziert (iss ja eh invisible) *lach*

Voll der Murks, aber für meinen Zweck reicht es :)
 
Zuletzt bearbeitet:
Zurück