Zitat geschrieben von
IthronBtw: Wenn du " für einen String benutzt kannst du Variablen direkt einfügen ohne vorher den String zu unterbrechen, das ist nur bei ' nötig.
Zitat geschrieben von
DazzelAber die " sind beim PHP-Parser aufwendiger zu parsen und das heißt es geht auf die Performence...
es hat nicht nur performance gründe, auch die wartbarkeit sielt hier eine rolle, syntaxhighlighter haben unter umständen probleme variablen so hervorzuheben was unter umständen zu einigen gesuche führen kann.
man sollte sich angewöhnen variablen per konkentation ( "bla: ".$var; ) anzuhängen.
dies ist ein guter standard mit dem man nichts falsch machen kann.
das schlimmste negativbeispiel was ich dazu sah war ( "id$bla" ), dies ist unglaublich unlesbar und erschwert die arbeit ungemein.
darüber hinaus ist es sinnvoll PHP dateien nicht mit "?>" abzuschließen, dies ist NICHT notwendig und beugt whitedpacezeichen nach dem schließenden PHP tag vor die dazu führen würden das Header informationen gesendet werden.
dies währe fatal für session_start() oder das senden eines eigenen headers z.b. beim generieren und anzeigen einer grafik per GDLibrary.
so nu zu deinen 2 pastes
<?php
/**
* Erstellung derSelect options
*/
$sql ="SELECT `vorname`, `nachname`, `kunde`, `id` FROM `kunden` ORDER BY `kunde`" ;
$erg = mysql_query($sql);
$output_list = ''; // Erstinitialisierung
while($row = mysql_fetch_object($erg))
{
$output_list .= '<option value="'.$row->id.'">'.$row->vorname.' '.$row->nachname.' , '.$row->kunde.'</option>';
}
/**
* Zusammenstellung der ausgabe
*/
$output = '<form action="index.php?changekunde" method="POST">';
$output .= 'Kunden auswählen: <select name="liste">' . $output_list . '</select>';
$output .= '<input type="submit" style="margin-left:5px;" value="weiter..">';
$output .= '</form>';
<?php
$output = '';
// überprüfung ob das argument überhaupt valide ist um fehler entsprechend zu behandeln
if (is_numeric($_POST['liste']) {
$liste = $_POST['liste'];
$sql = "SELECT `kunde`, `id` FROM `kunden` WHERE `id` = " . $liste;
$erg = mysql_query($sql);
$row = mysql_fetch_object($erg)
$output = $row->kunde;
} else {
$output = 'Das übergebene argument ist keine gültige Datensatz ID';
}
willst du nun ilch datenbankfunktionen benutzen oder standard php funktionen? konsistent bleiben.
Zitat geschrieben von
GeCk0ist die variable liste (list) evtl von php reserviert und geht deshalb nicht ? kA
nein ist sie nicht, es gibt list() womit du z.b. ein array in key und value paare aufteilen könntest. aber das hat nix mit dem problem hier zu tuen.
Zitat geschrieben von
GeCk0"SELECT `kunde` FROM `kunden` WHERE `id` > '".$liste."'"
soweit ich das verstanden habe erzeugt jeder kundendatensatz genau 1 select feld! deshalb verstehe ich den sinn des querys nicht indem etwas gesucht wird wo das feld id größer ist als das übergebene argument!
in dem von mir gepasteten code habe ich dies umgeändert zu "`id` = $liste" da ich denke hier soll ein bestimmter datensatz geholt werden.
wenn numerische werte abgefragt werden ist es ausserdem nicht notwendig den wert im query in anführungszeichen einzuschließen, dies ist jedoch zwingend bei strings erforderlich!
Zitat geschrieben von
Ithronmach mal vor ?> ein echo mysql_error();
schreib lieber "mysql_query OR die(mysql_error()); machen, dies macht mehr sinn da er dann auch beim ausführen des fehlerhaften querys stirbt und dir die informationen gibt. sollte jedoch in einer produktivumgebung entfernt werden.
es ist jetzt 3:00 uhr morgens ich hab den ganzen tag kopfschmerzen gehabt und mir war kotzübel, sollten deshalb inhaltliche fehler in diesen beitrag seien bitte ich dies zu entschuldigen oder mir einen pflock durchs herz zu treiben damit es doch bitte endlich vorbei ist!
Zuletzt modifiziert von annemarie am 02.09.2009 - 03:04:39