Aide pour l’automatisation d’une page

Résolu/Fermé
colas2 Messages postés 6 Date d'inscription jeudi 19 avril 2012 Statut Membre Dernière intervention 28 février 2017 - 21 févr. 2017 à 16:37
colas2 Messages postés 6 Date d'inscription jeudi 19 avril 2012 Statut Membre Dernière intervention 28 février 2017 - 28 févr. 2017 à 12:19
Bonjour, bonjour le forum,

Depuis bientôt 4 mois je me suis mis (les WE) à construire un site internet avec PHP Mysql et PDO.
C’est plutôt pas mal (mais très basique).
Entre autres j’ai codé une double page qui me donne satisfaction, mais qui va me demander un travail colossal mécanique si je ne peux pas l’automatiser.
D’où ma demande d’aide détaillée (je suis encore très débutant).
Mes 2 pages concernent un pays (et il y en a 180 sur la planète… ce qui fait que je devrais copier la page et la modifier 180 fois pour terminer !)
Donc, ma page source est un tableau codé avec php Mysql dans lequel figure un (180 fois) lien (vers la page de destination pour chaque pays) en dernière colonne :
$requete = $connexion->prepare("SELECT nom_pays, code_pays, autres_champs FROM paystable");
	
	$requete->execute();
    $resultat = $requete->fetchAll();
	foreach ($resultat as $row) {
//etc.
//lien dans la dernière colonne:
</td><td><a href="liste-pays-' . $row[" rel="nofollow noopener noreferrer" target="_blank"code_pays"] . '.php" ">  Lien vers ' . $row["nom_pays"] . '</a></td></tr>';	

Et dans la page du pays cible (ici exemple de Japon)
$requete = $connexion->prepare("SELECT nom_pays, code_pays, autres_champs FROM paystable WHERE code_pays is not null and code_pays = 'Japon' ORDER BY nom_pays");
	
	$requete->execute();
    $resultat2 = $requete->fetchAll();
		
	foreach  ($resultat2 as $row) {
//alors suit les echos du tableau extrayant les données pour le Japon


Mon souhait : automatiser mon lien dans le fichier source (si nécessaire) et automatiser la requête dans le fichier cible pour chacun des code_pays de la table paystable
J’ai un peu défriché via mes livres et aussi sur le net mais cela dépasse mes compétences actuelles et je bloque.
Dans le fichier source il faudrait éventuellement qqch dans le genre
echo '  <a href="liste-pays.php?Code_P=' . $row[" rel="nofollow noopener noreferrer" target="_blank"code_pays"] .'"><i>' . $row["nom_pays"]. '</i></a>  |  ';


Dans le fichier cible (dur, dur) il faudrait ajouter qqch dans le genre comme ci-après (à la place du pays fixé dans la requête par le code WHERE code_pays is not null and code_pays = 'Japon') en $_POST ou ( ?) en $_GET ?
WHERE code_pays is not null and name=" . intval($_GET['code_pays']) . "


Pouvez-vous m’aider svp ?

C2C



A voir également:

5 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
21 févr. 2017 à 16:58
Bonjour

<?php


$sql = "SELECT nom_pays, code_pays, autres_champs FROM paystable";

try{
  $requete = $connexion->prepare($sql);
  $requete->execute();
  $resultat = $requete->fetchAll();
}catch(Exception $e){
  // en cas d'erreur dans la requete
  echo " Erreur dans la requete " .$e->getMessage();
  echo " SQL : ".$sql;
}

if(!empty($resultat)){		
	foreach ($resultat as $row) {
    echo '</td><td><a href="liste-pays.php?codepays='.$row[" rel="nofollow noopener noreferrer" target="_blank"code_pays"].'>  Lien vers ' . $row["nom_pays"] . '</a></td></tr>';
  }
}  
  


Et dans le fichier liste-pays.php :
  
$codepays = !empty($_GET['codepays']) ? intval($_GET['codepays']) : NULL;

  $sql = "SELECT nom_pays, code_pays, autres_champs 
          FROM paystable 
          WHERE code_pays = :codepays 
          ORDER BY nom_pays";
  $datas = array(':codepays'=>$codepays);
	try{
  $requete = $connexion->prepare($sql);
  $requete->execute($datas);
  $resultat = $requete->fetchAll();
}catch(Exception $e){
  // en cas d'erreur dans la requete
  echo " Erreur dans la requete " .$e->getMessage();
  echo " SQL : ".$sql;
}

if(!empty($resultat)){	
	foreach  ($resultat as $row) {   
    //
    // 
  }
}

0
colas2 Messages postés 6 Date d'inscription jeudi 19 avril 2012 Statut Membre Dernière intervention 28 février 2017
Modifié par colas2 le 23/02/2017 à 13:21
Bonjour,

Tout d’abord mercis pour la réponse rapide et détaillée.
Elle m’a aussi fait découvrir cette option de sécurité contre hameçonnage sql avec rel="nofollow noopener noreferrer", donc j’ai appris beacoup.
Cela ne marche pas complètement mais on doit être tout proche de la soluce.
Sur le fichier de départ (liens), j’avais des messages d’erreur liés à rel="nofollow noopener noreferrer", mais en regardant le sujet sur le web j’ai pu régler le souci.
Il fallait remplacer :
echo '</td><td><a href="liste-pays.php?codepays='.$row[" rel="nofollow noopener noreferrer" target="_blank" code_pays"].'>  Lien vers ' . $row["nom_pays"] . '</a></td></tr>';

par
echo '</td><td><a href="liste-pays.php?codepays=' . $row[" rel="nofollow noopener noreferrer" target="_blank"codepays"] . ' ' . ' ' . '" ">   Lien vers ' . $row["nom_pays"] . '</a></td></tr>';


SUPER… et là je fais une digression, j’ai trouvé l’idée bonne ce rel="nofollow noopener noreferrer" et je l’ai appliquée à une autre page avec des liens et c’est bon, mais dans l’adresse d’URL du fichier cible (sur PHPMyadmin), j’ai en plus =rel (à la fin de l’URL), comme ci-après :
http://localhost/dossier/xxxx.php?codel=552rel%3D (sachant que 552 correspond à la valeur ‘integer’ du lien choisi)
avec le code php suivant
echo '  <a href="xxxx.php?codel=' . $row[" rel="nofollow noopener noreferrer" target="_blank"codel"] .' ' . ' ' . ' ' . '<i>' . $row["champ2"]. '</i></a>  |  ';

La protection fonctionne-t-elle encore ?
Comment enlever ce ‘rel=’ en fin d’URL (je ne l’ai pas avec ma liste-pays)
Fin de la digression.

Sur le fichier cible, j’ai un problème avec la requête, car dans localhost (de Wampserver), le fichier s‘affiche pour tous les textes html mais la requête ne produit rien (le tableau est vide, hormis les titres de colonnes, sans aucune erreur signalée).
Donc ce que j’ai fait c’est tester ta requête sur phpmyadmin avec sql
$sql = "SELECT nom_pays, code_pays, autres_champs 
          FROM paystable 
          WHERE code_pays = :codepays 
          ORDER BY nom_pays";

et là j’ai une erreur :
#1064 - Erreur de syntaxe près de ':codepays ORDER BY nom_pays
LIMIT 0, 25' Ã la ligne 1

J’ai essayé d’enlever le ‘:’ pour ':codepays (dans la requête, puis dans le code php pour $datas), là il n’y a plus d’erreur, mais il ne fait plus le job recherché (je me suis aussi demandé s’il ne fallait pas en plus un $requete->bindParam etc. PDO ::etc.… et là j’ai atteint mes limites… et je reviens vers toi.
Mercis encore !
Cordialement,
C2C
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
23 févr. 2017 à 13:22
Testes la requête DIRECTEMENT dans la BDD (via phpmyadmin par exemple)
Bien entendu.. tu remplaceras le :codepays par un vrai code pays ( entre quotes si c'est du texte )
0
colas2 Messages postés 6 Date d'inscription jeudi 19 avril 2012 Statut Membre Dernière intervention 28 février 2017
23 févr. 2017 à 13:26
Bonjour,
J'ai fait une erreur dans le code corrigé pour rel="no follow, etc.
J'ai fait modifier puis valider, mais le système ne veut pas prendre en compte la correction (j'ai essayé 2 fois)
Excuse- moi, c'est:
echo '</td><td><a href="liste-pays.php?codepays=' . $row[" rel="nofollow noopener noreferrer" target="_blank"codepays"] . ' ' . ' ' . '" ">   Lien vers ' . $row["nom_pays"] . '</a></td></tr>';


Et pareil pour codel
echo ' <a href="xxxx.php?codel=' . $row[" rel="nofollow noopener noreferrer" target="_blank"codel"] . ' . ' ' . '<i>' . $row["champ2"]. '</i></a> | ';
C2C
0
colas2 Messages postés 6 Date d'inscription jeudi 19 avril 2012 Statut Membre Dernière intervention 28 février 2017
23 févr. 2017 à 14:30
Bonjour,
Ah la faute...
Tu écris: Bien entendu.. tu remplaceras le :codepays par un vrai code pays... Mes excuses de débutant.

Je l'ai fait dans PHPMyAdmin commande sql et cette fois cela marche pour 'Japon'
Pas de surprise pour moi car cela marchait avant quand j'avais fait manuellement 10 pays.

Donc là que faire?

Merci !

C2C
PS: alors là je suis médusé!!!
J'ai fait un additif pour la correction et en le lisant je m'aperçois que le système l'a corrigé automatiquement!!! (donc cela avait dû être pareil pour toi dans ton 1er post)
0
colas2 Messages postés 6 Date d'inscription jeudi 19 avril 2012 Statut Membre Dernière intervention 28 février 2017
24 févr. 2017 à 12:53
Bonjour,

Sans réponse à mon dernier message, j’ai repeigné 10 fois tout le code avec mon adaptation.
Je ne comprend pas.
La seule ambigüité possible c’est l’utilisation de codepays et code_pays (termes très proches).
Donc j’ai essayé de remplacer partout codepays par codel dans le code Jordane, mais cela ne change rien.
J’ai toujours :
Ma requête qui marche dans phpmyadmin de wampserver pour Japon (et d’autres pays)
Mon URL dans localhost de wampserver qui affiche pour la page Japon
http://localhost/dossier/liste-pays.php?codel=Japon
Ma page Japon dans localhost de wampserver qui n’affiche pas les résultats de la requête (tout s’affiche, menu haut, gauche, droite, et debut du texte pour la partie center, titre des colonnes du tableau puis plus rien, et pas de footer)

Quelqu’un peut-il solutionner ce bins ?
Merci d’avance

C2C
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
colas2 Messages postés 6 Date d'inscription jeudi 19 avril 2012 Statut Membre Dernière intervention 28 février 2017
28 févr. 2017 à 12:19
Bonjour,

C'est résolu!

Il y avait un souci de communication dans mes débuts de code approximatifs qui ont influencé Jordane dans la mauvaise direction (ma pomme!).
Le code de Jordane est bon : il a simplement fallu que je le modifie à mon cas.

Merci

C2C
0