Php : contenu d'une BDD sur un site web
Résolu
cassiope
-
akuma06 Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
akuma06 Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je réalise un site et j'ai besoin d'intégrer dans un tableau le contenu de certains champs de ma base de données.
J'ai trouvé du code mais ca ne marche pas je ne comprends pas!
<?php
//connection au serveur
$cnx = mysql_connect( "localhost" ...) ;
//sélection de la base de données:
$db = mysql_select_db( "nomBase" ) ;
$sql = "SELECT nom, prenom, statut FROM uti where Id='1'";
$requete = mysql_query($sql);
?>
<table border="1" align="center">
<tr>
<td>Nom</td>
<td>15 <?php echo $sql['nom']; ?></td>
<tr>
<tr>
<td>Prénom</td>
<td>15 <?php echo $sql['prenom']; ?></td>
<tr>
<tr>
<td>Statut</td>
<td>15 <?php echo $sql['statut']; ?></td>
<tr>
</table>
Sur mon tableau, au lieu d'afficher le réel contenu du champ un S s'affiche pour les trois ligne... Je ne comprends pas.
je réalise un site et j'ai besoin d'intégrer dans un tableau le contenu de certains champs de ma base de données.
J'ai trouvé du code mais ca ne marche pas je ne comprends pas!
<?php
//connection au serveur
$cnx = mysql_connect( "localhost" ...) ;
//sélection de la base de données:
$db = mysql_select_db( "nomBase" ) ;
$sql = "SELECT nom, prenom, statut FROM uti where Id='1'";
$requete = mysql_query($sql);
?>
<table border="1" align="center">
<tr>
<td>Nom</td>
<td>15 <?php echo $sql['nom']; ?></td>
<tr>
<tr>
<td>Prénom</td>
<td>15 <?php echo $sql['prenom']; ?></td>
<tr>
<tr>
<td>Statut</td>
<td>15 <?php echo $sql['statut']; ?></td>
<tr>
</table>
Sur mon tableau, au lieu d'afficher le réel contenu du champ un S s'affiche pour les trois ligne... Je ne comprends pas.
A voir également:
- Php : contenu d'une BDD sur un site web
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
12 réponses
Bonjour.
C'est normal. Je va t'expliquer ce que tente de faire ton code.
Jusque là, tout va bien, le résultat de ta requete va aller dans $requete.
echo $sql['nom'];
Tu tente d'accéder au champ 'nom' du tableau $sql, qui est ici une chaine de caractères. Il te renvoie donc le premier champs visiblement, a savoir la lettre S.
Pour utiliser le résultat de ta requete, il faut utilise $requete ici.
Sauf que ce n'est pas directement exploitable. Il faut d'abord faire un :
Cela va placer une ligne dans $tab, chaque colonne de la ligne dans un nouvel indice. Ainsi, $tab[0] contiendra la première colonne, $tab[1] la deuxième...etc...
Chaque appel à mysql_fetch_array avancera d'une ligne dans le résultat et placera la ligne courante dans $tab. La fonction renvoie faux si on arrive à la fin.
Voici un petit script qui te permettra de parcourir toutes les lignes.
C'est normal. Je va t'expliquer ce que tente de faire ton code.
$sql = "SELECT nom, prenom, statut FROM uti where Id='1'"; $requete = mysql_query($sql);
Jusque là, tout va bien, le résultat de ta requete va aller dans $requete.
echo $sql['nom'];
Tu tente d'accéder au champ 'nom' du tableau $sql, qui est ici une chaine de caractères. Il te renvoie donc le premier champs visiblement, a savoir la lettre S.
Pour utiliser le résultat de ta requete, il faut utilise $requete ici.
Sauf que ce n'est pas directement exploitable. Il faut d'abord faire un :
$tab=mysql_fetch_array($requete);
Cela va placer une ligne dans $tab, chaque colonne de la ligne dans un nouvel indice. Ainsi, $tab[0] contiendra la première colonne, $tab[1] la deuxième...etc...
Chaque appel à mysql_fetch_array avancera d'une ligne dans le résultat et placera la ligne courante dans $tab. La fonction renvoie faux si on arrive à la fin.
Voici un petit script qui te permettra de parcourir toutes les lignes.
<?php while($tab=mysql_fetch_array($requete)){ echo $tab[0]; //renvoie la premiere colonne. echo $tab[1]; renvoie la deuxième collonne. } ?>
Bonjour
il faut que tu transforme la réponse de ta requete en un tableau
$sql = mysql_query(...);
$donnees = mysql_fetch_assoc($sql );
echo $donnees['nom'];
si jamais la réponse contient plusiseur enregistrement tu fait une boucle
$sql = mysql_query(...);
while($donnees = mysql_fetch_assoc($sql ))
{
echo $donnees['nom']."<br /> ";
}
edit ah, on t'a répondu en même que moi ^^
donc par rapport à ce qu'il a dit, préfere la méthode mysql_fetch_assoc les deux marche, mais plusieurs professionnel m'ont conseillé la assoc au lieu de l'array ;)
et sinon, tu n'es pas obligé d'utilisé les chiffre pour les colonnes, si tu met le nom de colonne comme je te l'ai indiqué ca marche aussi ;)
il faut que tu transforme la réponse de ta requete en un tableau
$sql = mysql_query(...);
$donnees = mysql_fetch_assoc($sql );
echo $donnees['nom'];
si jamais la réponse contient plusiseur enregistrement tu fait une boucle
$sql = mysql_query(...);
while($donnees = mysql_fetch_assoc($sql ))
{
echo $donnees['nom']."<br /> ";
}
edit ah, on t'a répondu en même que moi ^^
donc par rapport à ce qu'il a dit, préfere la méthode mysql_fetch_assoc les deux marche, mais plusieurs professionnel m'ont conseillé la assoc au lieu de l'array ;)
et sinon, tu n'es pas obligé d'utilisé les chiffre pour les colonnes, si tu met le nom de colonne comme je te l'ai indiqué ca marche aussi ;)
Même si le post est résolu, il est important de préciser ici quelques petits points importants:
mysql_fetch_arry et mysql_fetch_assoc sont semblables. En effet, selon le manuel de PHP, mysql_fetch_assoc revient a faire un appel à mysql_fetch_array avec le paramètre optionnel MYSQL_ASSOC.
En effet, grâce (ou a cause) de mysql_fetch_assoc, tu peut utiliser les noms de colonnes de tables plutot que les indices. Je ne sais pas pour quelles raisons certains professionnels t'ont recommandé la méthode fetch_assoc, mais perso sa peut être source de problèmes pour moi. Je m'explique:
Tu utilise mysql_fetch_assoc => tu utilise des noms de colonnes au lieu de chiffres dans ton appli=> sa fonctionne.
Je développe la même appli=>j'utilise mysql_fetch_array() => j'utilise les indices de colonne au lieu de noms => sa fonctionne tout aussi bien.
Un plaisantin (ou pas) vient à changer le nom des colonnes de la bdd. Mon application tourne encore, pas la tienne.
Le seul point positif à utiliser les noms de colonnes plutot que les indices c'est pour la simplicité et la lisibilité du code.
Edit: au temps pour moi, dans mysql_fetch_array, le paramètre optionnel étant par défaut à MYSQL_BOTH, on peut utiliser au choix les numéros ou les noms.
mysql_fetch_arry et mysql_fetch_assoc sont semblables. En effet, selon le manuel de PHP, mysql_fetch_assoc revient a faire un appel à mysql_fetch_array avec le paramètre optionnel MYSQL_ASSOC.
En effet, grâce (ou a cause) de mysql_fetch_assoc, tu peut utiliser les noms de colonnes de tables plutot que les indices. Je ne sais pas pour quelles raisons certains professionnels t'ont recommandé la méthode fetch_assoc, mais perso sa peut être source de problèmes pour moi. Je m'explique:
Tu utilise mysql_fetch_assoc => tu utilise des noms de colonnes au lieu de chiffres dans ton appli=> sa fonctionne.
Je développe la même appli=>j'utilise mysql_fetch_array() => j'utilise les indices de colonne au lieu de noms => sa fonctionne tout aussi bien.
Un plaisantin (ou pas) vient à changer le nom des colonnes de la bdd. Mon application tourne encore, pas la tienne.
Le seul point positif à utiliser les noms de colonnes plutot que les indices c'est pour la simplicité et la lisibilité du code.
Edit: au temps pour moi, dans mysql_fetch_array, le paramètre optionnel étant par défaut à MYSQL_BOTH, on peut utiliser au choix les numéros ou les noms.
Et tes balises <tr> sont mal fermées.
Je sais le problème vient pas de là, mais avec les explications au-dessus il devrait être Résolu ;D
Je sais le problème vient pas de là, mais avec les explications au-dessus il devrait être Résolu ;D
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Encore un problème, j'ai une autre page qui prend des utilisateurs dans la base et doit afficher le contenu des utilisateurs dans une page pour l'administrateur, seulement le tableau affiche plusieurs fois la première ligne de la table au lieu d'afficher chaque ligne une fois.
<?php
//connection au serveur
$cnx = mysql_connect( "localhost",... ) ;
//sélection de la base de données:
$db = mysql_select_db( "..." ) ;
$sqlUti = "SELECT Identifiant, Nom, Prenom, Login, Adresse FROM utilisateurs";
$requeteUti = mysql_query($sqlUti);
$donneesUti=mysql_fetch_array($requeteUti); ?>
<table border="1" align="center">
<?php while ($donnees=mysql_fetch_array($requeteUti))
{?>
<tr>
<td>Modifier</td>
<td>Supprimer</td>
</tr>
<tr>
<td>Identifiant</td>
<td><?php echo $donneesUti['Identifiant']; ?></td>
</tr>
<tr>
<td>Nom</td>
<td><?php echo $donneesUti['Nom']; ?></td>
</tr>
<tr>
<td>Prenom</td>
<td><?php echo $donneesUti['Prenom']; ?></td>
</tr>
......
<?php
}
mysql_close(); // Déconnexion de MySQL
?>
</table>
Deuxième question, est ce que quelqu'un sait comment je peux faire afin que l'administrateur puisse modifier et supprimer le contenu d'un champ???
Merci d'avance
<?php
//connection au serveur
$cnx = mysql_connect( "localhost",... ) ;
//sélection de la base de données:
$db = mysql_select_db( "..." ) ;
$sqlUti = "SELECT Identifiant, Nom, Prenom, Login, Adresse FROM utilisateurs";
$requeteUti = mysql_query($sqlUti);
$donneesUti=mysql_fetch_array($requeteUti); ?>
<table border="1" align="center">
<?php while ($donnees=mysql_fetch_array($requeteUti))
{?>
<tr>
<td>Modifier</td>
<td>Supprimer</td>
</tr>
<tr>
<td>Identifiant</td>
<td><?php echo $donneesUti['Identifiant']; ?></td>
</tr>
<tr>
<td>Nom</td>
<td><?php echo $donneesUti['Nom']; ?></td>
</tr>
<tr>
<td>Prenom</td>
<td><?php echo $donneesUti['Prenom']; ?></td>
</tr>
......
<?php
}
mysql_close(); // Déconnexion de MySQL
?>
</table>
Deuxième question, est ce que quelqu'un sait comment je peux faire afin que l'administrateur puisse modifier et supprimer le contenu d'un champ???
Merci d'avance
Sa fait plusieurs codes que je vois comme le tiens: vous etes rétiscents à faire des échos d'html en php? oO
Bon en plus clair: ton probleme vient du fait qu'une bouce while que tu referme avec un ?>, perso je trouve sa moche, mais là n'est pas la véritable raison. Je ne pense pas qu'Apache traduise cela de la même manière que toi.
Au lieu de faire un
(ce qui signifierais litéralement: affiche le code html, puis exécute un while vide, puis réaffiche le reste...bref pas ce que tu veut)
Faut faire un
(qui signifie : tant que machin, alors affiche truc)
Pour la modif de champs, c'est soit au niveau conceptuel (tu défini des droits) et tu code ton application en testant à chaque fois si l'utilisateur courant est un admin, soit tu lui laisse un phpmyadmin et si il sait s'en servir, bah c'est jackpot.
Sa dépend des besoins et du cahier des charges.
Bon en plus clair: ton probleme vient du fait qu'une bouce while que tu referme avec un ?>, perso je trouve sa moche, mais là n'est pas la véritable raison. Je ne pense pas qu'Apache traduise cela de la même manière que toi.
Au lieu de faire un
<?php while (machin){ ?> <tr><td>...
(ce qui signifierais litéralement: affiche le code html, puis exécute un while vide, puis réaffiche le reste...bref pas ce que tu veut)
Faut faire un
<?php while (machin){ echo "<tr><td truc=\"bidule\">..."; echo "<tr><td></td></tr>"; }
(qui signifie : tant que machin, alors affiche truc)
Pour la modif de champs, c'est soit au niveau conceptuel (tu défini des droits) et tu code ton application en testant à chaque fois si l'utilisateur courant est un admin, soit tu lui laisse un phpmyadmin et si il sait s'en servir, bah c'est jackpot.
Sa dépend des besoins et du cahier des charges.
Ca ne marche pas je reçois le message suivant
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\EasyPHP 2.0b1\www
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\EasyPHP 2.0b1\www
<?php while ($donnees=mysql_fetch_array($requeteUti))
{
echo "<tr>
<td>Identifiant</td>
<td>$donneesUti['Identifiant']</td>
<td>Modifier</td>
<td>Supprimer</td>
</tr>";
}
mysql_close(); // Déconnexion de MySQL
?>
La ligne qui est mentionnée dans le message d'erreur est celle qui contient $donneesUti
{
echo "<tr>
<td>Identifiant</td>
<td>$donneesUti['Identifiant']</td>
<td>Modifier</td>
<td>Supprimer</td>
</tr>";
}
mysql_close(); // Déconnexion de MySQL
?>
La ligne qui est mentionnée dans le message d'erreur est celle qui contient $donneesUti
Est ce que je dois mettre le ; à la fin de tout mon tableau ou après chaque colonne?
Je ne sais pas trop où le placer de cette manière
Je ne sais pas trop où le placer de cette manière
Le ; c'est comme le lol des boulets: sa se place en fin de phrase.
Bon treve de plaisanteries, le ; en php se place à la fin de chaque instruction. Donc a la fin de ton echo.
C'est à dire que si tu fait un echo ", c'est après le dernier " qu'il faut placer le ;
Dans ton code, il était donc bien placé.
Bon treve de plaisanteries, le ; en php se place à la fin de chaque instruction. Donc a la fin de ton echo.
C'est à dire que si tu fait un echo ", c'est après le dernier " qu'il faut placer le ;
Dans ton code, il était donc bien placé.
C'est bon ça marche de nouveau mais :( même résultat que tout à l'heure : il affiche un tableau avec plusieurs fois le premier enregistrement de mon tableau, je ne comprends pas...
$donneesUti=mysql_fetch_array($requeteUti); ?> <table border="1" align="center"> <?php while ($donnees=mysql_fetch_array($requeteUti))
tu repetes deux fois l'instruction fetch_array ...
=>
$sqlUti = "SELECT Identifiant, Nom, Prenom, Login, Adresse FROM utilisateurs"; $requeteUti = mysql_query($sqlUti); echo("<table border=\"1\" align=\"center\">"); while($donnees=mysql_fetch_array($requeteUti)) { etc..