SHOW TABLE + ARRAY KEY EXISTS (1er posts sur concaténation)

Eléphant du PHP | 186 Messages

28 févr. 2007, 15:47

Bonjour à tous.
Je débute en php et je rencontre quelques difficultés avec la synthaxe.
Je réalise un formulaire que je souhaite dynamique cad qu'une partie du formulaire va être commune à l'ensemble des utilisateurs et qu'une autre partie va différée selon les groupes d'utilisateurs. C'est pourquoi j" souhaite mettre en place une condition if afin de générer cette autre partie en fonction des besoins de ces utilisateurs.
J'ai commencé par un bout de code comme celui-ci mais arrivé à une condition if qui se trouvait dans la première, une erreur intervient.
Je me dit que ça doit être une erreur de synthaxe avec la concaténation.
Voici le bout de code incriminé:
<?php
	   if ($row_rs_fiche_etab['type_etab'] == 'camping') {echo '
etc...
<input name="icone_hand" type="checkbox" id="icone_hand" value="oui" '.if ($row_rs_fiche_etab['icone_hand'] == "oui") {echo "checked"}.'/> etc...
Je ne suis pas trop habitué à la synthaxe avec concaténation des éléments HTML et PHP donc si quelqu'un pouvait m'aider.
Merci par avance.
Modifié en dernier par dread le 01 mars 2007, 18:27, modifié 1 fois.

Eléphant du PHP | 216 Messages

28 févr. 2007, 16:29

Bonjour,
déjà normal que tu ai une erreur, car tu na pas fermé ton premier if et un echo, je met ça sur le coups du copié > collé, mais après tu a fais une erreur de syntaxe en mettant un if dans un echo donc voici ton code corrigé:
<?php
       
if ($row_rs_fiche_etab['type_etab'] == 'camping') {
// si ta var = camping on passe à ce qui a en dessous

echo 'etc...<input name="icone_hand" type="checkbox" id="icone_hand" value="oui"';

if ($row_rs_fiche_etab['icone_hand'] == "oui") {
// si ta var = oui c'est fini on passe pas par le else

echo "checked />";

}else{
// si ta var ne vaut pas ok on ferme l'input

echo '/>';

} // fin second if

echo 'etc...';

} // fin premier if
?>
Voila :D
Le PHP c'est bien, surtout quand ça marche ;) mon site
Hébergement gratuit et sans pub => Image

Mammouth du PHP | 991 Messages

28 févr. 2007, 16:38

je me suis fait avoir sur le fil du rasoir ...
et mon cher tu ne peux pas inserer un if avec un concanation ...
DevOps, Symfony4, Hoa

Eléphant du PHP | 186 Messages

28 févr. 2007, 17:30

Merci à vous deux Polo et Thehawk pour vos réponses.
J'ai réussi à faire ce que je voulais.
A tout hasard, vous ne sauriez pas comment je pourrais traduire en php le fait de vérifier si une table existe.
Cad que:
si (table_truc existe)
alors { faire requete }
sinon {faire requete}
Merci encore.

ViPHP
ViPHP | 4674 Messages

28 févr. 2007, 18:03

Bonjour :)

J'ai envie de dire : oulala, mais mince !
Et les conditions ternaires vous en faites quoi ?

On a plusieurs types de conditions, je vous laisse lire le magnifique manuel de PHP (qui apparement, est de moins en moins lu ...) : Les expressions : Exemple 14.2. L'opérateur conditionnel ternaire.

Donc tu pourrais avoir au final quelque chose de beaucoup plus léger :
<?php

if($row_rs_fiche_etab['type_etab'] == 'camping')
    echo '<input type="icone_hand" type="checkbox" id="icone_hand" value="value"'.($row_rs_fiche_etab['icone_hand'] == 'oui' ? ' checked' : '').' />';

?>
Attention à la gestion des espaces (j'édite parce que j'avais fais la faute :p).

D'ailleurs, c'est peut-être préférable de mettre "true" ou "false" dans tes champs de table, plutôt que "oui" et "non".


Concernant ta seconde question, tu as plusieurs possibilités.
  • Soit tu fais une requête vers la table, et tu regardes si tu as une erreur ou pas. Mais c'est super crado, et je te le déconseille vivement ^^ ;
    Ou, tu utilises la fonction mysql_list_tables();, et tu regardes si le tableau de retour contient ta table (avec array_key_exists par exemple) ;
    Ou alors, tu utilises l'alternative de mysql_list_tables, à savoir, tu exécutes la requête SQL suivante : SHOW TABLES FROM <db>, avec un mysql_query.
Personnellement, je préfère mysql_list_tables();, car elle me retourne directement un tableau, je n'ai pas besoin de faire de manipulation avec mysql_fetch_* (même si elle est dépréciée : je vous rapporte de nouveau au manuel).

En espérant t'avoir aidé.


Bonne journée :)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 216 Messages

28 févr. 2007, 20:37

Oui, en effet ^^
bien joué HyWan
j'avais complètement oublier les "conditions ternaires", Merci pour ce rafraichissement de mémoire :D
Le PHP c'est bien, surtout quand ça marche ;) mon site
Hébergement gratuit et sans pub => Image

ViPHP
ViPHP | 4674 Messages

01 mars 2007, 15:37

Pas de quoi :P

Mais tu remarqueras que c'est vachement plus pratique comme ça !


Bonne journée à tous :)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 186 Messages

01 mars 2007, 16:08

Suite à vos précieux conseils, j'ai bien essayer les différentes méthodes proposées avec SHOW TABLES pour générer toutes les tables présentes dans ma base de données et array key exists pour vérifier si la table que j'appelait dans ma requete existait dans ma base de données mais rien y fait.
Je mettrais ça sur le compte de l'inexpérience si vous me le permettez.
A l'heure actuelle, voici à quoi j'en suis arrivé pour que ca marche. Comme vous le constaterez, j'ai écrit en dur mes tables présentes dans ma base de données mais dans l'idéal, il vaudrait mieux que ca se fasse tout seul mais j'ai pas pu faire mieux.
$query_rs_type = "SELECT type_etab, etab_id FROM tbl_etab WHERE etab_id = '".$_GET['num_fiche']."'";
$rs_type = mysql_query($query_rs_type);
$row_rs_type = mysql_fetch_assoc($rs_type);

$table = array (
    "tbl_camping" => "1" ,
    "tbl_hotel" => "2",
	"tbl_gite" => "3",
	"tbl_auberge" => "4",
	"tbl_chambrehote" => "5",);


if (array_key_exists("tbl_".$row_rs_type['type_etab'], $table)) {
$query_rs_fiche_etab = "SELECT * FROM tbl_etab, tbl_".$row_rs_type['type_etab']." WHERE tbl_etab.etab_id = tbl_".$row_rs_type['type_etab'].".id_etab AND etab_id = '".$_GET['num_fiche']."'";
} else {
$query_rs_fiche_etab = "SELECT * FROM tbl_etab WHERE etab_id = '".$_GET['num_fiche']."'";
}
$rs_fiche_etab = mysql_query($query_rs_fiche_etab) or die(mysql_error());
$row_rs_fiche_etab = mysql_fetch_assoc($rs_fiche_etab);
Donc si quelqu'un se sent assez charitable pour me dire comment coupler array key exists avec SHOW TABLES, je lui en serait très reconnaissant.

Merci par avance d'aider un débutant à parfaire son éducation en php!!

ViPHP
ViPHP | 4674 Messages

01 mars 2007, 19:39

Heya :)

Si tu avais fais gaffe à mes liens, tu verrais que dans le manuel, tu as un script tout fait qui immite le comportement de mysql_list_tables avec la requête SHOW TABLE FROM <db> ... tu as lu mes liens ? :o

Voici le lien avec l'ancre, tu devrais arrivé directement dessus :
PHP : mysql_list_tables : Exemple d'alternative à mysql_list_tables() (1523).

Bonne soirée :)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).