PHP Code "Fehler"

  • Hi Leute


    habe ein Problem ich seh wohl hier den Fehler im Code nicht weshalb auch immer, würde mich über eine Unterstütung freuen
    .... while($row = mysql_fetch_assoc($query)).... Fehler soll hier in dieser zeile liegen im unteren Code(relativ in der mitte)

    PHP
    1. <span class="syntaxdefault"><br /><br />         <br />        $sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,-</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">") ORDER BY id_products ASC"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        $query  </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">        <br />    <br />    while</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$row </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_fetch_assoc</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">))</span><span class="syntaxdefault">                      <br /><br /><br /><br /><br /></span>



    Bedanke mich schon im vorraus hoffe könnt mir helfen




    MFG

  • Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampplite\htdocs\website\....\index.php on line 63
    (zu meinem ersten Beitrag)aber ich habe nicht den ganzen index.php code eingefügt nur eben den <?php ?> Code

  • Fehlermeldungen lassen sich in schwarz und normaler Schriftgröße genauso gut lesen.



    Naja, der fehler besagt, das die rückgabe von mysql_query nicht gültig ist, was meist daran liegt, das ein fehler aufgetreten ist.


    Daher unter dein mysql_query() mal ein echo mysql_error(); setzen.


    Denn die Art wie du dein SQL-Query erstellst, ist recht fehleranfällig.


    Um genaueres sagen zu können, muss man wissen was in


    Code
    1. $_SESSION['cart']


    steht.


    PHP
    1. <span class="syntaxhtml"><br /><br /> <span class="syntaxdefault"><?php<br /> </span><span class="syntaxkeyword">if(isset(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'cart'</span><span class="syntaxkeyword">]))<br /> {<br /> </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">= </span><span class="syntaxstring">"SELECT * FROM products WHERE id_products IN ("</span><span class="syntaxkeyword">;<br /> foreach(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'cart'</span><span class="syntaxkeyword">] as </span><span class="syntaxdefault">$id </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$id</span><span class="syntaxkeyword">. </span><span class="syntaxstring">","</span><span class="syntaxkeyword">; <br /> }<br /> <br /> </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,-</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">) . </span><span class="syntaxstring">") ORDER BY id_products ASC"</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$query </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br /> <br /> echo </span><span class="syntaxstring">"<br>"</span><span class="syntaxkeyword">; <br /> echo </span><span class="syntaxdefault">mysql_error</span><span class="syntaxkeyword">();<br /> echo </span><span class="syntaxstring">"<pre>"</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">print_r</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'cart'</span><span class="syntaxkeyword">]);<br /> echo </span><span class="syntaxstring">"</pre>"</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"<br>"</span><span class="syntaxkeyword">;<br /> <br /> while(</span><span class="syntaxdefault">$row </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mysql_fetch_assoc</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">)) <br /> {<br /><br /><br /> </span><span class="syntaxdefault">?><br /></span> <p><span class="syntaxdefault"><?php </span><span class="syntaxkeyword">echo </span><span class="syntaxdefault">$row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">] </span><span class="syntaxdefault">?><?php </span><span class="syntaxkeyword">echo </span><span class="syntaxstring">" x " </span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'cart'</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id_products'</span><span class="syntaxkeyword">]][</span><span class="syntaxstring">'quantity'</span><span class="syntaxkeyword">]; </span><span class="syntaxdefault">?></span></p><br /> <br /> <br /> <span class="syntaxdefault"><?php<br /> </span><span class="syntaxkeyword">}<br /> }<br /> else<br /> {<br /> <br /> echo </span><span class="syntaxstring">"<p> .......br />......</p>"</span><span class="syntaxkeyword">; <br /> <br /> }<br /><br /> echo </span><span class="syntaxstring">"<a href='index.php?page=cart'>.......</a>"</span><span class="syntaxkeyword">;<br /><br /> </span><span class="syntaxdefault">?></span> <br /><br /><br /><br /></span>


    Damit sollten alle relevanten Daten ausgegeben werden.
    Damit kann man dann weiter arbeiten.


    Greetz TimTim

  • PHP
    1. <span class="syntaxdefault"><br /></span><span class="syntaxstring">"SELECT * FROM products WHERE id_products IN ("</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        foreach</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'cart'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> as $id  </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $value</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">            $sql </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> $id</span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">","</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">    <br />        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">         <br />        $sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,-</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">") ORDER BY id_products ASC"<br /></span><span class="syntaxdefault"> </span>


    Da sitzt dein Fehler, lass dir mal den SQL Befehl ausgeben statt ihn zu verwenden und schau ihn dir an / poste mal.

  • Was sucht das komma bei der id ohne das du die id selbst in ' ' setzt ?
    das kann sql nich abarbeiten grundlegender fehler im sql syntax... daher auch der fehler.


    richtig sollte es wohl sein:

    PHP
    1. <span class="syntaxdefault"><br /> </span><span class="syntaxstring">"SELECT * FROM products WHERE id_products IN ("</span><span class="syntaxkeyword">;<br /> foreach(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'cart'</span><span class="syntaxkeyword">] as </span><span class="syntaxdefault">$id </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">.= </span><span class="syntaxstring">"'"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$id</span><span class="syntaxkeyword">. </span><span class="syntaxstring">"',"</span><span class="syntaxkeyword">; <br /> }<br /> <br /> </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,-</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">) . </span><span class="syntaxstring">") ORDER BY id_products ASC"<br /> <br /> </span><span class="syntaxdefault"></span>


    Ich habs verkürzt geschrieben das eine ' sitzt beim komma...
    Solltest dir den syntax von sql nochmal etwas genauer durchlesen.


    Hoffe ich konnte dir helfen
    LG
    R4Zz0R

  • Ist nicht ganz korrekt.. nur strings müssen zwischen ' gesetzt werden. Integer können auch ohne gesucht werden.


    Ich denke der Fehler liegt schon in den übergebenen Daten, oder das es keine Integer werte sind.


    Greetz TimTim

  • Hi Leute danke für die schnellen antworten doch ich erhalte trotzdem noch den fehler code


    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampplite\htdocs\website\example\index.php on line 64


    also ich habe das getan was ihr gesagt habt ich bitte um HILFE HILFE



    danke danke

  • Hast du in meinem post eigntlich geschaut was ich an deinem Code verändert habe ?


    PHP
    1. <span class="syntaxdefault"><br /> <br /> </span><span class="syntaxkeyword">echo </span><span class="syntaxstring">"<br>"</span><span class="syntaxkeyword">; <br /> echo </span><span class="syntaxdefault">mysql_error</span><span class="syntaxkeyword">();<br /> echo </span><span class="syntaxstring">"<pre>"</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">var_dump</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'cart'</span><span class="syntaxkeyword">]);<br /> echo </span><span class="syntaxstring">"</pre>"</span><span class="syntaxkeyword">;<br /> echo </span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"<br>"</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault"></span>


    Wenn das unter dem mysql_query steht, dann müsstest einiges mehr an infos bekommen.
    Und diese ausgabe sollst du mal posten...



    Greetz Timtim

  • WOWOW hast recht jetzt kam das:
    -->


    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY id_products ASC' at line 1


    array(0) {
    }


    SELECT * FROM products WHERE id_products IN ) ORDER BY id_products ASC


    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampplite\htdocs\website\ecard\index.php on line 69

  • Jetzt müsste dir was auffallen...


    das erste ist die Fehlermeldung von mysql, das dein query nicht korrekt ist.


    das zweite gibt das gesamte Array aus, wie du siehst ist das leer.


    Danach einfach mal den Query, in dem sieht man, das genau das was in deiner foreach erstellt werden sollte nicht ausgeführt wird, da
    das Array ja leer ist.



    Kommst selbst drauf was du verändern musst ?

  • Tipp: Tausch in der foreach mal $id gegen $value.... :roll:


    Sofern ich nich grad nen logikfehler in meiner denkweise hab sollte das dann vllt funktionieren :!::?:
    :arrow: Berichtigt mich sollte ich falsch liegen :!: