PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Table à 2 colonnes - Définir variables selon Id » 28-02-2019 00:55:27

Bonjour,

Merci pour cette méthode toute simple, à laquelle je n'avais pas pensé smile
(rien de péjoratif hein)

La raison pour laquelle je laisse des "trous" en inscrivant les mots dans ma bdd est justement d'éviter d'avoir un ordre ou de le créer inconsciemment: je "saute" d'une plage à l'autre. Quand une plage est pleine, pas de souci: j'en utilise une autre plus loin, sans rapport avec celle que j'utilise.

Mais encore une fois, merci pour cette autre solution, si simple dans son efficacité. big_smile

#2 Re : Forum Général PHP » Table à 2 colonnes - Définir variables selon Id » 28-02-2019 00:55:27

Hello,

Je te remercie pour ta réponse smile

J'ai fini par trouver ce que je voulais:


$sql = mysqli_query($cnx, "SELECT * FROM elements");
while ($ligne=mysqli_fetch_array($sql))
{
    $MonTableau["id"][] =  $ligne[0];
    $MonTableau["mot"][]=  $ligne[1];
}

foreach ($MonTableau['id'] as $i => $id)  
{
    ${"mot".$id} = $MonTableau['mot'][$i];
}
 

Ca déclare directement en variable chaque mot trouvé dans la table ET $mot28 par exemple est et reste le mot correspondant à l'id 28.

Du coup je fais une pause et je révise pour passer du html4 au html5 (en gros je vais refaire mes pages en flexbox ^^) et de là je reprendrai le php à 0, Pdo inclus smile

Encore merci pour le temps que tu m'as consacré big_smile

#3 Forum Général PHP » Table à 2 colonnes - Définir variables selon Id » 28-02-2019 00:55:27

Beley
Réponses : 4

Bonjour à vous,

Je débute en php et j'ai beaucoup de mal avec les tableaux. (ça craint sad )
Souvent je "vois" l'idée, le cheminement, mais je cale sur la syntaxe voire le développement des boucles.

Je mets un point d'honneur à ne pas demander d'aide mais là j'ai beau chercher partout, je ne trouve rien qui me mette sur les bons rails - je sèche (... d'autant plus frustrant que je suis sûr que c'est une question fréquemment posée tellement c'est bête). Une semaine coincé sur ce bout de code, je craque.

Pour ne rien arranger, vu mon niveau je reste en style procédural et la plupart des réponses sont en pdo
(si je le dis bien ^^)

Mon problème et mon objectif:
J'ai une table "elements" dans ma base de données.
Elle comporte 2 colonnes: Id (auto-increment) et mot
Particularité: j'enrichis la table manuellement au fur et à mesure des besoins, et je laisse volontairement des trous dans les id, trous que je remplis par la suite avec de nouveaux mots.

Au final, je veux pouvoir appeler la table et définir chaque mot en variable, style $mot1=$mot[0] etc

J'ai avancé dans mon code, sauf que ce que j'obtiens correspond à l'ordre des mots retournés par mon appel et non pas à l'id des mots (ma particularité).

(J'ai viré les lignes de connexion à la bdd et vérification pour alléger)


$sql = mysqli_query($cnx, "SELECT * FROM elements");

while ($ligne=mysqli_fetch_array($sql))
{
$id[] =  $ligne['0'];
$mots[] =  $ligne['1'];
}
 

Pour vérifier:
- si je fais un echo $id[0] et que je continue avec $id[1] etc, j'ai bien les id qui correspondent à mes enregistrements: les trous sont bien pris en compte. (normal, chaque id est un champ, un champ compte pour un même s'il est vide) Je peux donc définir $id1 =  $id[0] etc.....

- si je fais la même chose avec $mots, j'ai bien tous mes mots, sauf qu'ils ne sont pas en rapport avec l'id
$mot[0] est le premier mot renvoyé par ma requête, les vides génèrent un décalage.

Comment faire pour que $mot25 corresponde à $id25? (j'ai bien dit $id25, pas 24 ^^)
(Parce qu'au passage si vous savez comment régler le décalage induit par le fait que la numérotation commence à zéro... sinon j'irai voir du côté index ... ou me contenterai du dédalage de 1)

J'essaie d'ajouter une boucle foreach dans le while mais j'obtiens n'importe quoi.

Je vous remercie par avance pour le temps que vous allez me consacrer big_smile

Pied de page des forums

Propulsé par FluxBB