php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 27-02-2005, 13:02
celina
 Newbie
Links : Onlinestatus : celina ist offline
Registriert seit: Feb 2005
Beiträge: 23
celina ist zur Zeit noch ein unbeschriebenes Blatt
Standard Fehlermeldung mit Join

Hallo,

ich weis das dieses Thema schon sehr oft behandelt wurde und ich denke auch dass ich alle Posts durchgelesen hatte die mir hätten helfen können, jedoch bekomme ich trotzdem immer noch folgende Fehlermeldung:
Zitat:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web15/html/sms/outbox.php on line 88
Wobei die Zeile 88 folgendes enthält :
PHP-Code:
while($row mysql_fetch_array($result)) 
also denke ich mal dass die Abfrage fehlerhaft ist.

Ich habe folgendes vor :

Tabelle sms_senden :
id || sender || empaenger || text || status_id

Tabelle sms_antworten :
id || sms_id || antwort || absender ||

Die Inhalte von 'status_id' und 'sms_id' sind gleich und sollen
verglichen werden um den Inhalt von 'antwort' mit dem Inhalt
von 'text' verglichen werden.

z.B.

Tabelle sms_senden
id || sender || empaenger || text || status_id
1 || 12345 || 4567879 || testSMS || 1364120218

Tabelle sms_antworten
id || sms_id || antwort || absender
5 || 1364120218 || Die Antwort || 4567879

Nun möchte ich folgende Tabelle im Script ausgeben :

..... || absender || empfaenger || Text || Antwort ...

und rein muss dann :

..... || 12345 || 4567879 || testSMS || Die Antwort ...
Ohne Vergleich also nur den gesendeteten Text zu protokollieren habe ich folgenden Code genommen
PHP-Code:
... 
$result mysql_query("SELECT * FROM smsbox_senden 
WHERE sender='$_SESSION[nummer]' 
ORDER BY id ASC 
LIMIT "
.$start.",".$eintraege_pro_seite); 
while(
$row mysql_fetch_array($result)) 
  { 
       
$text $row["text"]; 
       
trim ($text); 
       echo 
" .... table .... "
       echo 
$row["sender"
       echo 
$row["empfaenger"
       echo 
$row["text"
       echo 
" .... table ....."

und um mit dem Join zu arbeiten folgenden
PHP-Code:
$result mysql_query("SELECT * FROM smsbox_protokoll 
LEFT JOIN smsbox_antworten 
ON sms_id = status_id 
WHERE sender='$_SESSION[nummer]' 
ORDER BY id ASC LIMIT "
.$start.",".$eintraege_pro_seite); 
aber halt mit einer Fehlermeldung.
Hat jemand zufällig eine Idee was ich falsch gemacht habe ?

Wäre Super - Danke und Gruss
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 27-02-2005, 13:16
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

http://www.php-resource.de/forum/sho...threadid=50454
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 27-02-2005, 14:56
celina
 Newbie
Links : Onlinestatus : celina ist offline
Registriert seit: Feb 2005
Beiträge: 23
celina ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Upppsss sorry !
Zitat:
Column: 'id' in order clause is ambiguous
was für mich nicht wirklich aussagekräftig ist.

Gruss und Danke
Mit Zitat antworten
  #4 (permalink)  
Alt 27-02-2005, 15:54
celina
 Newbie
Links : Onlinestatus : celina ist offline
Registriert seit: Feb 2005
Beiträge: 23
celina ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe nun mal 'alias' für die Abfrage vergeben, damit das Script auch
weis nach welchen 'id' er sortieren soll, denn laut Übersetzung soll das
Wort -> ambiguous -> vieldeutig bedeuten.

Nun bekomme ich aber folgende Fehlermeldung :
Zitat:
You have an error in your SQL syntax near 'WHERE smsbox_protokoll.sender='00491796814560' ORDER BY smsbox_protokoll.id ASC LIMIT 0,5' at line 1
Gruss und Danke
Mit Zitat antworten
  #5 (permalink)  
Alt 27-02-2005, 16:02
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

und was steht davor im sql?
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #6 (permalink)  
Alt 27-02-2005, 16:26
celina
 Newbie
Links : Onlinestatus : celina ist offline
Registriert seit: Feb 2005
Beiträge: 23
celina ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$result mysql_query("SELECT * 
FROM smsbox_protokoll 
LEFT JOIN smsbox_antworten 
WHERE smsbox_protokoll.sender='$_SESSION[nummer]' 
ORDER BY smsbox_protokoll.id 
ASC LIMIT "
.$start.",".$eintraege_pro_seite)
 or die(
mysql_error().'<hr />'.'euer SQL'.'<hr />'); 
ich möchte ja ganz normal alle Felder von der
Tabelle 'smsbox_protokoll' mit mit einer Schleife
mit $row["...."] auslesen können nur möchte ich
zusätzlich von der Tabelle 'smsbox_antworten'
das Feld 'sms_id' mit einem Vergleich von 'status_id'
zusätzlich ausgeben können in dem der Wert von
beiden Tabellen gleich ist.

Also im Prinzip sowas nur nicht ganz so Resourcen fressend:
PHP-Code:
....
$result mysql_query("SELECT * FROM smsbox_protokoll 
WHERE sender='$_SESSION[nummer]' 
ORDER BY id ASC LIMIT "
.$start.",".$eintraege_pro_seite);

while(
$row mysql_fetch_array($result))

{
  echo 
$row["datum"]; 
  echo 
$row["uhrzeit"]; 
  echo 
$row["empfaenger"];
  echo 
$row["text"];

 
$sms_antwort=($row["status_id"]);

 
$result2 mysql_query("SELECT * FROM smsbox_antworten 
 WHERE  sms_id='$sms_antwort'"
);

 
$row2 mysql_fetch_array($result2)

  echo 
$row2["antwort"];

Danke !
Mit Zitat antworten
  #7 (permalink)  
Alt 27-02-2005, 16:59
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von celina
PHP-Code:
$result mysql_query("SELECT * 
FROM smsbox_protokoll 
LEFT JOIN smsbox_antworten 
WHERE smsbox_protokoll.sender='$_SESSION[nummer]' 
ORDER BY smsbox_protokoll.id 
ASC LIMIT "
.$start.",".$eintraege_pro_seite)
 or die(
mysql_error().'<hr />'.'euer SQL'.'<hr />'); 
wo ist das ON für den JOIN geblieben ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 27-02-2005, 19:04
celina
 Newbie
Links : Onlinestatus : celina ist offline
Registriert seit: Feb 2005
Beiträge: 23
celina ist zur Zeit noch ein unbeschriebenes Blatt
Standard

O.K. mit ON funktioniert es, zumindest die Abfrage von zwei Tabellen
aber irgendwie bringt er die Tabellen nun komplett durcheinander.

Kann oder muss ich bei der $row-Abfrage sagen von
welcher Tabellen gelesen werden soll , hier mal mein Code :

PHP-Code:
<?
$result 
mysql_query("SELECT * FROM smsbox_protokoll 
LEFT JOIN smsbox_antworten 
ON sms_id = status_id 
WHERE smsbox_protokoll.sender='$_SESSION[nummer]' 
ORDER BY smsbox_protokoll.id DESC LIMIT "
.$start.",".$eintraege_pro_seite)
 or die(
mysql_error().'<hr />'.'euer SQL'.'<hr />');

while(
$row mysql_fetch_array($result))
  {
  if (
$row["antwort"]=='')
  {
  
$antwort='Keine Antwort vorhanden';
  } else {
  
$antwort=($row["antwort"]);
  }
?>
<tr>
 <td><? echo $row["datum"?>&nbsp;<? echo $row["uhrzeit"]; ?>&nbsp;&nbsp;</td>
 <td><? echo $row["sender"]; ?></td>
 <td><? echo $row["empfaenger"]; ?></td>
</tr>
<tr>
  <td>Text</td>
  <td><? echo trim ($row["text"]); ?></td>
</tr>
<tr>
   <td>Antwort &raquo; </td>
   <td><? echo $antwort?></td>
</tr>
<?php ?>
-> $row["antwort"] soll aus der anderen Tabelle gelesen werden

Gruss und Danke
Mit Zitat antworten
  #9 (permalink)  
Alt 27-02-2005, 19:22
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi also ich habs nich komplett gelesen aber deine letzte frage zumindest ...

erstmal: select * is immer schlecht besonders bei mehreren Tabellen. Nuimm nur die columns die Du brauchst und bennene sie auch wenn es alle sind.

Wenn in beiden Tabellen ein Feld mit dem namen antwort existiert, dann wird in Deiner schleife das array element mit dem index antwort immer wieder überschrieben --> benutze ein alias.

SELECT a.antwort antwort_a, b.antwort antwort_b z.B.
das alias ist dann der index deines resultsets
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #10 (permalink)  
Alt 27-02-2005, 19:29
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mal so am Rande, das hier
if ($row["antwort"]=='')
{
$antwort='Keine Antwort vorhanden';
} else {
$antwort=($row["antwort"]);
}

ist ein ideales konstruct für den dreifach konditionalen Operator

$antwort = ($row["antwort"]=='') ? 'Keine Antwort vorhanden':$row["antwort"];

kannst Dir statt == '' auch mal die funktion empty() anschauen
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #11 (permalink)  
Alt 27-02-2005, 19:40
celina
 Newbie
Links : Onlinestatus : celina ist offline
Registriert seit: Feb 2005
Beiträge: 23
celina ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

ja Datum und Uhrzeit sind in beiden Tabellen gleich
und das ist auch das was durcheinander kommt.
Aber das mit dem alias habe ich noch nicht ganz verstanden.

Zitat:
SELECT a.antwort antwort_a, b.antwort antwort_b z.B.
das alias ist dann der index deines resultsets
Es ist halt recht viel das ich selectieren muss.

Also antwort...... usw. kann ich ja lassen da nur einmal

Was ist in Deinem Beispiel der alias und was das Feld bzw
die Tabelle.

Ich habe das Feld 'datum' und 'uhrzeit' in der Tabelle
'smsbox_protokoll' und auch in 'smsbox_antworten'

Die Funktion emty() benutze ich woanders auch im Script
aber Deine Abkützung kenne ich nicht sieht interessant
aus, wo kann ich mehr darüber lesen.


Gruss und Danke
Mit Zitat antworten
  #12 (permalink)  
Alt 27-02-2005, 19:45
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das alias steht immer hinter dem spalten namen

SELECT column alias FROM table
zwischen col und alias kannste auch ein AS setzen aber das brauchste nich
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #13 (permalink)  
Alt 27-02-2005, 20:50
celina
 Newbie
Links : Onlinestatus : celina ist offline
Registriert seit: Feb 2005
Beiträge: 23
celina ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja gut aber ich habe ja nur ein FROM
und müsste ja zwei mal das Datum deklerieren.

SELECT datum datum_a, datum datum_b FROM

geht ja auch nicht, da es ja an der aktuellen
Tatsache nichts ändern würde.

Gruss und Danke
Mit Zitat antworten
  #14 (permalink)  
Alt 28-02-2005, 19:56
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja du musst dem datum noch die tabelle zuweisen
SELECT a.datum a_datum, b.datum b_datum
FROM tab1 a LEFT JOIN tab2 b ON ....
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

04.09.2020 palle_1977 | Kategorie: PHP
numaeks Web-Farbmixer

Die RGB-Farben lassen sich hier auf unterschiedliche Weise mischen. Zur Einstellung werden auch die Dreh- und Schieberegler mit Canvas verwendet. Gespeichert werden die Farben in einem Cookie.

04.09.2020 numaek | Kategorie: JAVASCRIPT/ Tools
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:46 Uhr.