HTML/PHP/SQL Problem

Hey Leute,

ich hab ein Problem bei HTML/PHP/SQL. Wir sollen für die Schule eine Verbindung zu SQL machen und eine Art Telefonbuch erstellen. Dafür habe ich diesen Code:

<!doctype>

Telefonbuch

Geben Sie den Ort ein:

<?php function show_table($result) { if(!$result) { echo "Kein Gültiges Abfrage-Ergebnis"; return; } if($result->num_rows>0 && $result->field_count>0) { echo ""; // Spaltenbeschriftung echo ""; foreach($result->fetch_fields() as $meta) { echo " ".$meta->name."\n"; //oder: printf("%s", htmlentities($meta->name)); } // Tabelleninhalt while($row = $result->fetch_row()) { echo ""; foreach($row as $col) echo " ".$col."\n"; //oder: printf("%s", htmlentities($col)); echo "\n"; } echo "\n"; } } $db_host = "localhost"; //Hostname $db_user = "root"; //Benutzername $db_pass = ""; //Passwort $datab = "praktikum"; //Datenbankname /*Verbindung zur Datenbank aufbauen */ $db = @new mysqli ($db_host,$db_user,$db_pass,$datab); //Überprüfung der Verbindung if ($db -> connect_errno) { echo 'Fehlertext: '. $db ->connect_error .'
'; echo 'Fehlercode: '. $db ->connect_errno .'
'; die ('Verbindung abgebrochen'); //'die' trennt die Verbindung zum Server } //end of if else echo 'Verbindung hergestellt'; mysqli_set_charset($db,"UTF8"); if (isset ($_POST['senden'])) { $Ort=$_Post["Ort"]; $abfrage= "SELECT Vorwahl FROM vorwahlen WHERE Ort = [$Ort]"; echo $abfrage; $result = $db -> query($abfrage); if (!$result) { die ('Datenbankfehler: '.$db -> error); }; show_table ($result); $result -> close (); unset ($result); $db -> close (); } ?>

Jedoch funktioniert dieser nicht. Er sucht den Ort nicht raus und zeigt mir die Zeile und sagt Where Ort = Datenbankfehler

$abfrage= "SELECT Vorwahl FROM vorwahlen WHERE Ort = $Ort";

Könnt ihr mir da weiterhelfen??

Danke schonmal im voraus!

Gruß Turmwache

...zum Beitrag

Bei WHERE Ort = [$Ort]" fehlt vermutlich ein ". Es müsste (vermutlich) lauten: WHERE Ort = "[$Ort]"

...zur Antwort

mach ein array von textboxen, dann gilt der code für alle.

...zur Antwort

DDL = data definition language = damit werden datenstruturen definiert

DCL = data control language = Rechteverwaltung und Transaktionskontrolle

Dann gäbe es auch noch:

DML = data manipulation language = alles zum Daten ändern (insert, update, delete)

Das sollte doch nicht so kompliziert sein zum Auseinanderhalten... ;-)

...zur Antwort

Ohne die Datenstrukturen und ohne weitere Erklärungen wird Dir keiner helfen können.. ;-)

...zur Antwort

datümer lassen sich wie zahlen addieren:

datum + 1 => datum + 1 tag datum + 1.5/24 => addiert 90 min

wenn du nur die zeit auszgeben willst, brauchst du die to_char funktion:

select to_char(datum+1.5/24, 'hh24:mi:ss') ......

...zur Antwort

Du musst einen LEFT JOIN oder RIGHT JOIN nehmen, statt dem einfachen JOIN. Einfach ausprobieren, was zum richtigen Ergebnis führt..

...zur Antwort

Du musst unterscheiden zwischen zwei Dingen:

Der Primary Key in der einen Tabelle ist natürlich NOT NULL (sonst wäre es nicht eindeutig)

Der Foreign Key in der anderen Tabelle kann NULL-able definiert sein (kann also leer bleiben). Sofern Du aber einen Wert im Foreign key einträgst, muss dieser Wert auch in der Primary Tabelle zu finden sein.

Wenn in der Foreign Key Tabelle das Foreign Key Feld als NOT NULL definiert ist, musst Du natürlich auch immer etwas eintragen.

...zur Antwort

da wirst du sicher noch tüfteln müssen... ;-)

die meldungen sind eigentlich recht aussagefähig. wenn du die spalten nicht lokalisieren kannst, die die probleme verursachen, dann versuch doch zuerst mal mit 2-3 spalten einzufügen. wenn die funktionieren, fügst du weitere spalten hinzu. so kannst du leicht die fehlerquelle lokalisieren.

ach ja, und zwischen den einzelnen tests immer wieder die sql tabelle leer machen..

ps offensichtlich ist account type ID ein feld, dass du abfüllen musst (not null). das kannst du nicht ignorieren..

...zur Antwort

wenn der ländername in der tabelle politics zu finden ist, ist es einfach:

select politics.countryname, politics.country from ...... (alles andere wie in deinem statement)

wenn nicht, musst du die tabelle mit den ländernamen mit verknüpfen (analog zu politics und continent)

...zur Antwort

Die Update Syntax ist generell:

UPDATE tabelle

SET column = ....

WHERE bedingung...

Du musst SET vor WHERE setzen.

Danach wird Dein Statement immer noch nicht funktionieren. Ein Update geht nicht über mehrere Tabellen, sondern immer über eine. Wenn Du Werte Deiner Update-Tabelle mit einer anderen Tabelle verknüpfen willst, musst Du eine andere Syntax (mit Tabellen-Alias) verwenden:

Update Tab1 alias (diesen Alias im Subselect verwenden)

SET column = (select col from Tab2 where alias.column = tab2.column)

WHERE ......

...zur Antwort
Häufung von fast identischen Programmen - C++ Redistributable, SQL Server

Hi!

Im Laufe der Zeit häufen sich bei mir folgende Programme in der Softwareliste (Win7):

Microsoft .NET Framework 4 Multi-Targeting Pack Microsoft Corporation 03/06/2012 83,5MB 4.0.30319 Microsoft .NET Framework 4.5 DEU Language Pack RC Microsoft Corporation 03/06/2012 4.5.50501 Microsoft .NET Framework 4.5 RC Microsoft Corporation 17/11/2012 4.5.50501

Microsoft SQL Server 2005 Compact Edition [ENU] Microsoft Corporation 12/04/2010 1,72MB 3.1.0000 Microsoft SQL Server 2008 (64-bit) Microsoft Corporation
Microsoft SQL Server 2008 Browser Microsoft Corporation 06/09/2011 8,00MB 10.1.2531.0 Microsoft SQL Server 2008 Native Client Microsoft Corporation 06/09/2011 7,07MB 10.1.2531.0 Microsoft SQL Server 2008 R2 Management Objects Microsoft Corporation 06/09/2011 17,1MB 10.50.1447.4 Microsoft SQL Server 2012 Command Line Utilities Microsoft Corporation 03/06/2012 2,46MB 11.0.2100.60 Microsoft SQL Server 2012 Data-Tier App Framework Microsoft Corporation 03/06/2012 9,50MB 11.0.2100.60 Microsoft SQL Server 2012 Express LocalDB Microsoft Corporation 03/06/2012 160MB 11.0.2100.60 Microsoft SQL Server 2012 Management Objects Microsoft Corporation 03/06/2012 25,1MB 11.0.2100.60 Microsoft SQL Server 2012 Management Objects (x64) Microsoft Corporation 03/06/2012 19,2MB 11.0.2100.60 Microsoft SQL Server 2012 Native Client Microsoft Corporation 03/06/2012 9,34MB 11.0.2100.60 Microsoft SQL Server 2012 T-SQL Language Service Microsoft Corporation 03/06/2012 6,21MB 11.0.2100.60 Microsoft SQL Server 2012 Transact-SQL Compiler Service Microsoft Corporation 03/06/2012 92,1MB 11.0.2100.60 Microsoft SQL Server 2012 Transact-SQL ScriptDom Microsoft Corporation 03/06/2012 4,59MB 11.0.2100.60 Microsoft SQL Server Compact 3.5 SP2 DEU Microsoft Corporation 06/09/2011 3,68MB 3.5.8080.0 Microsoft SQL Server Compact 3.5 SP2 x64 DEU Microsoft Corporation 06/09/2011 4,81MB 3.5.8080.0 Microsoft SQL Server Compact 4.0 SP1 x64 DEU CTP1 Microsoft Corporation 03/06/2012 20,7MB 4.0.8872.1 Microsoft SQL Server Data Tools - DEU (11.1.20425.00) Microsoft Corporation 03/06/2012 16,0MB 11.1.20425.00 Microsoft SQL Server Data Tools Build Utilities - DEU (11.1.20425.00) Microsoft Corporation 03/06/2012 952KB 11.1.20425.00 Microsoft SQL Server System CLR Types Microsoft Corporation 03/06/2012 960KB 10.50.1600.1 Microsoft SQL Server System CLR Types (x64) Microsoft Corporation 03/06/2012 840KB 10.50.1600.1 Microsoft SQL Server VSS Writer Microsoft Corporation 06/09/2011 3,59MB 10.1.2531.0

Microsoft Visual C++ 2005 ATL Update kb973923 - x86 8.0.50727.4053 Microsoft Corporation 09/04/2011 250KB 8.0.50727.4053 Microsoft Visual C++ 2005 Redistributable Microsoft Corporation 12/06/2012 2,69MB 8.0.56336 Microsoft Visual C++ 2005 Redistributable (x64) Microsoft Corporation 21/08/2013 706KB 8.0.56336 und so weiter...

  1. Warum hab ich so viele jeweils?
  2. Welche kann/sollte ich löschen ohne dass nachher nichts mehr funktinoiert? Danke!
...zum Beitrag

Auch Updates zu bestehenden Programmen werden oft extra aufgeführt. Was du nicht mehr brauchst bzw. benutzt, kannst du löschen => rechte Maustaste und "deinstallieren/ändern" wählen.

Die selbe Aufräumübung ist ab und zu auch sinnvoll für "Start => Programme".

...zur Antwort

Versuch es mal mit COMMIT. Das kennen die meisten SQL Datenbanken.

...zur Antwort

schreib doch dieses tool zum erstellen von tsf format doch selber. oder benutze ein tool für csv und ersetze das trennzeichen mit dem tab-value..

...zur Antwort

Von alleine geht die Anpassung in der View nicht. Du musst alle Spalten, die Du in der Tabelle löscht auch aus der View entfernen. Sonst wird die View invalid. Zum ändern der View gibt es ein "ALTER VIEW" Kommando, analog zu "ALTER TABLE".

...zur Antwort

beide abfragen lassen sich einfacher formulieren.

ermittlung der maximalwerte:

select max(id), buchnummer from buch group by buchnummer;

ermittlung ohne maximalwerte:

select id, buchnummer from buch, (select max(id) id, buchnummer from buch group by buchnummer) maxbuch where buch.id <> maxbuch.id AND buch.buchnummer = maxbuch.buchnummer;

die zweite abfrage geht sicher noch einfacher zu formulieren.

wünsche dir weiterhin viel erfolg mit SQL! :)

...zur Antwort