WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- Anfänger Select von dropdown Problem

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » Anfänger Select von dropdown Problem - 21 Dez 2024 Antworten
im Forum für Webhosting Homepage gefunden:
Anfänger Select von dropdown Problem
SuperMarioTM
Pixelschubser
Threadstarter




Beiträge: 2

Hallo liebes Forum,
Da ich niemanden persöhnlich fragen kann poste ich mal meinen code hier:
include 'logindata.php'; # Die Verbindung wird hergestellt bekomme auch das echo OK!
?>





Abfrage















$verbindung = @mysqli_connect($server, $benutzer, $passwort);

if (isset($_GET["instrument"])){
$sql = "SELECT * FROM musiker WHERE instrument = '({$_GET['instrument']})' " ;
$abfrage = mysqli_query($verbindung, $sql);
echo '

' . mysqli_num_rows($abfrage) . ' Musiker gefunden

';#LINE 39


}else{
echo 'Verbindungsfehler: '.mysqli_connect_error($verbindung);
}
?>


Fehlermeldung:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/.sites/41/site1524/web/mysql/abfrage/abfrage.php on line 39

Es wird hier sicherlich an was grundlegendem liegen was ich noch nicht verstanden habe!
Bitte nimm nicht an das ich das recht gut kann ich bin gerade mitten im lernen, habe 2 Bücher vor mir liegen und ein Galileo computing tut offen.

Wie gesagt für kleinere Erklärungen wie zbsp.:

Lass dir die Fehlermeldung ausgeben mit zbsp. ......... weil so macht man das, wäre ich sehr dankbar!
Dankeschön

Diese Nachricht wurde geändert von: SuperMarioTM
  Profil   Editieren   Zitieren
Ori
Mausakrobat




Beiträge: 162

Zu deinem Problem:
Die Syntax sieht korrekt aus. Aber die Abfrage gibt wohl false zurück, d.h. es ist ein Fehler aufgetreten. Den kannst du dir mit $verbindung->error oder mysqli_error($verbindung) ansehen. Rufe es direkt nach der Abfrage auf und gib es mit echo aus.

Ich finde die Klammern um das Instrument übrigens seltsam - die würde ich gar nicht erst in der Datenbank speichern.


Und ein paar generelle Dinge:
- Den echten Vorteil bringt mysqli, wenn du es objekt-orientiert verwendest. Es ist kürzer und lässt dich neue Methoden für die Datenbankbehandlung direkt in die Klasse schreiben, wo sie hingehören.
- Benutz kein ISO-8859-1, sondern UTF-8. Dann kannst du alle Zeichen benutzen, quasi alle können es verarbeiten und
- HTML 4.01 Transitional ist auch von gestern.
- ist auch doof. (Das Attribut name ist in deinem Fall übrigens überflüssig.) Nimm lieber .
- NIEMALS Parameter DIREKT an MySQL füttern! (oder was passiert beim Aufruf von abfrage.php?instrument='; DROP TABLE musiker; # ? Kleiner Tipp: Nicht ausprobieren.) Stattdessen sollten alle Strings, die nicht sicher sind (also von außen kommen), vorher durch mysqli_real_escape_string gejagt werden, damit sowas nicht passieren kann. Etwa so:
$abfrage = mysqli_query($verbindung, sprintf("SELECT * FROM musiker WHERE instrument = '(%s)'", mysqli_real_escape_string($_GET['instrument'])));
Es gibt noch weitere Möglichkeiten (z.B. Prepared Statements).

  Profil   E-Mail   Website   Editieren   Zitieren
SuperMarioTM
Pixelschubser
Threadstarter




Beiträge: 2

datei online

Ich habe jetzt folgende Änderungen vorgenommen:
-1. Den Error eingebaut der mir jetzt sagt no database selected
-2. Die Abfrage so geändert wie du es gesagt hast (string)
-3. UTF-8 hab ich auch gemacht
-4. Was sollte ich statt HTML 4.01 Sonst nehmen oder einfach nur noch HTML?

Mein Problem ist:

Ich habe zwei Bücher vor mir und ein galileo tut.
Überall wird es anders gemacht bzw. wird ein formular mit anschliessender auswertung garnicht behandelt



include 'logindata.php'; # Die Verbindung wird hergestellt bekomme auch das echo OK!
?>





Abfrage



















$verbindung = @mysqli_connect($server, $benutzer, $passwort);

if (isset($_GET["instrument"])){

$abfrage = mysqli_query($verbindung, sprintf("SELECT * FROM musiker WHERE instrument = '(%s)'", mysqli_real_escape_string($_GET['instrument'])));
echo mysqli_error($verbindung);
echo '

' . mysqli_num_rows($abfrage) . ' Musiker gefunden

';#LINE 39


}else{
echo 'Auswahl ';
}
?>

Diese Nachricht wurde geändert von: SuperMarioTM
  Profil   Editieren   Zitieren
Ori
Mausakrobat




Beiträge: 162

Richtig, du musst noch die Datenbank auswählen. Meist benutzt man mit einer Verbindung nur eine einzige Datenbank, wähle sie mit dem vierten Parameter von mysqli_connect() aus:
1:
$verbindung = mysqli_connect($server, $benutzer, $password, 'datenbank');

Im Nachhinein lässt sich die Datenbank mit
1:
USE xyz
ändern.

Vermutlich willst du die Datenbank auch in eine Variable auslagern, die in der Datei logindata.php gespeichert wird. Die solltest du übrigens logindata.inc taufen, damit sie nicht von außen aufgerufen werden kann. Außerdem sollten es keine Variablen sein, da deren Inhalte verändert werden könnten. Stattdessen bieten sich Konstanten an. Sie lassen sich mit define() festlegen und ihre Namen werden komplett in Großbuchstaben geschrieben (nicht notwendigerweise, ist aber Konvention).

1: 
2: 
3: 
4: 
5:
define('DB_SERVER', 'localhost');
define('DB_BENUTZER', 'userxyz');
// usw.

$verbindung = mysqli_connect(DB_SERVER, DB_BENUTZER, DB_PASSWORT, DB_DATENBANK);


Wenn du UTF-8 statt ISO-8859-1 benutzt, musst du vermutlich auch die Einstellungen deines Editors ändern, damit es wirklich UTF-8 ist. Bei den Zeichen, die du im Moment verwendest, sind sie aber gleich.

Im Moment wird an HTML 5 gebrütet, der Doctype sieht dann so aus:
1:

Wenn dir das zu experimentell ist, nimm HTML 4.01 Strict (), XHTML 1.0 Strict oder XHTML 1.1. Deren Doctype kannst du im Zweifelsfall einfach googlen. Auf diese Weise erzeugt Dokumente (also das, was im Browser ankommt) kannst du dann durch den W3C Validator jagen; der sagt dir dann, ob alles in Ordnung ist. Solltest du dich für XHTML entscheiden, achte auf die XML-Präambel und das Schließen von Tags ohne Endtag, wie und .

  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Forum » PHP & MySQL » Anfänger Select von dropdown Problem

Aktuelle Beiträge zur Hilfe im Forum für Homepage - Anfänger Select von dropdown Problem im Forum Homepage Hosting AntwortenLetztes Posting
Cybersicherheit für Unternehmen
in "PHP & MySQL"
3 18.11.2024 14:05 von Gaswer
Wirtschaftslage in der Ukraine
in "PHP & MySQL"
3 22.10.2024 15:04 von Gaswer
Rangliste (Ohne Mysql) (Kompliziertes Ordner System)
in "PHP & MySQL"
3 19.07.2021 06:00 von newtopblog
kleines problem mit phpadmin
in "PHP & MySQL"
5 11.04.2021 22:22 von Zavylon
Counter mit PHP
in "PHP & MySQL"
4 22.03.2021 16:29 von Robeni
Fehlermeldung beim Importieren der Datenbank in phpmyadmin
in "PHP & MySQL"
0 02.08.2019 22:14 von iFuchs
CMS für Online Shop
in "PHP & MySQL"
18 26.05.2019 13:29 von raiserle
Regestrierungproblem
in "PHP & MySQL"
3 28.11.2018 13:20 von norbertofahey
PHP Datum ausgeben?
in "PHP & MySQL"
1 19.10.2018 10:04 von Klaus1973
PHP befehl ausführen
in "PHP & MySQL"
11 16.08.2018 09:08 von Klaus1973
Visual Composer selber programmieren?
in "PHP & MySQL"
0 22.01.2017 23:45 von Redji



Besucher : 8143347    Heute : 570     Gestern : 558     Online : 106     21.12.2024    17:51      2 Besucher in den letzten 60 Sekunden        
alle 30.00 Sekunden ein neuer Besucher
Nach oben