Der erste Eintrag in der MYSQL Datenbank wird nicht beim auslesen angezeigt (PHP, MYSQL)?
Ich bin im Moment dabei ein kleines System mit PHP zu coden, ich möchte die Daten die ich davor in der MYSQL Datenbank gespeichert habe wieder auf einem Dashboard auszulesen. Ich bin jetzt so gut wie fertig mit den Funktionen, allerdings wenn ich die Daten ausgeben will wird mir immer der erste Datensatz der in der MYSQL datenbank steht nicht angezeigt.
Kennt jemand eine Lösung? Ich werde Screenshots beifügen und natürlich auch per Pastepin den Code beifügen.
Pastebin: https://pastebin.com/5usC0GL4
4 Antworten
Du liest die erste Zeile zwar aus, überschreibst sie mit der Schleife dann aber wieder.
// ...
$row = mysqli_fetch_array($result);
?>
<!-- ... -->
<?php
while ($row = mysqli_fetch_array($result)) {
// ...
Nimm also den ersten Aufruf von mysqli_fetch_array raus.
Noch ein paar weitere Anmerkungen:
- Die Filterung nach developer-Einträgen kannst du bereits mit dem SQL Query vornehmen (WHERE-Klausel)
- Binde Styles im head ein. CSS sollte so früh wie möglich angeführt werden. Zudem hast du doch bereits eine style.css. Wieso definierst du in dieser nicht auch deine Textzentrierung?
- Wenn du mit die das Skript vorzeitig beendest, renderst du ein invalides Dokument aus.
Angenommen, es existiert tatsächlich keine User-ID. Dann würde dein Skript durch die vorzeitig abbrechen. Der Server würde nur den String an den Browser schicken, den du angegeben hast:
Bitte zuerst <a href="login.php">einloggen</a>
Dies stellt aber kein valides HTML-Dokument dar, denn dieses besteht stets aus mindestens einem Doctype und einem Seitentitel. Diese Rückgabe wäre also valid:
<!doctype html><title>Bitte erst einloggen</title>Bitte zuerst <a href="login.php">einloggen</a>
Noch besser wäre es natürlich, die Abfrage nach der User-ID erst im body-Bereich (mit if-elseif, statt die) zu machen, wenn dein Styling bereits eingebunden wurde. Dann wäre selbst die Fehlerseite noch im üblichen Styling hinterlegt.
Habe es jetzt im Body berreich gemacht mit einer if und else abfrage, funktioniert auch alles.
Sieht jetzt folgendermaßen aus: https://pastebin.com/JdiHCqie
Vielen dank für deine Hilfe :D
Nimm doch mal diese unnötige IF ABfrage raus und änder die Query in:
SELECT * FROM bewerbungen where als = 'developer'
Vielen dank, kenne mich noch nicht so mit MYSQL aus habe es nun geändert und Funktioniert nun alles allerdings lag es nicht daran. Trotzdem Danke :D
Das liegt am Code.
Die nimmst nur die erste Reihe.
Du musst per Schleife durch die Ergebnisse gehen.
while ($row = mysql_fetch_array($result))
{
//Code
}
In Code erfolgt dann jeweils die Behandlung mit jeder Bewerbung.
Weil er nur die erste Reihe nimmt, wird bei ihm die erste Reihe nicht ausgespielt? Du hast dir wohl weder die Frage, noch den Code vollständig angeschaut.
Ich habe es am Handy schnell überflogen, da ist die Schleife wohl untergegangen
wie liest du denn aus?? PHP oder womit?
Funktioniert Logischerweiße nicht einfach mehr Einträge hinzuzufügen und ergibt auch keinen Sinn da es solche Bugs nicht in einem System geben sollte!
Habe inzwischen ein Lösung gefunden, trotzdem Danke für deine Antwort..
Naja, klar kann man neue Einträge über die SQL Konsole hinzufügen.
Wenn du 2 Einträge hast, und nur einer Angezeigt wird, erstellt man einen 3. und ruft dann nochmal die Daten ab. --> Dann kann es durchaus ja möglich sein, das auf einmal der Eintrag 2 und 3 angezeigt wird, dann weis man das irgendwas mit Eintrag 1 nicht stimmt. Aber ja du hast recht, solche Fehler sollten besonders in PHP und SQL tatsächlich nicht vorkommen.
Erstmal vielen dank für deine Antwort,
habe die filterung jetzt direkt in der SQL Query abfrage vorgenommen arbeite noch nicht so lange mit mysql deshlab kannte ich diese Funktion noch nicht vielen dank schonmal für diesen Tipp.
Die style habe ich nur kurz dort eingebunden das es übersichtilicher ist, es wird vom Design eh noch komplett überarbeitet daher ist auch schonmal bootstrap und weiteres eingebunden ich wollte allerdings erst die Funktionen testen bevor ich mich um das Design kümmere.
Wie meinst du das mit dem Vorzeitigem Skirpt beenden, hab ich noch irgendetwas Falsch geamcht oder passt so alles?
Ich weiß nicht was mich dazu getrieben hat den mysqli_fetch_array oben hinzuschreiben habe ihn rausgenommen nun Funktioniert alles ich schick mal nochmal ein Pastebin: https://pastebin.com/i7ZbfLTW
Vielen Dank für deine Hilfe :D