$reponse = $bdd->query('SELECT * FROM MATABLE');
et après
foreach ($reponse as $case) {
c'est pas bon, tu fait ton foreach sur le statement mais pas sur les résultatil va falloir rajouter un fetchAll ou faire un while sur les fetch
$reponse = $bdd->query('SELECT * FROM MATABLE');
et après
foreach ($reponse as $case) {
c'est pas bon, tu fait ton foreach sur le statement mais pas sur les résultat<?php
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=MABASE', 'root', '', $pdo_options);
// On récupère tout le contenu de la table MATABLE
$req = $bdd->prepare('SELECT CHOSE FROM MATABLE');
$req->execute();
$reponse = $req->fetchAll(); //lire tous les résultats de la requête dans un tableau $reponse
$nbcolonnes = 10;
$nblignes = 100;
echo '<table>'; //début de la table HTML
for ($ligne = 0; $ligne<$nblignes; $ligne++) {
echo '<tr>'; //début de la ligne Table HTML
if (isset($reponse[$ligne])) {
echo $case = $reponse[$ligne];
}
else $case = null;
for ($colonne=0; $colonne<$nbcolonnes; $colonne++){
echo '<td>';
if (isset($case[$colonne])) $case = $reponse[$colonne]; else $case = null;
echo '</td>'; //fin de la cellule Table HTML
}
echo '</tr>'; //fin de la ligne Table HTML
}
echo '</table>'; //fin de la Table HTML
?>
Je pense que j'y suis presque (grâce à votre aide !!), mais il m'affiche, hors des cases du tableau, 'array array array array array array' (à la suite sur une ligne), et je crois que c'est parce que j'ai mal défini quelque chose dans les crochets, mais je ne sais pas vraiment où !!!
for ($ligne = 0; $ligne<$nblignes; $ligne++)
utilise plutôt le foreach sur $reponse ca sera plus simple, et grace a la clé du tableau tu va pouvoir faire un modulo
<?php
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=MABASE', 'root', '', $pdo_options);
// On récupère tout le contenu de la table MATABLE
$req = $bdd->prepare('SELECT CHOSE FROM MATABLE');
$req->execute();
$reponse = $req->fetchAll(); //lire tous les résultats de la requête dans un tableau $reponse
$nbcolonnes = 10;
$nblignes = 5;
$i = 0; //compteur d'enregistrements du tableau $reponse
echo '<table>'; //début de la table HTML
for ($ligne = 0; $ligne<$nblignes; $ligne++) {
echo '<tr>'; //début de la ligne Table HTML
for ($colonne=0; $colonne<$nbcolonnes; $colonne++){
echo '<td>';
if (isset($reponse[$i])) { $case = $reponse[$i]; } else $case = null; //lire l'enregistrement $reponse dans $case
if (isset($case['CHOSE'])) echo $case['CHOSE']; //Afficher la donnée de la colonne 'CHOSE'
$i ++; //incrémenter le compteur d'enregistrements
echo '</td>'; //fin de la cellule Table HTML
}
echo '</tr>'; //fin de la ligne Table HTML
}
echo '</table>'; //fin de la Table HTML
?>
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '', $pdo_options);
$req = $bdd->prepare('SELECT `case` FROM `mabase` LIMIT 100');
$req->execute();
$reponse = $req->fetchAll();
$nbcolonnes = 10;
$nbresult = $req->rowCount();
echo "<table>\n";
foreach($reponse as $id => $item)
{
if(($id % $nbcolonnes) === 0)
{
echo "\t<tr>\n";
}
echo "\t\t<td>", $item['case'], "</td>\n";
if((($id + 1 + $nbcolonnes) % $nbcolonnes) === 0 || ($id + 1) === $nbresult)
{
echo "\t</tr>\n";
}
}
echo '</table>';
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
$nbcolonnes = 5;
$nblignes = 2;
$req = $bdd->prepare('SELECT `value` FROM `tokens` LIMIT ?');
$req->bindValue(1, $nbcolonnes * $nblignes, PDO::PARAM_INT);
$req->execute();
$reponse = $req->fetchAll();
echo "<table>\n";
foreach($reponse as $id => $item)
{
if(($id % $nbcolonnes) === 0)
{
echo "\t<tr>\n";
}
echo "\t\t<td>", $item['value'], "</td>\n";
if((($id + 1 + $nbcolonnes) % $nbcolonnes) === 0 || ($id + 1) === $req->rowCount())
{
echo "\t</tr>\n";
}
}
echo '</table>';
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
$nbcolonnes = 10;
$nblignes = 5;
$nbmax = $nbcolonnes * $nblignes;
$req = $bdd->prepare('SELECT `value` FROM `tokens` LIMIT ?');
$req->bindValue(1, $nbmax, PDO::PARAM_INT);
$req->execute();
echo "<table>\n";
for($i = 0; $i < $nbmax; ++$i)
{
if(($i % $nbcolonnes) === 0)
{
echo "\t<tr>\n";
}
$item = $req->fetch();
echo "\t\t<td>", $item['value'], "</td>\n";
if((($i + 1 + $nbcolonnes) % $nbcolonnes) === 0)
{
echo "\t</tr>\n";
}
}
echo '</table>';
voici le correctif:if (isset($reponse[$i])) { echo $case = $reponse[$i]; } ....
<?php
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=MABASE', 'root', '', $pdo_options);
// On récupère tout le contenu de la table MATABLE
$req = $bdd->prepare('SELECT CHOSE FROM MATABLE');
$req->execute();
$reponse = $req->fetchAll(); //lire tous les résultats de la requête dans un tableau $reponse
$nbcolonnes = 10;
$nblignes = 5;
$i = 0; //compteur d'enregistrements du tableau $reponse
echo '<table>'; //début de la table HTML
for ($ligne = 0; $ligne<$nblignes; $ligne++) {
echo '<tr>'; //début de la ligne Table HTML
for ($colonne=0; $colonne<$nbcolonnes; $colonne++){
echo '<td>';
if (isset($reponse[$i])) { $case = $reponse[$i]; } else $case = null; //lire l'enregistrement $reponse dans $case
if (isset($case['CHOSE'])) echo $case['CHOSE']; //Afficher la donnée de la colonne 'CHOSE'
$i ++; //incrémenter le compteur d'enregistrements
echo '</td>'; //fin de la cellule Table HTML
}
echo '</tr>'; //fin de la ligne Table HTML
}
echo '</table>'; //fin de la Table HTML
?>
<?php
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=MABASE', 'root', '', $pdo_options);
$nbcolonnes = 10;
$nblignes = 10;
$nbmax = $nbcolonnes * $nblignes;
$req = $bdd->prepare('SELECT * FROM `MATABLE` LIMIT ?');
$req->bindValue(1, $nbmax, PDO::PARAM_INT);
echo "<table>\n";
for($i = 0; $i < $nbmax; ++$i)
{
if(($i % $nbcolonnes) === 0)
{
echo "\t<tr>\n";
}
$item = $req->fetch();
echo "\t\t<td>", $item['CHOSE'], "</td>\n";
if((($i + 1 + $nbcolonnes) % $nbcolonnes) === 0)
{
echo "\t</tr>\n";
}
}
echo '</table>';
?>
Alex
$item = $req->fetch();
var_dump($item);
quand tu fait la requete dans phpmyadmin en remplaçant le ? par 10 par exemple c'est bon ?var_dump($item); me renvoie bool(false) 100 fois (nombre de cases dans mon exemple), et tout est placé hors du tableau, au dessus de la 1ère ligne...
Donc ma requête est certainement fausse, mais je ne vois pas où car mes instructions me semblaient pourtant correctes, après re vérification...
Alex
$req = $bdd->prepare('SELECT * FROM MATABLE LIMIT 10')
SQL me renvoie un message d'erreur: #1064 - 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 '$req = $bdd->prepare('SELECT * FROM MATABLE LIMIT 10')' at line 1