foreach ongeldig argument geleverd en mysql fetch array probleem

ik heb deze code die ik gebruik om enkele velden uit de database af te drukken.

Mijn probleem is dat ik deze fout krijg over elk opgegeven ongeldig argument en een mysql-ophaalarrayprobleem.

De code is dit:

foreach( $checked1 as $key => $value){
    echo "<th> $value </th>";
}
echo "</tr></thead>";

while($row = mysql_fetch_array($result)){

Waar $ checked1 een array is

$checked1 = $_POST['checkbox'];

Wat is hier het probleem?

De hele code:

    <?php

echo "<div id='table-3'>"; 
    if(isset($_POST['Submit'])) {
    echo "
";
    $checked1 = $_POST['checkbox'];
    $checked = implode(',', $_POST['checkbox']);

    }
    $con = mysql_connect('localhost','user','passwd');
    mysql_query("SET NAMES UTF8");

    if (!$con)
    {
    die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("db_name", $con);

    $result = mysql_query("SELECT $checked FROM hostess");
    echo "<table >";
    echo "<thead><tr>";
    if(is_array($_POST['checkbox'])){
 foreach( $checked1 as $key => $value){
    echo "<th> $value </th>";
    }
    echo "</tr></thead>";

    } else {
echo "Checkbox is not an array.";
}



   while($row = mysql_fetch_array($result)){
echo "<tr>";
foreach($checked1 as $key => $value){
if($value == 'photo'){
 echo "<td> </td>";

}   else if($value == 'photo2'){
echo "<td></td></td>";

}
else if( $value == 'photo2' && $value == 'photo'){
    echo "<td> </td>";
    echo "<td></td></td>";
}
else{

    echo "<td>" . $row[$value] . "</td>";
}
}echo "</tr>";
    }
    echo "</table>";
0
@LaMyse Ik denk dat ik je update misschien heb overschreven met mijn bewerking. Probeer het opnieuw.
toegevoegd de auteur sachleen, de bron
De exacte foutmelding (en) zou nuttiger zijn. En $ result is waarschijnlijk geen geldige MySQL-bron.
toegevoegd de auteur Evan Mulawski, de bron
Zou u var_dump ($ checked1); en var_dump ($ result); kunnen doen vlak voor het fragment dat u ons gaf en het resultaat hier of op pastebin.com plaatsen?
toegevoegd de auteur Alex Belanger, de bron
@LaMyse: als u geen foutopsporingsfouten van PHP opgeeft, kunnen we u niet verder helpen.
toegevoegd de auteur Alex Belanger, de bron
Kun je alsjeblieft mijn bijgewerkte code bekijken?
toegevoegd de auteur La Myse, de bron
Hé Alex, ik heb het net gedaan en het resultaat voor beiden is NULL
toegevoegd de auteur La Myse, de bron
Ik heb de code bijgewerkt, ik heb de hele code ingevoegd, de waarde van het selectievakje is slechts een invoerformulier ..
toegevoegd de auteur La Myse, de bron

2 antwoord

Of $ _ POST ['checkbox'] is niet gedefinieerd (geen checkbox aangevinkt tijdens het verzenden van het formulier) of is geen array (de invoernaam bevat uiteindelijk geen [] ) ;

U moet altijd controleren of de variabele bevat wat u wilt voordat u een bewerking uitvoert, bijvoorbeeld:

if(is_array($checked1)){
    foreach( ... ){  
    }
}

$result = mysql_query(' ... ');

if(!$result){
   die(mysql_error());
}
1
toegevoegd
gebruik gewoon de vink of het een array is/bevat gegevens, waarschijnlijk niet als u het afdrukt. Zorg er dus voor dat u geen of een alternatieve else -clausule instelt.
toegevoegd de auteur edwardmp, de bron
Wat bedoel je met afdrukken van webpagina ? Gebruikt u een functie om de pagina weer te geven en treden er fouten op in deze functie?
toegevoegd de auteur dev-null-dweller, de bron
Je moet ons meer code laten zien, waar $ checked1 nog steeds een array is, waar je het probeert te itereren met foreach. Mogelijk hebt u de scope gewijzigd in waar deze variabele niet is gedefinieerd.
toegevoegd de auteur dev-null-dweller, de bron
Ja, ik heb het gecontroleerd, wanneer ik de code probeer in te dienen werkt alles goed, maar wanneer ik een afdruk van de webpagina maak, komen er deze fouten niet de resultaten ... wat toevallig vreemd is ...
toegevoegd de auteur La Myse, de bron
Ja, ik gebruik een online webprinter als pdf, het werkte op alle pagina's, zelfs hiermee met het probleem, het is alleen dat hier fouten worden afgedrukt ..
toegevoegd de auteur La Myse, de bron

Wat is uw $ _POST ['checkbox'] genoemd in uw HTML-formulier? Het zou zoiets moeten zijn als:

<input type="checkbox" name="checkbox[]" value="1" />

Controleer of uw checkbox-waarden doorkomen als arrays. Doe het volgende:

if(is_array($_POST['checkbox'])){
// contiue with foreach...
} else {
echo "Checkbox is not an array.";
}
1
toegevoegd
het is een array .., ik heb het net gecontroleerd!
toegevoegd de auteur La Myse, de bron